curl -fsSL https://raw.githubusercontent.com/daggerhashimoto/openclaw-nerve/master/install.sh | bashYou can already chat with your OpenClaw agent through webchat, Telegram, WhatsApp, Discord. Nerve is what you open when chatting isn't enough.
Nerve is a self-hosted web UI for OpenClaw AI agents. Voice conversations, live workspace editing, inline charts, cron scheduling, and full token-level visibility. One install script. Running in 30 seconds.
Messaging channels are great for chatting. But you can't watch charts render in real-time, edit your agent's workspace mid-conversation, browse its files, or monitor token spend from a Telegram window. Nerve is the dashboard that gives you the full picture.
Talk to your agent. It talks back. Wake-word activation, on-device Whisper transcription with model selection (tiny, base, small) and GPU detection. No API key needed. Multi-provider TTS with Edge, OpenAI, and Replicate.
Your sub-agent sessions, workspace files, memory, config, tools. All visible, all editable, all live. No file hunting, no guessing what it remembers.
Your agent can drop interactive TradingView charts, candlestick plots, and data visualizations directly into the conversation. Say "show me gold this year" and get a real chart, not a code block.
Create recurring jobs and one-shot reminders. Every scheduled run shows up as its own session in the sidebar. You can watch it execute live, read the full transcript, and see exactly what it did.
| Streaming chat | Markdown, syntax highlighting, diff views, image paste, file previews. All rendering as it streams |
| File browser | Browse your workspace, open files in tabs, edit with syntax highlighting. Real-time sync when your agent edits files |
| Multi-session | Session tree with sub-agents, per-session model overrides, unread indicators |
| Sub-agents | Spawn background workers with custom models and reasoning levels |
| Monitoring | Token usage, context window meter, cost tracking, activity logs |
| Command palette | Cmd+K to search, switch sessions, change models. Keyboard-first |
| Search | Full-text search across all messages in the current session |
| Images | Paste from clipboard, drag & drop files, full-screen lightbox with download |
| Skills browser | Browse installed skills, check status and requirements from the workspace panel |
| Local STT | On-device Whisper — tiny, base, or small models with GPU detection and auto-download. No API key needed |
| Code actions | Copy or save-to-file buttons on every code block |
| API key management | Add provider keys from settings — writes to .env and hot-reloads, no restart needed |
| 14 themes | Dark, light, and everything in between. Resizable panels, custom fonts |
curl -fsSL https://raw.githubusercontent.com/daggerhashimoto/openclaw-nerve/master/install.sh | bashThe installer handles dependencies, cloning, building, and launching. It runs a setup wizard that auto-detects your gateway token and walks you through configuration.
git clone https://github.com/daggerhashimoto/openclaw-nerve.git
cd openclaw-nerve
npm install
npm run setup # interactive wizard — configures .env
npm run prod # builds and starts the servernpm run dev # frontend — Vite HMR on :3080
npm run dev:server # backend — watch mode on :3081Requires: Node.js 22+ and an OpenClaw gateway.
Browser ─── Nerve (:3080) ─── OpenClaw Gateway (:18789)
│ │
├─ WS ──────┤ proxied to gateway
├─ SSE ─────┤ file watchers, real-time sync
└─ REST ────┘ files, memories, TTS, models
Nerve proxies WebSocket traffic to your gateway and adds its own REST layer.
Frontend: React 19 · Tailwind CSS 4 · shadcn/ui · Vite 7 Backend: Hono 4 on Node.js
Nerve binds to localhost by default — only you can access it. When you expose it to the network (HOST=0.0.0.0), built-in password authentication protects all endpoints. The setup wizard auto-prompts for a password when network access is configured.
- Session cookies —
HttpOnly,SameSite=Strict, HMAC-SHA256 signed - Password storage — scrypt with 32-byte salt
- WebSocket auth — cookie verified on upgrade
- Gateway token fallback — works as a password with zero config
See Security for the full threat model.
| Architecture | How the codebase is organized |
| Configuration | Every .env variable explained |
| Agent Markers | TTS markers, inline charts, and how agents render rich UI |
| Security | What's locked down and how |
| API | REST and WebSocket endpoints |
| Contributing | Dev setup, code style, PRs |
| Troubleshooting | Common issues and fixes |
Join the Nerve Discord — get help, share your setup, report bugs, and follow development.