Skip to main content

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 screenshot

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  โ—‹ 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
  • Stop hook 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdd_dashboard-0.1.1.tar.gz (315.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sdd_dashboard-0.1.1-py3-none-any.whl (87.6 kB view details)

Uploaded Python 3

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

Hashes for sdd_dashboard-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3b947d8106b240c79a0f7e025858a0d2f3e20a6a25a55bfe12f35ee6b622bf0a
MD5 d2f1263279845f8b78fb3c09bc3e7868
BLAKE2b-256 baa04dfa06c8b163c5ca122cf26530e415b0622572c90d5704a3b5b1f27284ca

See more details on using hashes here.

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

Hashes for sdd_dashboard-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 33fde41e8dc790c4844954ece4d1cc62aefdeeb002e46f409c3cc1a1ecde04e5
MD5 948ca7ae39a30a20c2dadfc7836be297
BLAKE2b-256 ca5f8ad7eb17273b773ffd5d4b6d70e5d94ce7603f801270aeff450754713976

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page