Install
Install in 60 seconds.
npm i -g openclaw@latest gets you the CLI. The onboarding
wizard installs the daemon, creates your first tenant, and walks you
through pairing your first channel.
1. Install the CLI
Pick your package manager.
npm install -g openclaw@latest pnpm add -g openclaw@latest bun add -g openclaw@latest 2. Onboard
The onboarding wizard installs the daemon as a user service (systemd on Linux, launchd on macOS), provisions the data directory, generates the admin key, and creates your first tenant.
openclaw onboard --install-daemon The wizard asks for:
- Your default LLM provider (Anthropic / OpenAI / custom)
- The API key for that provider (stored in the gateway config, never in tenant overlays)
- The first tenant's name
- Optional S3 backup destination
3. Create another tenant
Once the gateway is running, provision more tenants one at a time or in bulk via the control-plane API.
openclaw tenants create globex
openclaw tenants create initech --quota.tokens-per-day 2_000_000 4. Pair a channel
Pair each tenant to one or more messaging channels. The CLI walks the channel-specific flow.
# WhatsApp (scan QR with your phone)
openclaw channels pair whatsapp --tenant acme
# Telegram (paste BotFather token)
openclaw channels pair telegram --tenant acme --token 1234567:ABCdefGHI...
# Slack (opens OAuth in your browser)
openclaw channels pair slack --tenant acme
# Discord (paste bot token)
openclaw channels pair discord --tenant acme --token <bot-token> 5. Verify
# is the gateway up?
openclaw status
# what tenants exist?
openclaw tenants list
# tail the audit log
openclaw audit tail Alternative: Docker
For containerized deployments, run the official Docker image. Mount a host volume for tenant data so you can survive container restarts.
docker run -d --name openclawmu \
-p 18789:18789 \
-v ~/.openclaw:/data \
-e OPENCLAW_DATA_DIR=/data \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
--restart unless-stopped \
neullabs/openclawmu:latest Alternative: docker compose
services:
openclawmu:
image: neullabs/openclawmu:latest
restart: unless-stopped
ports:
- "127.0.0.1:18789:18789"
volumes:
- ./data:/data
environment:
OPENCLAW_DATA_DIR: /data
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
OPENCLAWMU_ADMIN_KEY: ${OPENCLAWMU_ADMIN_KEY} Exposing the gateway
The gateway binds 127.0.0.1:18789 by default. To
accept inbound channel webhooks (Slack, Telegram, etc.) from the
public internet, front it with one of:
- Tailscale Funnel — easiest, single command, free for personal use.
- Cloudflare Tunnel — also single-command; nice if you're already on Cloudflare.
- nginx / Caddy — classic reverse-proxy with your own TLS cert.
- SSH tunnel — fine for dev and small ops.
tailscale funnel 18789
# → https://<your-machine>.<tailnet>.ts.net is now public EXFOLIATE!
Trouble installing?
Open an issue on GitHub or hop into Discord. The maintainer reads both.