Transcripts
Transcripts
Every session mechabedo drives is archived in one normalized format, whichever harness produced it, and whether it was started here or in a terminal of your own.
The reader over that archive is the Logbook. This page is what gets into it, and from where.
Imported, not transcribed
Every harness keeps a history of its own, so mechabedo reads that history rather than trying to watch a session happen.
Drawing the diagram…
Two of those arrows are exceptions, and both for the same reason: there is no history on disk to walk. The chat's conversations are database rows, so the browser hands a finished one over. mechabedo's own sessions - orchestrator runs, Refinery preparing passes, workflow records - write themselves.
When an import runs
| Trigger | Covers |
|---|---|
| A sync you asked for, from the Logbook or the command line | Everything on the machine, whoever drove it |
| A session going quiet | The harness that session used, scoped to it |
That second one is what makes a harness you drove by hand appear. A harness under a terminal emits a redraw stream rather than messages, and transcribing cursor movement is not worth costing - so it is imported like everything else the moment it stops.
What this deliberately is not is a periodic sweep with nothing behind it.
Re-importing costs nothing
A transcript's id is <harness>:<native-session-id>, so a re-import lands on the same row and replaces it wholesale.
A sync pass lists what exists with a cheap fingerprint - a file's size and mtime, or a session's message count and last update - compares that against what is stored, and parses only the sessions that moved. Re-running a sync over an unchanged machine costs a directory walk.
One class of session is dropped rather than archived
A Claude Code run whose working directory is under a temp root, which is scratch work by construction. The test is a path prefix and nothing else: a rule that deletes has to be narrower than a rule that hides.
What a turn carries
The normalized model is the same shape the workbench renders, which is why a transcript reads the same way a live session does:
- The prompt, and the reply as ordered parts: text, reasoning, tool calls with their inputs and results
- The plan, folded the way the session showed it
- Usage: fresh input, cache read, cache write, output, and the model that produced them
- How the turn ended, where the harness records it, and what the session reached for: calls per tool, with the ones that came back an error
- Feedback, as a table of its own rather than as a message part, so an import never overwrites what you thought of it
A token figure the agent did not report is estimated locally and marked with a leading tilde. Nothing estimated reaches the meter.
Two things are called a turn. One is a prompt you typed. The other is a turn the agent itself ended, and one prompt sets off as many of those as the agent needs - a session of four prompts can be six agent turns and three hundred trips to the model. Claude Code, Codex and OpenCode each record which is which, so the Logbook's numbers can say both; the harnesses that record neither show no agent turn count rather than a zero.
A session mechabedo ran is also timed. How long each turn took, how long until it said anything, and how it really ended are readings this app takes while the session runs and no harness writes down, so the session's Statistics tab shows them under their own heading. An imported session has none.
Sessions mechabedo never started
A claude you launched in your own terminal is found: the process table is scanned and joined with the token meter and the archive, so the session shows its rate on Home and its rows in the Logbook without ever having been launched from this app.
Read by agents
The archive is offered to a running session as a read-only tool surface, so an agent can look up what an earlier session decided rather than guessing. Searching it, reading one session, and finding the sessions that touched a file are one tool call each.
That is the reason it exists in this shape: not a log for you to scroll, a corpus your agents can query.
Workflow runs
A workflow run registers a mechabedo session of its own, so the interview, the briefs it wrote and the reports it read are archived like any other session. The run's own bookkeeping is not: it lives in memory, and a restart drops it.