See your AI agents work. Realm visualizes Claude Code activity in real-time 3D, orchestrates multi-agent tasks, and connects external systems via REST API.
Every tool call animates a character moving through a living workshop. Each session gets its own hexagonal zone. Tasks decompose automatically and route to the right agent. Watch it all unfold in real-time.
Visualize — Every tool call (read, write, bash, grep) triggers a context-aware animation. Reading files? Walk to the bookshelf. Running tests? The terminal glows. Committing code? Celebrate. Errors? Shake your head.
Orchestrate — Dispatch tasks to multiple Claude Code instances or Claw agents in parallel. An LLM-powered router decomposes natural language into sub-tasks and routes each to the best-fit session automatically.
Connect — External systems (OpenClaw, DingTalk, Feishu, Telegram) push tasks via REST API. Realm routes them, collects results, and fires webhooks when complete.
- macOS or Linux (Windows not supported — hooks require bash)
- Node.js 18+
- jq (
brew install jq/apt install jq) - tmux (
brew install tmux/apt install tmux)
# 1. Install dependencies brew install jq tmux # 2. Configure hooks (once) npx realm setup # 3. Start npx realmOpen http://localhost:4003 and use Claude Code normally. Watch it move through the workshop as it works.
From source:
git clone <this-repo> cd Realm && npm install && npm run dev| Station | Tools | Description |
|---|---|---|
| Bookshelf | Read | Character browses files |
| Desk | Write | Pencil, ink pot, paper |
| Workbench | Edit | Wrench, gears, bolts |
| Terminal | Bash | Glowing green screen |
| Scanner | Grep, Glob | Telescope sweeps the room |
| Antenna | WebFetch, WebSearch | Satellite dish spins |
| Portal | Task (subagents) | Glowing ring, mini-clones |
| Taskboard | TodoWrite | Sticky-note board |
- Multi-agent zones — Each session gets a hex zone with its own character and workstations
- Real-time 3D animations — Context-aware reactions: celebrates commits, shakes on errors
- Subagent visualization — Mini-characters spawn at the Portal for parallel sub-tasks
- Spatial audio — Synthesized sounds positioned in 3D space (Tone.js, no audio files)
- Activity feed — Live stream of tool calls, responses, and thinking
- Voice input — Speak prompts with real-time transcription (Deepgram API key required)
- Draw mode — Paint hex tiles with colors, 3D stacking, and labels
- Department grouping — Organize zones into departments (Civ-6-style)
- Station panels — Per-workstation history and details
- Attention system — Zones pulse when waiting for input or finishing
- Auto-compact / Auto-continue — Keeps long-running sessions alive
- IM integration — Receive tasks from DingTalk, Feishu, Telegram; send results back
Dispatch tasks to multiple agents and watch them work in parallel:
- Click "+ New" (or
Alt+N) to create a zone - Configure name, directory, agent type, and flags
- Select a zone (
1–6) to target it with prompts - Or use POST /dispatch to let the LLM router decide
Each session runs in its own tmux with status tracking (idle / working / offline).
See docs/ORCHESTRATION.md for the full API.
Realm accepts tasks from external systems and routes them intelligently:
IM Platform → Agent → POST /dispatch (Realm) ↓ LLM decomposes task ↓ dispatch to matching zones ↓ zones work asynchronously ↓ POST callbackUrl → Agent → IM Request:
POST /dispatch { "message": "...", "callbackUrl": "http://agent/callback", "sessionId": "optional" }Callback (when all zones complete):
POST callbackUrl { "taskGroupId": "abc123", "results": [...], "durationMs": 12000 }Configure in the Settings UI or in ~/.realm/data/settings.json:
{ "llmProviders": { "openrouter": { "provider": "custom", "apiKey": "sk-or-v1-...", "model": "stepfun/step-3.5-flash:free", "baseUrl": "https://openrouter.ai/api/v1", "maxTokens": 1024 } }, "defaultProvider": "openrouter" }Supported: "anthropic", "openai", "custom" (OpenAI-compatible, e.g. OpenRouter, Ollama).
| Key | Action |
|---|---|
Tab / Esc | Switch focus: Workshop ↔ Feed |
1–6 | Switch to zone (extended: QWERTY row) |
0 / ` | All zones / overview |
Alt+N | New zone |
Alt+R | Toggle voice input |
F | Toggle follow mode |
P | Toggle station panels |
D | Toggle draw mode |
Draw mode: 1–6 colors · 0 eraser · Q/E brush size · R 3D stack · X clear
realm [options] realm setup # Configure Claude Code hooks realm uninstall # Remove hooks (keeps data) realm doctor # Diagnose issues Options: --port, -p <port> Server port (default: 4003) --help, -h Show help --version, -v Show versionRealm stores persistent data in ~/.realm/data/:
| File | Contents |
|---|---|
events.jsonl | Hook events from Claude Code |
sessions.json | Managed zone/session state |
settings.json | LLM providers, IM channels |
tiles.json | Draw mode tile state |
groups.json | Department groupings |
See docs/SETUP.md for detailed installation instructions.
See CLAUDE.md for architecture and developer reference.
MIT

