The working session
The goal in one line: you always know what your AI is doing, and nothing it does makes you wait.
The rail tells the story
Every agent turn, running or reopened, shows the AI's words and between them the steps it took, in the order they happened. A finished turn no longer folds behind a button.
Each step is named after what it is. A wait says what it waits for ("Waiting for generate-articles.sh"), a stop names the task it stopped, a helper is "Started a helper: <its task>", a web search carries its query and a web page its address, a tool from Obsidian or Logseq says so, a skill names itself, and a command the AI described is labeled by that description. Finished steps read in the past tense ("Read package.json").
Each row carries one grey glyph for what it is - a file, a folder, a search, a pencil, a terminal, the web, a helper, an hourglass, a plug for a tool, a sparkle for a skill - and its time once it has run past ten seconds. Your tools carry their own marks: Obsidian, Logseq and Blender show their logos, monochrome like every other glyph. Color means status only: a soft ring breathes around a running step, and a failed one turns red, says how long it ran, and opens itself with the error text. A command that exits with an error is a red step with its last lines and the exit code as the reason.
Thoughts are rows - "Thought for 12 s", opening to the text - and a chain of tiny thoughts reads as one row. The plan shrinks to the current item with a "3 of 7" count; click for the rest. A command row copies its command, a file row opens the file, and a failed row offers Try again.
Simple or Detailed
A Simple | Detailed control sits in the rail header. Simple folds steps of a kind into one row ("Read 4 files and searched twice", "Ran 3 commands"), folds a wait into the step it waits for and keeps thoughts out of the way. Detailed opens every step by itself, and the rail follows its newest row. Projects open Detailed by default; change it on any rail, in Settings, or with Ctrl+O. Esc stops a running turn. Chat with tools has its own shape and no such control.
What the header says
While a turn runs, the header says who is working where, and the line under the rail says what is happening now, how long, and how much. While the model reads the project in, it says "Taking in the project so far · 60%". The header of a finished turn sums it up: "Read 4 files, ran 3 commands, edited 2 files · 6 m 20 s · 4.7k tokens", with a "2 files changed +52 -9" chip that opens every diff.
The folder chip in the app header says what the project is doing: starting, running, waiting for you, done.
Background tasks and helpers
A command the AI runs in the background keeps running on its own row, "still running", with its latest line and its clock, until the agent ends it; a wait on it is named after it. A task that outlives the turn stays as its own row until it ends, and the last line it printed is kept in the record, so a reopened turn still says it. A helper's own steps nest under its row, its progress shows as the row's line, a wait on it reads "Waiting for the helper", and its text never lands in the AI's reply.
A running task or helper has a Stop button. A stopped task reads "Stopped", not failed; a task that fails ends red with its exit code.
The permission card
When Auto stops at a step it will not run on its own, the question comes to you as a card above the input field, where you are - no scrolling or clicking to find it - and the rail keeps your decision as a one-line receipt. See Permissions and approvals.
Fast to the first step
The coding model loads in the background the moment a project opens, tools the AI never used no longer ride every call, the embedding model warms before your first question, and the field clears the instant you send. Every local session gets a reading room of at least 32k tokens and learns the served size from the engine itself, so it condenses its notes only when it must. When a tools session warns that the model's room is small, it says why: a reading room pinned in Fine-tune is named as the cause, with where to change it; a machine that cannot afford more is told the other way round - a bigger-window model, or fewer tools on the AI.
Say something while it works
Type and send while the agent is working and your message reaches it at its next step, without canceling the work in progress. It shows in the conversation where you sent it and the work carries on below.
When a small model struggles
On an AI kept offline, a turn with two or more steps that ended red, or a tools turn that never got a tool call to work, says so once per session in plain words: tasks like this need more than the models this computer can run. Without a plan, the note says online models do them in one go, that they are an optional paid service, and that everything offline stays free, with a link to the Online Models page. With a plan, one button sets the AI to Auto - Online and Offline and sends the message again. An AI pinned to a smaller model is told which model on this computer does better. Never on a fault of the app's own, and never when Online and Offline was already on.
What a finished turn carries
- The check outcome. If the project has a check command, the turn says "Checks passed (npm run typecheck)" or lists the errors that remain after the agent's two rounds of fixes.
- Undo this turn's changes. Under the steps of the last finished turn that changed files - every edit put back, created files removed, deleted files restored, and the undo written into your records.
- Why a picture was not looked at. When the model could not see an image, the rail says what happened instead - a line that stays readable after the steps fold.
- More of the truth in the record. Each step's tool name, server, start and end times, the last line a background task printed, and why a failed step failed. When a very long turn has to be trimmed, the AI's spoken words are kept; only the steps in the middle go.
A word when it ends
A project turn that ran longer than half a minute and ends while you are in another window sends a desktop notification: the AI's name and what it did, never the reply. Off in Settings.
Nothing holds up your turn
Remembering something for the project happens in the background. Project memory is kept ready and updated in place, so reading it never delays the agent, and reading the project's own notes does not ask permission.
Leaving mid-turn
Leaving the chat while your AI is mid-turn asks first - a turn that is abandoned loses its answer, and the app would rather say so than lose it quietly.
Waiting on the world
A silent online call is named for what it is - waiting on the provider, or waiting on your server - and an offline-only AI's web search is refused with a word, not a silent detour.
Tools turns in chat
A tools turn in chat runs on the same machinery, in its own shape. See Tools.
Opening a project conversation
It lands on its last message, and its history is whole: every step it took is there to reopen, and a conclusion spoken before silent steps shows as the answer even for conversations recorded before this behavior existed. Switching AI with a project open reopens the session for the new AI.