Skip to main content
Every reply streams live from your local agent — text, reasoning, tool cards, and usage all arrive as typed events over 127.0.0.1.

Quick Start

1

Send your first message

Type in the composer and press Enter. The reply streams in as the agent produces it.
2

Watch the events render

Text, a live reasoning panel, tool cards, and a usage line all appear in the same turn as they stream.
3

Act on the turn

Hover a turn to Copy, Regenerate, Fork, or Delete it.

How It Works

The engine sends Server-Sent Events on POST /chat. Each event carries a msg_id so the client can address a specific message rather than assuming the last one is live. Every event the stream emits (from engine/server.py):
A stream that yields nothing is reported as an empty error, not a blank answer — silence is treated as a failure.

Capabilities

When the model emits reasoning, a live “Thinking… Xs” panel shows it and collapses to “Thought for Xs” when the turn ends. Toggle it with Show reasoning and Collapse reasoning by default in Settings.
A tool_call opens a card with a running dot; tool_drafting previews the arguments; tool_result fills the result pane. Long output is tail-truncated with Show all and Copy output.
Drag-drop or use the + button. Chips show each file’s size. Limits: 2 MB max, up to 5 files, each clipped to 100 kB of text before it is sent. Long pastes condense into an attachment instead of filling the context.
Stop cancels a live run — the client is told explicitly with a cancelled event rather than inferring it from silence. Per-turn hover actions cover Copy, Regenerate, Fork (POST /fork/{cid}/{idx}), and Delete message (DELETE /messages/{cid}/{idx}).

Keyboard Shortcuts


Approvals & Safety

How tool calls are approved before they run

Conversations & Search

Fork, delete, projects, and ⌘K search