Deployment: Local (Same Machine)
Gateway and Nerve on the same host. This is the default setup and has the fewest moving parts.
Topology
Browser (localhost) → Nerve (127.0.0.1:3080) → Gateway (127.0.0.1:18789)Prerequisites
- Node.js 22+
- OpenClaw installed and gateway running
- Local shell access
Setup
1. Install Nerve
curl -fsSL https://raw.githubusercontent.com/daggerhashimoto/openclaw-nerve/master/install.sh | bash2. Run setup if needed
If .env is missing or wrong:
cd ~/nerve
npm run setupRecommended choices:
- Access mode: This machine only (localhost)
- Authentication: optional for localhost-only usage
3. Start or restart
# systemd service
sudo systemctl restart nerve.service
# or run directly
npm run prodValidation
openclaw gateway status
curl -sS http://127.0.0.1:18789/health
curl -sS http://127.0.0.1:3080/healthAll three should succeed. Open http://localhost:3080 in your browser.
Common issues
Token mismatch after OpenClaw updates
After an OpenClaw update or re-onboard, the connect dialog may fail with auth errors.
Fix: Re-run npm run setup, restart both services, and open a fresh browser tab.
Missing scopes after first connect
Chat connects but actions fail with "missing scope" errors.
Fix: Re-run npm run setup, or manually approve the device:
openclaw devices list
openclaw devices approve <requestId>Browser keeps old credentials
Fix: Clear site data or remove localStorage.oc-config. Nerve stores the gateway URL and any manually-entered token there for reconnects, so a stale manual token can override the official managed connection path.
Security notes
- Keep
HOST=127.0.0.1for local-only deployments - If you expose Nerve (
HOST=0.0.0.0), enableNERVE_AUTH=true - See Security for the full threat model
Recommendation
If you're choosing your first deployment, start here. It has the fewest moving parts and the best support.