Real-time workflow visualization for Claude Code
Project description
ccviz
See inside every Claude Code session — tool calls, thinking, parallel execution, all in one interactive graph.
Install
pip install ccviz
ccviz start
# → http://localhost:7842 opens automatically
Requires Python ≥ 3.10. No Node.js needed.
What You Get
| Feature | Details |
|---|---|
| Per-turn workflow graph | Each user message gets its own DAG — no more one giant session |
| Parallel execution | Parallel tool calls render side-by-side in the same column |
| Thinking & planning nodes | Claude's reasoning steps appear inline between tool calls |
| Near-real-time updates | New nodes appear within 2–5 seconds as Claude executes |
| Node detail panel | Click any node to see full input/output with JSON formatting |
| Filter & search | Filter by tool type or search across all nodes in the current turn |
| Keyboard navigation | ← → to jump between turns |
Node Colors
| Color | Type | Tools |
|---|---|---|
| 🔵 Blue | File ops | Read, Edit, Write |
| 🟠 Orange | Shell | Bash |
| 🟢 Green | Search | WebSearch, WebFetch |
| 🟣 Purple | Agent | Agent, sub-agents |
| 🔴 Red | Interaction | AskUserQuestion, TodoWrite, plan mode |
| 🔷 Indigo | Thinking | Extended thinking blocks |
| 🟡 Yellow | Planning | Claude's reasoning text |
Quick Start
# 1. Install and launch
pip install ccviz
ccviz start
# 2. Use Claude Code as normal in another terminal
claude
# 3. Open http://localhost:7842 — select a session and turn to see the graph
How It Works
You type a message
│
▼ UserPromptSubmit hook → new Turn created
Claude thinks & calls tools
│
├── PreToolUse hook → node inserted (status: running)
│ [tool executes]
└── PostToolUse hook → node updated (status: done, duration)
│
▼ Stop hook → session marked ended
~/.ccviz/db.sqlite
│
▼ SSE (2-5s)
http://localhost:7842 (React Flow DAG)
ccviz start injects four hooks into ~/.claude/settings.json (global, all projects). All data stays on your machine — nothing is sent off-device.
CLI
ccviz start [--port PORT] [--no-open] # inject hooks, start server, open browser
ccviz stop # stop server (hooks stay active)
ccviz status # server · hooks · DB info
ccviz uninstall # remove hooks + stop server (data preserved)
Default port: 7842
Data
~/.ccviz/
├── db.sqlite # sessions, turns, tool calls
└── server.log # server stderr
To wipe everything:
ccviz uninstall && rm -rf ~/.ccviz
Roadmap
- Token usage per turn
- Session search and filter
- Export turn as image / shareable link
- VS Code sidebar integration
- Multi-machine / remote session support
Contributions welcome — see CONTRIBUTING.md.
Development
git clone https://github.com/mshubian/ccviz
cd ccviz
pip install -e ".[dev]"
pytest tests/ -v
Frontend (pre-built assets ship with the package, rebuild only if you change UI):
cd frontend
npm install
npm run dev # :5173, proxies /api → :7842
npm run build # outputs to ccviz/frontend/
License
MIT © mshubian
If ccviz is useful to you, a ⭐ on GitHub goes a long way — thank you!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ccviz-0.2.0.tar.gz.
File metadata
- Download URL: ccviz-0.2.0.tar.gz
- Upload date:
- Size: 131.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb5a4446ab3a99bd5671d2f053f4754114bf3da3eecde93c0a8b3ba37916af41
|
|
| MD5 |
caa818158eef04df7e5b7516467cc380
|
|
| BLAKE2b-256 |
09d13168974a0da8cb89a515327c833f74588943da0ed5bd1c0f9c559effb701
|
File details
Details for the file ccviz-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ccviz-0.2.0-py3-none-any.whl
- Upload date:
- Size: 131.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b1762a8b600e8e1c525d120fc2c6a4d2fccc3c15b52eff2c994c961097c16ad
|
|
| MD5 |
12365a619b15c7ce2dbf2bfde62bf5d9
|
|
| BLAKE2b-256 |
524a6655855df9dadd56c1e640f4c828af3891165388737218cf9b8b0e0ca3f4
|