← all repositories
furkankly/zoetrope

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.

zoetrope
Collecting fresh signals — velocity needs a few days of history.
collecting data…
star history

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 inspect mode 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.dev without 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 root cargo commands 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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.