by furkankly
Watch a Claude Code or Codex session as a live flow graph, in your terminal or your browser.
# Add to your Claude Code skills
git clone https://github.com/furkankly/zoetropeLast scanned: 8/22/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-22T04:31:18.870Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how zoetrope compares with popular alternatives.
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 or Codex session as a live flow graph, in your terminal or your browser. It has 833 GitHub stars.
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.
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).
zoetrope is primarily written in Rust. It is open-source under furkankly on GitHub, so you can review or fork the full source.
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.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Claude Code and Codex write a transcript for every session. zoetrope reads it and draws the session as a graph in your terminal: the main agent, the agents 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.

| Agent | Sessions live in | Replay | Follow live | Browser |
|---|---|---|---|---|
| Claude Code | ~/.claude/projects/ |
✓ | ✓ | ✓ sessions and subagents |
| Codex CLI and desktop app | ~/.codex/sessions/ |
✓ | ✓ | ✓ sessions and subagents |
zoetrope reads a session from any of its files and tells the formats apart by
content, so zoe <file> works for either, and zoe <id> finds a session by id
across both.

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.
Herdr is a terminal multiplexer built for running coding
agents side by side. It knows which agent occupies a pane and the id of the
session running there, so the plugin in
herdr-plugin/
opens that exact session in zoe, without you naming a file or an id.
herdr integration install claude # and/or codex, so Herdr learns session ids
herdr plugin install furkankly/zoetrope/herdr-plugin
herdr plugin action invoke setup-keys --plugin furkankly.zoetrope
Focus an agent pane and press prefix+shift+z. The graph opens over the pane,
follows the session live, and the same key closes it. There are placements for
a split and a tab as well, and the plugin's
README
covers both.

zoe # follow the current project's live session
zoe <dir> # follow another project's session
zoe <file.jsonl> # replay a recording from the start (any file of a session)
zoe <id> # replay a session by id, or a unique prefix of one
zoe <file.jsonl> --follow # open a recording at its live edge
zoe <file.jsonl> --speed N # playback speed (default 8.0)
zoe --provider codex ... # force the format instead of detecting it from the file
zoe inspect <file|id> # 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.
The graph
⚒ bash ×5, or ⚒ bash 0.5s
ticking during a single call), resolving to ✓ or ✗Time travel
Inspection
zoe inspect prints the whole tree headlessly, so it runs anywhere without a TTYReading your sessions
space play/pause · [ ] prev/next prompt · End or g jump to live · drag the
bar to seek · ? for everything else.
| Key | Action |
|---|---|
space |
play / pause (resumes from the playhead) |
[ / ] |
previous / next prompt era |
End / g |
jump to the live edge |
s |
toggle gap compression (faithful pacing vs. skip idle stretches) |
| mouse drag | seek along the scrubber |
o / f |
camera: Overview / Follow |
r |
relayout (tidy the graph) |
arrows / Tab / Shift-Tab |
move between agents |
h j k l |
pan the graph |
+ / - / 0 |
zoom in / out / reset |
c |
center on the selected agent |
| click | open an agent's detail panel |
j / k / PgUp / PgDn |
scroll the detail panel |
i |
session info overlay |
? |
help overlay |
esc |
close an overlay / clear the selection |
q / ctrl-c |
quit |
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:

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

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: