Local dashboard observing SDD workflows in Claude Code
Project description
๐ง sdd-dashboard
Make your AI agents visible.
A local web dashboard that brings gentle-ai subagents out of the shadows.
When Claude Code runs an SDD workflow, subagents execute silently in the background โ you see nothing except a blinking cursor. sdd-dashboard fixes that. Each subagent gets its own column with real-time output, token counts, and elapsed time.
โจ What it looks like
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ sdd-dashboard pampa-storm 48.2k tok โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ORCHESTRATOR 00:03:41 โ โ
โ > Analyzing task scope... โ
โ > Delegating sdd-explore to map existing radar integration โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโค
โ sdd-explore โ 12.1k tok โ sdd-design โ 8.4k tok โ sdd-apply โ โ
โ 00:01:12 [collapsed] โ > Reading api.py... โ waiting... โ
โโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโ
๐ Requirements
- Python 3.11+
- Claude Code with gentle-ai installed
- Node.js 18+ (only if building the frontend from source)
๐ Installation
pipx install sdd-dashboard
That's it. The installer automatically adds the required hooks to ~/.claude/settings.json.
๐ก No pipx? Install it with
pip install pipx && pipx ensurepath.
๐ฅ๏ธ Usage
# Start the dashboard (opens browser at http://localhost:3000)
sdd-dashboard
# Custom port
sdd-dashboard --port 4000
# Skip auto-open
sdd-dashboard --no-open
Then open Claude Code and run any gentle-ai SDD workflow normally. The dashboard activates itself when subagents start.
โ๏ธ How it works
Claude Code (terminal)
โ
โ SubagentStart / SubagentStop hooks (HTTP)
โผ
FastAPI backend โโโ watchfiles reads .jsonl transcripts in real-time
โ
โ WebSocket
โผ
React frontend (browser)
โโโ OrchestratorPanel โ shows the lead agent's output
โโโ SubagentColumns โ one column per active subagent
The dashboard is read-only. It does not modify Claude Code or gentle-ai. It only observes.
๐ ๏ธ Stack
| Layer | Tech |
|---|---|
| Backend | Python 3.11 + FastAPI + Uvicorn |
| File watching | watchfiles |
| Frontend | React 19 + TypeScript + Vite |
| Styles | Tailwind CSS v4 |
| Icons | Lucide React |
| Font | Geist Mono |
๐งโ๐ป Development setup
Backend
# Install Python deps
pip install -e ".[dev]"
# Start the server (no browser, hot reload)
uvicorn sdd_dashboard.main:app --reload --port 3000
Frontend
cd frontend
npm install
npm run dev # starts at http://localhost:5173 with proxy to :3000
npm run build # outputs to ../sdd_dashboard/static/
Run both
# Terminal 1
uvicorn sdd_dashboard.main:app --reload --port 3000
# Terminal 2
cd frontend && npm run dev
๐ Project structure
sdd-dashboard/
โโโ sdd_dashboard/ # Python backend
โ โโโ main.py # FastAPI app
โ โโโ cli.py # Entry point + hook installer
โ โโโ api/
โ โ โโโ hooks.py # POST /api/hook โ receives Claude Code events
โ โ โโโ session.py # GET /api/session โ current state snapshot
โ โโโ state/
โ โ โโโ session.py # In-memory session model
โ โโโ watcher/
โ โโโ transcript.py # Real-time .jsonl file tailer
โ โโโ parser.py # JSONL โ typed events
โ
โโโ frontend/ # React app
โโโ src/
โโโ App.tsx
โโโ hooks/useWebSocket.ts
โโโ store/session.ts
โโโ components/
โโโ Header.tsx
โโโ OrchestratorPanel.tsx
โโโ SubagentRow.tsx
โโโ SubagentColumn.tsx
โโโ OutputLine.tsx
โโโ StatusIcon.tsx
๐ค Contributing
Contributions are welcome. Open an issue first to discuss what you'd like to change.
Before submitting a PR:
- Backend: run
pytest tests/ - Frontend: run
npm run typecheck && npm run build - Keep PRs focused โ one thing at a time
๐ Known gaps (good first issues)
- Per-agent token tracking (currently stubbed in
watcher/transcript.py) - Session persistence across server restarts
Stophook auto-registration in CLI- OS notification when a session completes
- Pressing Esc to cancel leaves the subagent stuck in working state โ it never receives a stop signal
- Subagent output is not streamed in real-time โ it appears all at once when the agent finishes
๐ Relation to gentle-ai
This project is a companion tool for gentle-ai. It has no runtime dependency on it โ it only depends on Claude Code's hook system and .jsonl transcript format. If gentle-ai updates, the dashboard is unaffected.
๐ License
MIT
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 sdd_dashboard-0.1.1.tar.gz.
File metadata
- Download URL: sdd_dashboard-0.1.1.tar.gz
- Upload date:
- Size: 315.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b947d8106b240c79a0f7e025858a0d2f3e20a6a25a55bfe12f35ee6b622bf0a
|
|
| MD5 |
d2f1263279845f8b78fb3c09bc3e7868
|
|
| BLAKE2b-256 |
baa04dfa06c8b163c5ca122cf26530e415b0622572c90d5704a3b5b1f27284ca
|
File details
Details for the file sdd_dashboard-0.1.1-py3-none-any.whl.
File metadata
- Download URL: sdd_dashboard-0.1.1-py3-none-any.whl
- Upload date:
- Size: 87.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33fde41e8dc790c4844954ece4d1cc62aefdeeb002e46f409c3cc1a1ecde04e5
|
|
| MD5 |
948ca7ae39a30a20c2dadfc7836be297
|
|
| BLAKE2b-256 |
ca5f8ad7eb17273b773ffd5d4b6d70e5d94ce7603f801270aeff450754713976
|