working in it

History and transcripts

History is one search and one resume across every supported harness. It reads the native transcript directories each vendor's CLI already writes, and never moves, rewrites, or deletes them.

#

What it gives you

  • One search over every conversation, in every Project, from every harness, rather than one search per vendor.
  • One resume. Picking a past conversation restarts it in the harness it belongs to, through the same path a scheduled resume uses.
  • Cross-vendor review. Reading what a Codex run did and what a Claude run did without learning two transcript formats.
  • Project scope. A search runs across everything by default, or inside one Project.
#

Transcripts are read, never owned

Native transcript directories are reconciled at startup: swe-mux indexes what is there, and the files stay exactly where the vendor's CLI put them. Uninstalling swe-mux leaves every conversation intact, because none of them were ever its to hold.

#

A transcript is a graph, not a log

A Claude transcript is an append-only branching structure rather than a flat list. A retry, a rewind, or an edited message leaves the abandoned branch in the file. swe-mux linearizes it, which means two things worth knowing:

  • The indexing projection drops the branches the conversation left, so a search does not return three variants of the same exchange.
  • The human reader marks them rather than hiding them, so you can see that a retry happened.

Neither of them reconstructs the live branch by walking the parent chain, because a parallel tool batch parents each result to its own call - a chain walk would drop every result but the last, and would do it silently.

#

The Transcript tab

The drawer's Transcript tab is the live version of the same reading, pinned to the focused session. It is what you read when you want to know what the agent actually said rather than what is currently on screen, and it survives the terminal being cleared.

#

When two entries share a conversation

A conversation that was resumed under two different session identities can end up as two history rows. That is reported and repairable rather than left to accumulate:

mux history-duplicates            # report what would change
mux history-duplicates repair     # merge each conversation's rows
#

Usage is reconstructed from these

Agent spend is not metered by swe-mux, because a subscription CLI does not report a price per call. It is reconstructed from the transcripts, which is why the usage view labels it as an estimate. Accounts, usage, and budgets explains the three separate pots and why they are never summed.