zoetrope

作者 furkankly已验证

Watch a Claude Code session as a live flow graph, in your terminal or your browser.

172
Stars
8
Forks
Rust
语言
2026/8/23
添加时间

⚠️ 第三方软件声明

本 Skill 为第三方开源软件,独立托管于 GitHub。SkillTip 仅为信息目录,不控制或维护底层仓库。所显示的安全检查为自动化且范围有限,安装前请自行审查源码。

阅读服务条款

安装

添加到你的 Claude Code skills 目录:

# Add to your Claude Code skills
git clone https://github.com/furkankly/zoetrope

快速入门

使用 zoetrope 等 Skills 的指南。

安全报告

已验证

上次扫描:—

{
  "status": "PASSED",
  "issues": []
}

README.md

zoetrope

Watch a Claude Code session as a live flow graph, in your terminal or your browser.

crates.io docs.rs downloads build status minimum supported Rust version

zoetrope.furkankly.dev · the whole app in your browser, the same binary compiled to WASM

A session drawn as a flow graph: a main agent above the subagents it spawned, over a timeline of tool activity

Claude Code writes a JSONL transcript for every session under ~/.claude/projects/. zoetrope reads it and draws the session as a graph in your terminal: the main agent, the subagents and workflows it spawns, and the tools each one runs, updating live as it goes. Point it at a finished run and it replays, paced by the session's own timestamps. Point it at a running one and it follows along. It's read-only, and nothing leaves your machine.

Built on ratatui and rataflow.

zoetrope replaying a Claude Code session as a flow graph

Installation

Homebrew — macOS and Linux:

brew install furkankly/tap/zoetrope

Cargo — needs a Rust toolchain:

cargo install zoetrope

Prebuilt binaries — no toolchain needed. Every release 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.

Whichever route you take, the command is zoe. Or build from source:

git clone https://github.com/furkankly/zoetrope
cd zoetrope
cargo build --release
./target/release/zoe

No install at all: try it in your browser. Drop a transcript on the page and get the same graph.

Usage

zoe                          # follow the current project's live session
zoe <dir>                    # follow another project's session
zoe <file.jsonl>             # replay a recording from the start
zoe <file.jsonl> --follow    # open a recording at its live edge
zoe <file.jsonl> --speed N   # playback speed (default 8.0)
zoe inspect <file.jsonl>     # print the session tree and exit (no TUI)

Give it a file and it reads the whole transcript, then keeps watching for new lines. Give it a directory, or no argument at all, and it finds the newest session in that project and follows it live. Whichever way you start, the controls are the same: scrub, follow, pause, jump back to live.

The same engine also runs in the browser, compiled to WebAssembly via ratzilla. Open a session from disk, or drop a transcript on the page. It stays local there too.

Features

The graph

  • A node per agent: the main session, its subagents, and workflow groups with their children nested underneath
  • Status, current tool, tool count and output tokens on every card
  • Edges animate while an agent is working, and settle when it finishes
  • Tool calls surface as chips beneath their agent (⚒ bash ×5, or ⚒ bash 0.5s ticking during a single call), resolving to or
  • A minimap showing where your viewport sits once the graph outgrows the screen

Time travel

  • One scrubbable timeline over both live and replayed sessions
  • Indexed by event rather than wall-clock, so a busy minute gets room instead of collapsing into a sliver
  • Scrub, pause, step between prompt eras, or snap back to the live edge
  • Seek backwards and you see the session exactly as it stood at that moment. Agents un-finish, tool counts fall, the graph shrinks back
  • Optional gap compression, to skip dead air or keep faithful real-time pacing

Inspection

  • Click any agent for its provenance: the prompt that spawned it, the reasoning around it, its model, and every tool call it made with timings
  • Session info overlay: mode, permissions, queued ops, file edits, last prompt
  • zoe inspect prints the whole tree headlessly, so it runs anywhere without a TTY

Reading your sessions

  • Follows a running session live, or replays a finished one
  • Reads everything a session writes: the main transcript, its subagents, and workflows with their own children, so the graph is the whole picture
  • Keeps going when Claude Code writes something it hasn't seen: unfamiliar records are skipped, never fatal
  • Read-only, and no network at all (see below)

Keys

space play/pause · [ ] prev/next prompt · End or g jump to live · drag the bar to seek · ? for everything else.

