Claude Code's family tree, now with a pause button
zoetrope reads Claude Code's JSONL transcripts and renders the session as a live, scrubbable flow graph of agents, subagents, and tool calls in your terminal or browser.

What it does
zoetrope reads the JSONL transcripts that Claude Code writes under ~/.claude/projects/ and renders the session as an interactive graph. You get the main agent, any subagents and workflows it spawns, and the tools each one runs, updating live if you follow a running session or replaying faithfully from a finished file. It is strictly read-only and stays local.
The interesting bit
The project treats the transcript as an append-only event log and keeps two clocks separate: content time from the transcript, and presentation time controlled by your playhead. This means you can scrub backwards through a session and watch agents un-finish, tool counts fall, and the graph shrink to its exact past state without altering the underlying record. The same engine drives both the native terminal UI and a browser build compiled to WebAssembly.
Key highlights
- Renders agents, subagents, and workflow groups as nested nodes with animated edges and live tool-call chips (
⚒ bash ×5, etc.). - Offers a scrubbable timeline indexed by event rather than wall-clock, plus gap compression to skip idle stretches.
- Provides a headless
zoe inspectmode for printing the session tree without a TTY. - Ships a zero-network binary: the dependency tree excludes any HTTP client, which the author notes is provable via
cargo tree. - The portable core compiles to WASM, so the same graph runs in the browser at
zoetrope.furkankly.devwithout uploading data anywhere.
Caveats
- The JSONL format is undocumented and internal to Claude Code, so it can change without warning; zoetrope degrades by skipping unrecognized records rather than crashing, but rendering may drift.
- The browser frontend (
zoetrope-web) lives in a separate crate excluded from the root workspace, so standard rootcargocommands do not touch it.
Verdict
Worth a look if you run Claude Code heavily and want to debug or review what actually happened during a session. If you do not use Claude Code, there is nothing here to see.
Frequently asked
- What is furkankly/zoetrope?
- zoetrope reads Claude Code's JSONL transcripts and renders the session as a live, scrubbable flow graph of agents, subagents, and tool calls in your terminal or browser.
- Is zoetrope open source?
- Yes — furkankly/zoetrope is open source, released under the MIT license.
- What language is zoetrope written in?
- furkankly/zoetrope is primarily written in Rust.
- How popular is zoetrope?
- furkankly/zoetrope has 523 stars on GitHub.
- Where can I find zoetrope?
- furkankly/zoetrope is on GitHub at https://github.com/furkankly/zoetrope.