zoetrope CLI
Draws a Claude Code or Codex session as a graph of agents and tool calls, live or replayed from a recording
- 1,142 ★ on the repository
- Last commit
- MIT
Minimal access
Why this level
- Only reads session transcripts, writes nothing and makes no network calls
- Transcripts contain prompts and command output, so do not share opened recordings with third parties
Install
- Works in
Manual install
brew install furkankly/tap/zoetropeWorks on macOS and Linux. The program starts with the zoe command.
Access and checks
How we reviewMinimal accessThe tool runs nothing and makes no network calls.
- Only reads session transcripts, writes nothing and makes no network calls
- Transcripts contain prompts and command output, so do not share opened recordings with third parties
This is third-party code. Review the repository files before installing.
What it does
zoetrope reads a Claude Code or Codex session transcript and turns it into a graph in your terminal. The graph shows the main agent, the subagents it spawned and the tools each one ran. An agent card carries its status, current tool, call count and output tokens, and calls hang under the card as chips that resolve to a success or error mark. A running session is followed live. A finished one replays at the pace of the session's own timestamps, and the `--speed` flag changes the rate. The timeline scrubs backwards: agents become unfinished again, call counts drop and the graph shrinks to how it stood at the chosen moment. Clicking an agent opens the prompt that spawned it, its model and every call with timings. The program starts with the `zoe` command. `zoe inspect` prints the session tree without the interface, so it works in scripts and over SSH. The same program compiled to WebAssembly runs in a browser: you open a transcript from disk or drop it on the page, and it stays on your machine.
Who it is for. For developers who run Claude Code or Codex with subagents and want to see who did what and why a session dragged on.
Good fit when
- Claude Code spawned several subagents, and a text log does not show which one spent the time and tokens
- You need to walk through a finished Codex session step by step: `zoe <file.jsonl>` replays it at the original pace
- A long task is running and you want to watch it from the side without disturbing the agent: `zoe` with no arguments attaches to the project's current session
- A report needs the agent tree without the interface: `zoe inspect <file or id>` prints it to the console
- You work in the Herdr multiplexer and want to open a session graph from an agent pane with one key
Not a fit when
- You need cost tracking by tokens and days: zoetrope draws session structure and does not compute spend
- You use another agent such as Gemini CLI or Cursor: only the Claude Code and Codex transcript formats are recognized
- You want a tool that steers the session: zoetrope only reads the transcript and sends nothing to the agent
Example request
Install zoetrope and show me the graph of my latest Claude Code session with its subagentsLimitations
- The Claude Code and Codex transcript formats are undocumented and can change without warning. zoetrope skips unfamiliar records, but a new agent release may still render oddly, and the author asks for an issue in that case.
- Two agents are supported: Claude Code and Codex, and for Codex both CLI and desktop app transcripts are read.
- Building from source needs a Rust toolchain. Homebrew and the prebuilt binaries for macOS, Linux and Windows do not.
How to disable. zoetrope installs no hooks and changes no agent settings, so removing the program is enough: `brew uninstall zoetrope` for Homebrew or `cargo uninstall zoetrope` for a Cargo install. A prebuilt `zoe` binary can simply be taken off the PATH.
FAQ
How do I view a Claude Code session as a graph?
Install zoetrope and run `zoe` in the project folder. With no arguments it finds the project's newest session and follows it live. `zoe <file.jsonl>` opens a specific recording, and `zoe <id>` finds a session by id or a prefix of one.
Does zoetrope work with Codex?
Yes, Codex CLI and the Codex desktop app are supported alongside Claude Code, with transcripts read from `~/.codex/sessions/`. zoetrope detects the format from the file content, and `--provider codex` forces it.
Does session data leave my machine?
No. According to the author, the dependency tree has no HTTP client and tokio is pulled in without its `net` feature, which `cargo tree` can confirm. The browser version also reads the transcript locally.
How do I speed up or slow down a replay?
Set the rate with `--speed`, for example `zoe <file.jsonl> --speed 16`. The default is 8.0. The `s` key toggles gap compression and `space` pauses playback.
Can I open a session without installing anything?
Yes. The page zoetrope.furkankly.dev/app runs the same program in a browser through WebAssembly. Drop a session transcript on it and the graph opens with no install.
Discussion
No questions or reviews yet.
Related
CLI toolsReads Claude Code session logs as a conversation: tool calls, token counts and a live tail of a running session.
agentplay turns local Claude Code, Codex and Cursor sessions into a file map and a replayable step timeline.
Three Claude Code plugins: the savvy-flow orchestrator with tiered subagents and two mods for a progress panel and a cache timer
Session monitor for Claude Code, Cursor, Codex and six more agents in a terminal, window or HTTP API, with chat cleanup and search
Rust terminal client claude-rs for Claude Code: the session stays in terminal scrollback, output does not flicker, tmux works.
A desktop GUI app for Claude Code: session management, custom agents and a token cost dashboard
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Repository stars | Main difference |
|---|---|---|---|
| zoetrope (this card) | no | 1,142 | |
| opcode | no | 22,433 | a desktop app for managing Claude Code sessions that draws no subagent graph in the terminal |
| Coding Agent Session Search (cass) | no | 1,200 | searches the history of sessions across agents and does not draw the structure of one session |
README in short
The repository page opens with three install routes: Homebrew, Cargo and prebuilt binaries. It then gives a table of supported agents, a description of the Herdr plugin, the launch commands and a section on the graph, the timeline and the agent detail panel. It closes with design principles: an IO-free core that also compiles to WebAssembly, a warning about undocumented transcript formats and contribution rules.