Full keymap
KeyAction
spaceplay / pause (resumes from the playhead)
[ / ]previous / next prompt era
End / gjump to the live edge
stoggle gap compression (faithful pacing vs. skip idle stretches)
mouse dragseek along the scrubber
o / fcamera: Overview / Follow
rrelayout (tidy the graph)
arrows / Tab / Shift-Tabmove between agents
h j k lpan the graph
+ / - / 0zoom in / out / reset
ccenter on the selected agent
clickopen an agent's detail panel
j / k / PgUp / PgDnscroll the detail panel
isession info overlay
?help overlay
escclose an overlay / clear the selection
q / ctrl-cquit

j / k scroll the detail panel when an agent is selected, otherwise they pan the graph.

Hand the camera to the action with f and it glides to whichever agent just did something. This is what watching a live run looks like:

zoetrope in follow mode, the camera tracking whichever agent is working

Or drive it yourself: pan, zoom where you point, open an agent's panel, and drag the scrubber to travel back through the session.

Panning, zooming, opening a detail panel, and dragging the scrubber

Under the Hood

zoetrope treats the transcript as an append-only event log. It tails the files, parses each line defensively, and folds them into a derived model of agents, tool calls, and prompts. Nothing is mutated in place. The model is a pure function of the facts seen so far, so seeking backwards is exact.

A few of the pieces that turn a log into a watchable session:

  • Two clocks, kept apart. Content time comes from the transcript's own timestamps; presentation time is the playhead you control. Every pacing decision (speed, gap compression, scrubbing) touches only the second one, so no display choice can ever alter what the session says happened.
  • One timeline for live and replay. Behind the live edge it paces forward; at the edge it pins and folds in new appends as they land. A live session and a saved recording differ only in where the playhead starts. Same engine, same controls.
  • Ground truth over heuristics. Parentage, completion and naming come from what the format actually records (a subagent's toolUseId, a workflow's runId, a journal result) rather than from guessing at strings or timing.
  • You own the camera, not the history. The recording is immutable and the graph never rearranges itself under you (r to relayout). The camera follows the action until you touch it, then stays where you put it.
  • Zero network, provably. There is no HTTP client anywhere in the dependency tree, and tokio is pulled in without its net feature. cargo tree is the proof. This is a property you can check, not a promise.

The model, the timeline and the rendering all live in the portable core, a library with no IO that compiles for any target, including WebAssembly. The native frontend (the zoe binary in this crate) and the browser frontend (the zoetrope-web crate under web/wasm/, which runs the hosted app) sit on top of it and differ only in their IO and event loop.

See docs/DESIGN.md for the module map and the transcript format, and docs/ARCHITECTURE.md for the invariants above in full.

A note on the transcript format

The JSONL format zoetrope reads is undocumented and internal to Claude Code, so it can change without warning. zoetrope is built to degrade rather than break: unrecognized records are skipped, missing fields fall back, and a malformed line never takes down the session. If a new Claude Code release makes something render oddly, please open an issue.

Contributing

Pull requests are welcome.

  • This project follows Conventional Commits for all commit messages (e.g. feat(timeline): index the playhead by event instead of wall-clock, fix(tailer): fold appends at the live edge without rebuilding). The changelog is generated from them with git-cliff, and non-conforming commits are dropped.
  • Run cargo fmt, cargo clippy and cargo test before opening a PR.
  • Those cover the portable core and the native frontend. The browser frontend is a second crate (zoetrope-web, in web/wasm/) that only builds for wasm32, so it is excluded from the root workspace and no root cargo command touches it. From the repo root, build it with bash web/scripts/build-wasm.sh and lint it with cd web/wasm && cargo clippy (its .cargo/config.toml defaults the target to wasm32).

License

MIT.

Acknowledgements

常见问题

What is zoetrope?

zoetrope is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by furkankly. Watch a Claude Code session as a live flow graph, in your terminal or your browser. It has 172 GitHub stars.

Is zoetrope safe to use?

Yes. zoetrope passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install zoetrope?

Clone the repository with "git clone https://github.com/furkankly/zoetrope" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is zoetrope written in?

zoetrope is primarily written in Rust. It is open-source under furkankly on GitHub, so you can review or fork the full source.

Are there alternatives to zoetrope?

Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh zoetrope against similar tools.

评论 (0)

暂无评论,成为第一个分享想法的人!

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情

claude-code

by anthropics

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

120,03119,897Shell
AI 智能体
查看详情

开发者还喜欢

基于喜欢此 Skill 的开发者投票和收藏

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP 服务器apisai-tools
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情