--- title: Conversations description: Session transcripts across every runtime and chat channel — thinking split from replies, per-turn tokens and cost, tool timelines, compactions and sub-agents. keywords: agent transcript viewer, session replay, agent conversation history, tool timeline eyebrow: 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](/docs/runtimes/coverage/). ## 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. → [Chat channels](/docs/runtimes/channels/) ## Searching Full-text search over session titles and evaluation reasons, filterable by model, status and time window: ```bash 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](/docs/data/export/). ## 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. ```bash curl -s 'localhost:8900/api/local/transcript/?limit=500' | jq '.rows | length' ``` ## The API ```bash # sessions list curl -s 'localhost:8900/api/local/sessions?limit=50' | jq '.rows' # one session's events curl -s 'localhost:8900/api/local/transcript/' | 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 ```