Dashboard
Conversations#
Every session, from every runtime and every chat channel, as something you can actually read.
The transcript view#
Messages render as a conversation, with a few things most raw transcripts do not give you:
Thinking separated from replies. Reasoning blocks are shown distinctly from what the agent actually said. Reading them merged is how people conclude an agent "said something strange" when it was thinking out loud.
Per-turn tokens and cost. Each turn carries its own numbers, so the expensive turn in a long session is findable rather than inferred.
Tool calls inline. Arguments and results in place, in order, with failures marked. A tool that returned an error and was then ignored is visible as the adjacent pair it actually was.
Compaction markers. When a runtime compacted context, the transcript says so and shows what was reclaimed. A session that reads as if the agent forgot something usually did exactly that, at a marker you can point to.
Sub-agent trees. Where a runtime persists delegation, children appear as a tree under the parent with their own cost — not smeared into the parent's total. The five different ways runtimes record this are covered in What each runtime exposes.
Channels#
Chat-channel conversations sit alongside terminal sessions. A Telegram thread and a Claude Code run are both sessions, both have transcripts, and both carry cost. The channel filter narrows to one adapter; the thread list groups by conversation.
Searching#
Full-text search over session titles and evaluation reasons, filterable by model, status and time window:
curl -s 'localhost:8900/api/local/search?q=migration&limit=20' | jq '.rows'
curl -s 'localhost:8900/api/local/search?q=timeout&status=error' | jq '.rows'Exports#
A session can be exported for sharing or archiving — the transcript, the tool timeline, and the cost breakdown. See Exports.
Paging#
Long sessions page rather than loading whole. This matters more than it sounds: a session with tens of thousands of events would otherwise be a several-hundred megabyte response. The transcript endpoint takes a limit and the UI pulls progressively.
curl -s 'localhost:8900/api/local/transcript/<sid>?limit=500' | jq '.rows | length'The API#
# sessions list
curl -s 'localhost:8900/api/local/sessions?limit=50' | jq '.rows'
# one session's events
curl -s 'localhost:8900/api/local/transcript/<sid>' | jq '.rows'
# materialised per-session summary (title, status, totals, stuck flag)
curl -s 'localhost:8900/api/local/query' -X POST \
-H 'content-type: application/json' \
-d '{"shape":"rollup_sessions","args":{"runtime":"claude_code","limit":20}}' | jq