AI Chat
A persistent side panel that gives your AI model direct access to your workspace. Read notes, create tasks, move cards, generate PRDs — all through natural conversation.
Opening the chat panel
Press ⌘/ on macOS or Ctrl+/ on Windows and Linux. The chat panel slides open on the right side of the window. It stays open across navigation — switching between Notes and Board views doesn't close it.
How the agentic loop works
When you send a message, Cairn sends your message and the conversation history to your configured AI endpoint. The model may respond with plain text, or it may issue tool calls — requests to perform actions inside your workspace.
Cairn executes each tool call, feeds the result back to the model, and repeats until the model produces a final text response with no pending tool calls. This is the agentic loop: the model can chain multiple actions to complete complex requests without needing you to prompt it at each step.
Example: "Move all urgent tasks to In Progress" — the model calls search_tasks to find urgent cards, then calls update_task_status for each one, then responds with a summary.
Live tool call activity feed
Every tool call is shown in real time in the chat panel as it executes. You see:
- The tool name and parameters being passed
- A live spinner while the call is running
- A success or error indicator when it completes
This makes the AI's behaviour transparent — you always know what it did and why.
Streaming responses
The AI streams its reply word-by-word as it's generated — you see the response building in real time rather than waiting for the full reply. A live cursor shows while tokens arrive. Tool calls still run before streaming begins.
Thread history
A History button in the chat header lists up to 15 recent threads per project, each titled from its first message. Select any thread to resume it. Threads can be renamed, deleted individually, or cleared in bulk. Deleting the active thread starts a fresh one automatically.
Supported endpoints
Any OpenAI-compatible API endpoint works. Configure your endpoint in Settings → AI & Chat.
| Provider | Endpoint URL | API key required |
|---|---|---|
| OpenAI | https://api.openai.com |
Yes |
| Groq | https://api.groq.com/openai |
Yes |
| Together AI | https://api.together.xyz |
Yes |
| Ollama (local) | http://localhost:11434 |
No |
| LM Studio (local) | http://localhost:1234 |
No |
| Any compatible proxy | Your proxy URL | Depends on proxy |
Anthropic's API is not natively OpenAI-compatible. Use a compatible proxy (e.g. LiteLLM) to connect Claude models to Cairn.
For best tool-calling performance, use a model with strong function-calling support. Frontier models from OpenAI or Anthropic (via proxy) work well, as do locally fine-tuned coding models via Ollama.
What the AI can do
The AI has access to 42 tools inside the chat panel. Tools marked * are chat-only and not available via MCP.
| Tool | Description |
|---|---|
get_active_context * | Returns the active workspace and currently open project with column IDs |
get_cairn_context | Full orientation: all workspaces, projects, column IDs, tool list, conventions |
get_project_context_pack | Single-call bundle: project metadata + pinned notes + open tasks + recent activity |
resolve_project | Find a project by name (fuzzy) and return its ID and column IDs |
get_project_summary | Column breakdown, card counts, pinned notes, recent activity |
list_recent_activity | Recently created or updated notes and tasks |
search_notes | Full-text search across notes |
get_note | Full markdown content, linked IDs, and metadata of a note by ID |
list_notes | List all notes in a project |
create_note | Create a markdown note |
import_note_from_file | Import a local file as a note |
ensure_note | Idempotent create-or-update by title — prevents duplicate notes |
append_to_note | Append content to a note without re-sending the full body |
patch_note | Surgically replace a string inside a note |
update_note | Update a note's title, content, or pinned state |
move_note | Move a note to a different project |
delete_note | Permanently delete a note |
search_tasks | Full-text search across task cards |
get_task | Full detail of a task card including linked notes |
list_tasks | List all tasks grouped by column |
create_task | Create a task card in a column |
update_task | Update a task's title, description, priority, due date, or column |
update_task_status | Move a single task to a different column |
bulk_update_task_status | Move multiple tasks to the same column in one call |
delete_task | Permanently delete a task card |
link_note_to_task | Bidirectionally link a note and a task card |
create_dashboard | Create a live HTML dashboard in a project |
update_dashboard | Update an existing dashboard's title or HTML |
get_idea_flow | Full canvas graph — all nodes and edges — with note and task content resolved inline |
create_idea_flow_node | Add a node to the Idea Flow canvas |
update_idea_flow_node | Update a node's data or position |
delete_idea_flow_node | Remove a node and all its connected edges |
create_idea_flow_edge | Connect two nodes with an optional label |
delete_idea_flow_edge | Remove a connection between two nodes |
layout_idea_flow | Auto-arrange all nodes in the canvas |
get_knowledge_graph | Full workspace relationship graph; scope by project, node type, or edge type |
get_neighbors | N-hop BFS traversal from any node (depth 1–3) |
create_project | Create a project with default board columns |
update_project | Update a project's name, description, status, or priority |
delete_project | Permanently delete a project and all its contents |
generate_prd * | Generate a structured PRD note from a plain-language description |
spawn_tasks_from_note * | Read a PRD note and create structured task cards on the board |
Message controls
- Stop generation — a Stop button appears while the AI is responding. The abort is checked between tool-call rounds, not mid-execution. Any tool calls already completed remain in effect — Cairn does not roll back actions taken before you stopped.
- Copy — hover any message to reveal a Copy button. Copies the raw markdown content.
- Retry — hover any of your own messages to reveal a Retry button. Re-sends that message, discarding everything that followed it in the thread.
Context & conversation history
The chat panel maintains the full conversation history for the current thread. Threads persist across app restarts — you can close and reopen Cairn and resume any thread from the history list. If you want the AI to have specific context beyond the current thread, paste it into the chat or ask it to read a note.
Keyboard shortcuts
- ⌘/ / Ctrl+/ — toggle chat panel
- Enter — send message
- Shift+Enter — insert newline in message
- Esc — stop generation or close chat panel