A real-time command center for monitoring and controlling Claude Code sessions.
- Fleet overview — See all active sessions at a glance with status filtering
- Live status — Mission/Now/Last updates via
.claude/status.mdhooks - Embedded terminals — Attach to any session with
claude --resume - Real-time sync — Durable Streams for instant state updates
# Install dependencies
pnpm install
# Set API key for AI summaries
export ANTHROPIC_API_KEY=sk-ant-...
# Start daemon + UI
pnpm start┌────────────────────────┐ ┌──────────────────────┐
│ Claude Code Sessions │ tail + hooks │ Session Daemon │
│ ~/.claude/projects │────────────────▶│ - Log parser │
│ ~/.claude/**/status.md │ │ - XState status │
└────────────────────────┘ │ - Durable Streams │
│ - PTY bridge │
└──────────┬───────────┘
│
stream state ───────────┤
(HTTP) │
│
terminal IO ────────────┤
(WebSocket) │
▼
┌───────────────────────┐
│ React UI │
│ - Fleet list │
│ - xterm.js terminal │
└───────────────────────┘
| Status | Description |
|---|---|
| Running | Claude is actively processing |
| Needs Input | Waiting for user approval or input |
| Idle | No activity for 5+ minutes |
Status is derived from log entries using an XState machine. The daemon watches for:
- User prompts and tool results
- Assistant responses and tool requests
- System events (turn end, hooks)
Create .claude/status.md in your project for live updates:
Mission: Implement user authentication
Now: Writing login form component
Last: Created auth context provider| Port | Service |
|---|---|
| 4450 | Durable Streams (session state) |
| 4451 | PTY WebSocket (terminal attach) |
| 5173 | UI dev server |
pnpm serve # Daemon only (port 4450)
pnpm dev # UI only (port 5173)
pnpm start # Both- Daemon: Node.js, Chokidar, XState, node-pty, Durable Streams
- UI: React, TanStack Router, xterm.js