zoetrope
Watch a Claude Code session as a live flow graph, in your terminal or your browser.
What is it?
What it is
zoetrope is a local, read-only visualization tool that renders Claude Code sessions as interactive flow graphs in the terminal or browser. It uses the portable core library (compilable to any target including WebAssembly) with ratatui for terminal UI and rataflow for the node-graph widget, building on the ratatui and rataflow projects.
Why it exists
To provide a visual, interactive representation of AI agent sessions (from Claude Code) that allows users to watch, replay, and inspect agent interactions, tool calls, and workflows entirely locally with zero network exposure.
Who should use it
Developers using Claude CodeAI agent developersTechnical users who want to visualize agent workflows
Who should avoid it
Non-technical usersUsers not working with Claude CodeThose who prefer a simple log viewer without interactive graph
Stars over time
No change stars in the last 1 day
How it works
A quick walkthrough in plain English
How zoetrope works in 4 steps
Step 1 of 4
Something triggers the flow
A schedule, webhook, or manual click tells zoetrope to start.
Features
Advantages
- Local-first, zero-network design - read-only and no data leaves the machine
- Built on established libraries (ratatui, rataflow, ratzilla) with verified portability
- Real-time visualization of agent interactions and tool usage
- Event-indexed timeline enables precise time travel and accurate playback
- Detailed tool call tracking with timing information for transparency
- Cross-platform support (macOS, Linux, Windows) and browser compatibility
- Graceful degradation when encountering unknown or malformed transcript records
- Reliable and stable despite undocumented internal transcript format (skips unrecognized records)
Disadvantages
- Requires Rust toolchain for the CLI version (though prebuilt binaries and browser WASM are available)
- Transcript format is undocumented and internal to Claude Code - changes may break functionality
- Heavy dependency on specific Claude Code transcript structure limits future flexibility
- Browser frontend requires separate wasm32 build process and is excluded from root workspace
- Complexity of maintaining two independent frontends (terminal and web) adds maintenance overhead
Installation
cloud
No install at all: **[try it in your browser](https://zoetrope.furkankly.dev/app)**. Drop a transcript on the page and get the same graph.
native
**Homebrew** — macOS and Linux: ```bash brew install furkankly/tap/zoetrope ``` **Cargo** — needs a Rust toolchain: ```bash cargo install zoetrope ``` **Prebuilt binaries** — no toolchain needed. Every [release](https://github.com/furkankly/zoetrope/releases) carries archives for macOS (Apple Silicon and Intel), Linux (`musl`, arm64 and x86_64) and Windows (x86_64). Unpack one and put `zoe` on your `PATH`. Or build from source: ```bash git clone https://github.com/furkankly/zoetrope cd zoetrope cargo build --release ./target/release/zoe ```
FAQ
How do I install zoetrope?
You can install zoetrope via Homebrew (`brew install furkankly/tap/zoetrope`), Cargo (`cargo install zoetrope`), or by downloading prebuilt binaries from the releases page. The command is `zoe`. Alternatively, you can try it directly in your browser at https://zoetrope.furkankly.dev/app without installing anything.
What does zoetrope do?
zoetrope reads Claude Code JSONL session transcripts and visualizes them as a live flow graph in your terminal or browser. It shows the main agent, subagents, workflows, and tool calls as nodes in a graph, updating in real-time for live sessions or replaying finished ones with accurate timing.
How do I use zoetrope to view a session?
Run `zoe` to follow the current project's live session, `zoe <dir>` to follow another project's session, or `zoe <file.jsonl>` to replay a recording. Use `zoe inspect <file.jsonl>` to print the session tree headlessly without the TUI. You can also use `--follow` to open a recording at its live edge and `--speed N` to adjust playback speed.
Is zoetrope safe to use with my session data?
Yes, zoetrope is completely read-only and makes no network requests. It has zero network dependencies in its dependency tree, and tokio is included without its `net` feature. All processing happens locally on your machine, and nothing leaves your system.
What happens if Claude Code updates its transcript format?
zoetrope is designed to degrade gracefully rather than break. Unrecognized records are skipped, missing fields fall back to defaults, and malformed lines never crash the session. If a new Claude Code release causes rendering issues, you can open an issue on the GitHub repository.
Can I use zoetrope in a browser?
Yes, the same engine that powers the terminal app is compiled to WebAssembly and available at https://zoetrope.furkankly.dev/app. You can open sessions from disk or drag and drop transcript files directly onto the page, with all processing staying local to your browser.
Featured in Videos
YouTube tutorials and walkthroughs for zoetrope
Alternatives
Similar projects ranked by category, topics, and text overlap.