Claudeman

Manage Claude Code sessions better than ever

Autonomous Claude Code work while you sleep
Persistent sessions, Ralph Loop tracking, Respawn Controller, Multi-Session Dashboards, Monitor Panel

License: MIT Node.js 18+ TypeScript 5.5 Fastify Tests

---

Claudeman Dashboard

Claudeman Demo

--- ## What Claudeman Does ### 🔔 Notification System Real-time desktop notifications when sessions need attention — never miss a permission prompt or idle session again: | Hook Event | Urgency | Tab Alert | Meaning | |------------|---------|-----------|---------| | `permission_prompt` | Critical | Red blink | Claude needs tool approval | | `elicitation_dialog` | Critical | Red blink | Claude is asking a question | | `idle_prompt` | Warning | Yellow blink | Session idle, waiting for input | | `stop` | Info | — | Response complete | **Features:** - Browser notifications enabled by default (auto-requests permission) - Click any notification to jump directly to the affected session - Tab blinking alerts: red for action-required, yellow for idle - Notifications include actual context (tool name, command, question text) - Hooks are auto-configured per case directory (`.claude/settings.local.json`) - Requires `--https` flag for browser notification API support --- ### 💾 Persistent Screen Sessions Every Claude session runs inside **GNU Screen** — sessions survive server restarts, network drops, and machine sleep. ```bash # Your sessions are always recoverable CLAUDEMAN_SCREEN=1 CLAUDEMAN_SESSION_ID=abc-123-def CLAUDEMAN_SCREEN_NAME=claudeman-myproject ``` - Sessions auto-recover on startup (dual redundancy: `state.json` + `screens.json`) - All settings (respawn, auto-compact, tokens) survive server restarts - Ghost session discovery finds orphaned screens - Claude knows it's managed (won't kill its own screen) --- ### 🔄 Respawn Controller **The core of autonomous work.** When Claude becomes idle, the Respawn Controller kicks in: ``` WATCHING → IDLE DETECTED → SEND UPDATE → CLEAR → INIT → CONTINUE ↑ │ └──────────────────────────────────────────────────────┘ ``` - Multi-layer idle detection (completion messages, output silence, token stability) - Sends configurable update prompts to continue work - Auto-cycles `/clear` → `/init` for fresh context - Step confirmation (5s silence) between each command - **Keeps working even when Ralph loops stop** - Run for **24+ hours** completely unattended ```bash # Enable respawn with 8-hour timer curl -X POST localhost:3000/api/sessions/:id/respawn/enable \ -H "Content-Type: application/json" \ -d '{ "config": { "updatePrompt": "continue improving the codebase", "idleTimeoutMs": 5000 }, "durationMinutes": 480 }' ``` --- ### 🎯 Ralph / Todo Tracking Claudeman detects and tracks Ralph Loops and Todos inside Claude Code:

Ralph Loop Tracking

**Auto-detects:** | Pattern | Example | |---------|---------| | Promise tags | `COMPLETE` | | Custom phrases | `ALL_TASKS_DONE` | | TodoWrite | `- [ ] Task`, `- [x] Done` | | Iterations | `[5/50]`, `Iteration 5 of 50` | **Tracks in real-time:** - Completion phrase detection - Todo progress (`4/9 complete`) - Progress percentage ring - Elapsed time --- ### 🤖 Spawn1337: Autonomous Agent Protocol Spawn full-power Claude agents that run independently in their own screen sessions: ``` Parent Session → task.md → SpawnDetector parses tag → Orchestrator creates agent directory → Spawns Claude in its own screen session → Agent works autonomously → Reports result via PHRASE → Parent notified via SSE ``` **Features:** - **Resource governance**: Budget limits (tokens + cost), timeout enforcement, graceful shutdown - **Agent trees**: Agents can spawn children (max depth: 3) - **Communication**: Filesystem-based message bus between parent and child - **Max 5 concurrent** agents with queuing for overflow ```yaml # Task spec format (YAML frontmatter in .md file) --- agentId: my-agent-001 name: My Agent type: implement priority: high maxTokens: 150000 maxCost: 0.50 timeoutMinutes: 15 completionPhrase: AGENT_DONE --- Implement the feature described below... ``` --- ### 📊 Smart Token Management Never hit token limits unexpectedly: | Threshold | Action | Result | |-----------|--------|--------| | **110k tokens** | Auto `/compact` | Context summarized, work continues | | **140k tokens** | Auto `/clear` | Fresh start with `/init` | ```bash # Configure per-session curl -X POST localhost:3000/api/sessions/:id/auto-compact \ -d '{"enabled": true, "threshold": 100000}' ``` --- ### 🖥️ Multi-Session Dashboard Run **20 parallel sessions** with full visibility: - Real-time xterm.js terminals (60fps streaming) - Per-session token and cost tracking - Tab-based navigation - One-click session management

