Skip to content

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

bash
curl -fsSL https://raw.githubusercontent.com/daggerhashimoto/openclaw-nerve/master/install.sh | bash

2. Run setup if needed

If .env is missing or wrong:

bash
cd ~/nerve
npm run setup

Recommended choices:

  • Access mode: This machine only (localhost)
  • Authentication: optional for localhost-only usage

3. Start or restart

bash
# systemd service
sudo systemctl restart nerve.service

# or run directly
npm run prod

Validation

bash
openclaw gateway status
curl -sS http://127.0.0.1:18789/health
curl -sS http://127.0.0.1:3080/health

All 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:

bash
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.1 for local-only deployments
  • If you expose Nerve (HOST=0.0.0.0), enable NERVE_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.

Released under the MIT License.