switchToSession didn't exist - was calling a nonexistent method. Changed to selectSession which actually switches the active tab and loads the terminal buffer. Also enhanced browser push notifications to navigate to the session when clicked (previously only focused window). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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
What Claudeman Does
💾 Persistent Screen Sessions
Every Claude session runs inside GNU Screen — sessions survive server restarts, network drops, and machine sleep.
# 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→/initfor fresh context - Step confirmation (5s silence) between each command
- Keeps working even when Ralph loops stop
- Run for 24+ hours completely unattended
# 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:
Auto-detects:
| Pattern | Example |
|---|---|
| Promise tags | <promise>COMPLETE</promise> |
| Custom phrases | <promise>ALL_TASKS_DONE</promise> |
| 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 → <spawn1337>task.md</spawn1337>
→ SpawnDetector parses tag
→ Orchestrator creates agent directory
→ Spawns Claude in its own screen session
→ Agent works autonomously
→ Reports result via <promise>PHRASE</promise>
→ 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
# 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 |
# Configure per-session
curl -X POST localhost:3000/api/sessions/:id/auto-compact \
-d '{"enabled": true, "threshold": 100000}'
🔔 Desktop Notifications via Hooks
Automatic desktop notifications when sessions need attention — powered by Claude Code's hooks system:
| Hook Event | Urgency | Meaning |
|---|---|---|
permission_prompt |
Critical | Claude needs tool approval |
elicitation_dialog |
Critical | Claude is asking a question |
idle_prompt |
Warning | Session idle, waiting for input |
stop |
Info | Response complete |
Hooks are auto-configured per case directory (.claude/settings.local.json). Requires --https flag for browser notification API support.
🖥️ 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
Monitor Panel — Real-time screen session monitoring with memory, CPU, and process info:
Quick Start
# Clone and build
git clone https://github.com/Ark0N/claudeman.git
cd claudeman
npm install && npm run build
# Start the web interface
claudeman web
# Open http://localhost:3000
# Press Ctrl+Enter to start your first session
More Options
# Custom port
claudeman web -p 8080
# Development mode (no build needed)
npx tsx src/index.ts web
Requirements:
- Node.js 18+
- Claude CLI in PATH
- GNU Screen (
apt install screen/brew install screen)
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 |
Claude Code hook callbacks |
Real-Time
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/events |
SSE stream |
GET |
/api/status |
Full app state |
Architecture
flowchart TB
subgraph Claudeman["🖥️ CLAUDEMAN"]
subgraph Frontend["Frontend Layer"]
UI["Web UI<br/><small>xterm.js</small>"]
API["REST API<br/><small>Fastify</small>"]
SSE["SSE Events<br/><small>/api/events</small>"]
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<br/><small>state.json</small>"]
end
subgraph External["External"]
CLI["Claude CLI"]
A1["Agent 1<br/><small>(screen)</small>"]
A2["Agent 2<br/><small>(screen)</small>"]
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
npm install
npx tsx src/index.ts web # Dev mode
npm run build # Production build
npm test # Run tests
See CLAUDE.md for full documentation.
License
MIT — see LICENSE
Track sessions. Control respawn. Let it run while you sleep.