Multi-Session Dashboard

**Monitor Panel** — Real-time screen session monitoring with memory, CPU, and process info:

Monitor Panel

--- ## Installation ### macOS & Linux ```bash curl -fsSL https://raw.githubusercontent.com/Ark0N/claudeman/master/install.sh | bash ``` ### npm (alternative) ```bash npm install -g claudeman ``` ### Requirements - Node.js 18+ - [Claude CLI](https://docs.anthropic.com/en/docs/claude-code/getting-started) installed - GNU Screen (`apt install screen` / `brew install screen`) ## Getting Started ```bash claudeman web --https # Open https://localhost:3000 # Press Ctrl+Enter to start your first session ``` --- ## Keyboard Shortcuts | Shortcut | Action | |----------|--------| | `Ctrl+Enter` | Quick-start session | | `Ctrl+W` | Close session | | `Ctrl+Tab` | Next session | | `Ctrl+K` | Kill all sessions | | `Ctrl+L` | Clear terminal | --- ## API ### Sessions | Method | Endpoint | Description | |--------|----------|-------------| | `GET` | `/api/sessions` | List all | | `POST` | `/api/quick-start` | Create case + start session | | `DELETE` | `/api/sessions/:id` | Delete session | | `POST` | `/api/sessions/:id/input` | Send input | ### Respawn | Method | Endpoint | Description | |--------|----------|-------------| | `POST` | `/api/sessions/:id/respawn/enable` | Enable with config + timer | | `POST` | `/api/sessions/:id/respawn/stop` | Stop controller | | `PUT` | `/api/sessions/:id/respawn/config` | Update config | ### Ralph / Todo Tracking | Method | Endpoint | Description | |--------|----------|-------------| | `GET` | `/api/sessions/:id/ralph-state` | Get loop state + todos | | `POST` | `/api/sessions/:id/ralph-config` | Configure tracking | ### Spawn Agents | Method | Endpoint | Description | |--------|----------|-------------| | `GET` | `/api/spawn/agents` | List all agents | | `GET` | `/api/spawn/agents/:id` | Agent status + progress | | `GET` | `/api/spawn/agents/:id/result` | Agent result | | `POST` | `/api/spawn/agents/:id/message` | Send message to agent | | `POST` | `/api/spawn/agents/:id/cancel` | Cancel agent | | `POST` | `/api/spawn/trigger` | Programmatic spawn | ### Hooks & Notifications | Method | Endpoint | Description | |--------|----------|-------------| | `POST` | `/api/hook-event` | Hook callbacks `{event, sessionId, data?}` → notifications + tab alerts | ### Real-Time | Method | Endpoint | Description | |--------|----------|-------------| | `GET` | `/api/events` | SSE stream | | `GET` | `/api/status` | Full app state | --- ## Architecture ```mermaid flowchart TB subgraph Claudeman["🖥️ CLAUDEMAN"] subgraph Frontend["Frontend Layer"] UI["Web UI
xterm.js"] API["REST API
Fastify"] SSE["SSE Events
/api/events"] end subgraph Core["Core Layer"] SM["Session Manager"] S1["Session (PTY)"] S2["Session (PTY)"] RC["Respawn Controller"] SO["Spawn Orchestrator"] end subgraph Detection["Detection Layer"] RT["Ralph Tracker"] SD["Spawn Detector"] end subgraph Persistence["Persistence Layer"] SCR["GNU Screen Manager"] SS["State Store
state.json"] end subgraph External["External"] CLI["Claude CLI"] A1["Agent 1
(screen)"] A2["Agent 2
(screen)"] end end UI <--> API API <--> SSE API --> SM SM --> S1 SM --> S2 SM --> RC SM --> SS S1 --> RT S1 --> SD SD --> SO SO --> A1 SO --> A2 S1 --> SCR S2 --> SCR RC --> SCR SCR --> CLI ``` --- ## Performance Optimized for long-running autonomous sessions: | Feature | Implementation | |---------|----------------| | **60fps terminal** | 16ms server batching, `requestAnimationFrame` client | | **Memory management** | Auto-trimming buffers (2MB terminal, 1MB text) | | **Event debouncing** | 50-500ms on rapid state changes | | **State persistence** | Debounced writes, dual-redundancy recovery | --- ## Development ```bash npm install npx tsx src/index.ts web # Dev mode npm run build # Production build npm test # Run tests ``` See [CLAUDE.md](./CLAUDE.md) for full documentation. --- ## License MIT — see [LICENSE](LICENSE) ---

Track sessions. Control respawn. Let it run while you sleep.