2026-10-11 18:00 UTC

Txcript's maintainers claim their released Rust, JavaScript, and CLI tooling converts coding-agent transcripts into resumable native sessions across harnesses, reducing switching friction while preserving only history that destination formats support.

state: watchingheat: lowuncertainty: mediumconvergesscott: mediumagent-harnesses session-portability coding-agentsskillsynchq

What is this?

Txcript is coding-agent transcript conversion tooling associated with the skillsynchq/txcript repository; its Lib.rs listing shows version 0.3.0 dated July 7, 2026, and documents a Rust library, CLI, and JavaScript-accessible WASM module. The documentation describes translating native sessions through a typed common model across Claude Code, Codex, OpenCode, pi, Campfire, Cursor, and Grok CLI, with local session discovery, search, and continuation in another harness. It includes an example of saving a converted transcript as a resumable Codex session, but the supplied snippets do not independently verify cross-harness reliability or specify exactly which history and state destination formats preserve or discard.

Why it matters to Scott

Txcript’s typed cross-harness conversion converges with Scott’s Search Conversations work reconstructing Claude Code and Codex sessions, while its claimed native-session continuation offers a concrete capability to evaluate against Proposal Compiler’s session-ID-dependent recovery. The radar already tracks related tools in Teleport and session-migrate, but not this release; conversion fidelity and reliable resumption remain unverified, so this warrants integration testing rather than assuming portable transcripts preserve executable state.
dev:project.search-conversationsdev:project.proposalradar:teleport-cross-harness-session-portabilityradar:session-migrate-cross-harness-portabilityradar:concept.session-portability
queries asked of Scott's wikis
  • cross-harness session portability and switching costs
  • native agent session state versus summary handoffs
  • coding-agent harness orchestration Claude Code Codex
  • canonical transcript schemas and lossy conversion
  • agent memory transcript search and context continuity

Measured heat

now 0 pts/hpeak 0 pts/hcomments 0/hpeers p14momentum: steady3 platformsage 618h
points/hour across evidence · reading as of 2026-10-12 02:59:37.977291+11:00 · deterministic, not a model opinion

How the heat travelled

09-15 23:29 (minted)⭐ origin echo-reconstructedTxcript converts agent sessions and can continue conversations across Claude Code, Codex, OpenCode, Cursor, and other supported agents; unsu
skillsynchq on github (echo) · attributed from hn.story.49719696 · published time unknown
—
09-15 22:24first on hacker news · published · lag ?Move AI chats across harnesses: Claude Code, Codex, OpenCode, Cursor, and more
ibobev
—
09-27 11:09first on r/ClaudeAI · published · lag ?I made `ls` for agent sessions. It lets you list and switch conversations between agent harnesses (like switching from Claude Code to Codex and back)
jakecoolguy
—
09-15 22:24amplified on hacker newshn.story.49719696
ibobev
peak 2 · 0 comments · 1% of case engagement
09-16 14:25amplified on hacker newshn.story.49727534
yruzin
peak 1 · 0 comments · 1% of case engagement
09-17 16:22amplified on hacker news 👑hn.story.49743049
cat-whisperer
peak 68 · 62 comments · 97% of case engagement
09-27 11:09amplified on r/ClaudeAIreddit.post.1wrhieg
jakecoolguy
peak 1 · 2 comments · 1% of case engagement
09-15 23:21our radar first saw it · lag ?discovery anchor: hn.story.49719696—
pace: p70 vs 1032 stories at the 336h mark (now 618h old) — ahead of rails-cve-hours-to-exploitation (1.0x), behind antigravity-boost-reasoning-control (1.0x)

Evidence (5) — ⭐ canonical anchor

sourceobjectauthorscorecomments
🟧 hnMove AI chats across harnesses: Claude Code, Codex, OpenCode, Cursor, and more
Retrieved article excerpt

Open article · Retrieved 2026-09-15T23:22:15.236264+00:00

txcript

Continue your conversation in another coding agent.

English | [日本語](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.ja.md) | [简体中文](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.zh-CN.md) | [繁體中文](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.zh-TW.md) | [한국어](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.ko.md) | [Deutsch](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.de.md) | [Español](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.es.md) | [Français](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.fr.md) | [Italiano](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.it.md) | [Português (Brasil)](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.pt-BR.md) | [Русский](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.ru.md) | [मराठी](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.mr.md) | [தமிழ்](https://github.com/skillsynchq/txcript/blob/main/docs/translations/README.ta.md)

[crates.io](https://crates.io/crates/txcript)
[npm](https://www.npmjs.com/package/txcript)
[docs.rs](https://docs.rs/txcript)
[CI](https://github.com/skillsynchq/txcript/actions/workflows/ci.yml)
[License](https://github.com/skillsynchq/txcript/blob/main/LICENSE)

txcript is a library for converting agent sessions. Start a conversation in Claude Code and continue it in Codex, carrying over messages, reasoning, and tool history where the target supports them.

Build session search, viewers, and editors against one transcript model. txcript handles the agent-specific formats, with a Rust API, a JavaScript package, and a CLI.

[Try the CLI](https://github.com/skillsynchq/txcript#try-the-cli) · [Use the library](https://github.com/skillsynchq/txcript#use-the-library) · [Supported agents](https://github.com/skillsynchq/txcript#supported-agents) · [Documentation](https://github.com/skillsynchq/txcript#documentation)

[An OpenCode session continued in Claude Code using txcript](https://github.com/skillsynchq/txcript/blob/main/docs/assets/demo.gif)

## Try the CLI

Download a binary for macOS, Linux, or Windows from [Releases](https://github.com/skillsynchq/txcript/releases), or install from source with Rust 1.96 or newer:

```
cargo install --git https://github.com/skillsynchq/txcript txcript-cli --locked
```

Find a Claude Code session and continue it in Codex:

```
txcript list --from claude_code
txcript continue <session-id> --with codex
```

Use an ID from the list; an unambiguous prefix works too. txcript writes a new native session and launches Codex in the recorded working directory. The source session is kept. Have the target agent installed and signed in before continuing.

Other ways to work with your sessions:

```
txcript query "relay bug"                # search local session history
txcript view <session-id>                # read a conversation in the terminal
txcript crop <session-id>                # edit or trim history into a new copy
txcript export <session-id> --out run.json
```

Move `run.json` to another machine and continue it with `txcript continue ./run.json --with claude_code`. Bring the project files separately.

Run `txcript mcp` to let an MCP client list, search, and read past sessions. Its tools are read-only. See the [CLI reference](https://github.com/skillsynchq/txcript/blob/main/docs/usage.md#cli) for filters, message ranges, and shell integration.

## Use the library

### Rust

```
cargo add txcript
```

Convert a Claude Code transcript into Codex's native format:

```
use txcript::harness::{claude_code::ClaudeCode, codex::Codex};
use txcript::{TextCodec, convert};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let input = std::fs::read_to_string("session.jsonl")?;
    let source = ClaudeCode::from_text(&input)?;
    let target = convert::<ClaudeCode, Codex>(&source)?;
    std::fs::write("rollout.jsonl", Codex::to_text(&target)?)?;
    Ok(())
}
```

Use `Store` implementations to discover, load, and save sessions in an agent's own storage. Convert to `Transcript<Common>` to search, crop, or render conversations through the same API across agents. See the [Rust API](https://docs.rs/txcript) and [examples](https://github.com/skillsynchq/txcript/blob/main/docs/usage.md#rust-crate).

### JavaScript

```
npm install txcript
```

```
import { convert } from "txcript";
import { readFileSync, writeFileSync } from "node:fs";

const input = readFileSync("session.jsonl", "utf8");
const output = convert(input, "claude_code", "codex");
writeFileSync("rollout.jsonl", output);
```

The package includes prebuilt WebAssembly for Node and Bun. It converts and searches session text in memory; your application handles files and storage. See the [JavaScript reference](https://github.com/skillsynchq/txcript/blob/main/docs/usage.md#npm-package).

## Supported agents

Each name links to its format documentation. Use the ID with `--from` and `--with`.

| Agent | ID | Read from | Continue into |
| --- | --- | --- | --- |
| [Claude Code](https://github.com/skillsynchq/txcript/blob/main/docs/formats/claude-code.md) | `claude_code` | Yes | Yes |
| [Codex](https://github.com/skillsynchq/txcript/blob/main/docs/formats/codex.md) | `codex` | Yes | Yes |
| [OpenCode](https://github.com/skillsynchq/txcript/blob/main/docs/formats/opencode.md) | `opencode` | Yes | Yes |
| [Cursor CLI](https://github.com/skillsynchq/txcript/blob/main/docs/formats/cursor.md) | `cursor` | Yes | Yes |
| [Cursor desktop](https://github.com/skillsynchq/txcript/blob/main/docs/formats/cursor-desktop.md) | `cursor_desktop` | Yes | Yes |
| [pi](https://github.com/skillsynchq/txcript/blob/main/docs/formats/pi.md) | `pi` | Yes | Yes |
| [Campfire](https://github.com/skillsynchq/txcript/blob/main/docs/formats/campfire.md) | `campfire` | Yes | Yes |
| [Cowork](https://github.com/skillsynchq/txcript/blob/main/docs/formats/cowork.md) | `cowork` | Yes | Yes |
| [Grok CLI](https://github.com/skillsynchq/txcript/blob/main/docs/formats/grok.md) | `grok` | Yes | Yes |
| [Grok Bot](https://github.com/skillsynchq/txcript/blob/main/docs/formats/grok-bot.md) | `grok_bot` | Yes | Via local gateway |
| [fx](https://github.com/skillsynchq/txcript/blob/main/docs/formats/fx.md) | `fx` | Yes | Yes |
| [Antigravity](https://github.com/skillsynchq/txcript/blob/main/docs/formats/antigravity.md) | `antigravity` | Yes | Yes |
| [Hermes Agent](https://github.com/skillsynchq/txcript/blob/main/docs/formats/hermes.md) | `hermes` | Yes | No |
| [Amp](https://github.com/skillsynchq/txcript/blob/main/docs/formats/amp.md) | `amp` | Yes | No |
| [Claude Chat](https://github.com/skillsynchq/txcript/blob/main/docs/formats/claude-chat.md) | `claude_chat` | Live account | No |
| [ChatGPT](https://github.com/skillsynchq/txcript/blob/main/docs/formats/chatgpt.md) | `chatgpt` | Live account | No |

Local discovery skips the live accounts. Select `--from claude_chat` or `--from chatgpt` explicitly to read them. These sources use private web APIs and reuse an existing app login; requirements and limitations are in their linked docs.

### Bring another agent

An agent without a native adapter can emit [Simple](https://github.com/skillsynchq/txcript/blob/main/docs/formats/simple.md), txcript's interchange JSON. Save a document like this as `run.json`:

```
{
  "messages": [
    { "role": "user", "content": "Find why the tests fail." },
    { "role": "assistant", "content": "The test clock is using local time." }
  ]
}
```

```
txcript continue ./run.json --with claude_code
```

Simple also represents reasoning, tool calls, results, images, and metadata. It is the format `txcript export` writes.

## What carries over

The common model represents messages, reasoning, tool calls and results, images, metadata, and token usage. What survives conversion depends on what the source records and the destination can represent. Agent-specific records and unsupported fields can be lost.

Conversion carries conversation history. The destination supplies its own system instructions and tools, and project files must be available separately. Native load/save and conversion have different preservation guarantees; see each [format's caveats](https://github.com/skillsynchq/txcript/blob/main/docs/formats/README.md).

## Documentation

- [CLI reference](https://github.com/skillsynchq/txcript/blob/main/docs/usage.md#cli): commands, search, cropping, MCP, and shell integration.
- [Rust API](https://docs.rs/txcript) and [JavaScript reference](https://github.com/skillsynchq/txcript/blob/main/docs/usage.md#npm-package).
- [Transcript formats](https://github.com/skillsynchq/txcript/blob/main/docs/formats/README.md): storage layouts, mappings, and limitations, with sources and reverse-engineering notes.
- [Development](https://github.com/skillsynchq/txcript/blob/main/docs/usage.md#development) and [test guide](https://github.com/skillsynchq/txcript/blob/main/tests/README.md).
- [Contributing](https://github.com/skillsynchq/txcript/blob/main/CONTRIBUTING.md) · [Report a security vulnerability](https://github.com/skillsynchq/txcript/blob/main/SECURITY.md).
- [Changelog](https://github.com/skillsynchq/txcript/blob/main/CHANGELOG.md) · [Report an issue](https://github.com/skillsynchq/txcript/issues).

## License

[Apache-2.0](https://github.com/skillsynchq/txcript/blob/main/LICENSE)
ibobev20
🟧 echo.github ⭐Txcript converts agent sessions and can continue conversations across Claude Code, Codex, OpenCode, Cursor, and other supported agents; unsuskillsynchq——
🟧 hnShow HN: Aplexica – resume a Claude Code conversation in Codex, and backyruzin10
🟧 hnLaunch HN: Skillsync (YC W26) – AI chat sessions made portable across agentscat-whisperer6862
🟠 redditI made `ls` for agent sessions. It lets you list and switch conversations between agent harnesses (like switching from Claude Code to Codex and back)
ClaudeAI
jakecoolguy12

Interpretation history

Decision trace