Skip to content

Installation

Prerequisites

RequirementMinimumNotes
OSUbuntu 22.04+ / macOS 13+Debian also supported
RAM2 GB4 GB+ recommended
Disk5 GB free
API accessAnthropic API key or Claude Max subscription

Quick Install (One-liner)

The installer detects your environment and asks which mode you want:

Terminal window
curl -fsSL https://clawhalla.xyz/install.sh | bash

To skip the mode prompt, pass a flag directly:

Terminal window
# Force bare metal (VPS, hackathons, no Docker required)
curl -fsSL https://clawhalla.xyz/install.sh | bash -s -- --bare
# Force Docker (isolated container)
curl -fsSL https://clawhalla.xyz/install.sh | bash -s -- --docker

The installer will:

  1. Detect your OS
  2. Ask which install mode you want (Docker or bare metal)
  3. Ask for your model preference and API key
  4. Configure OpenClaw automatically — no interactive openclaw onboard needed
  5. Copy 15 pre-trained agents to your workspace
  6. Start the gateway and Mission Control
  7. Print access URLs

Install Modes

Best for: VPS, cloud servers, hackathons, machines without Docker.

The installer:

  • Installs Node 24 via nvm (if not present)
  • Installs pnpm + OpenClaw CLI globally
  • Writes ~/.openclaw/openclaw.json with your credentials (no interactive wizard)
  • Copies the workspace template with 15 pre-trained agents
  • Installs and starts Mission Control on port 3000
  • Starts the gateway on port 18789

Access after install:

Mission Control → http://your-ip:3000
Gateway → ws://127.0.0.1:18789 (loopback only)

Manage services:

Terminal window
# Restart gateway
nohup openclaw gateway > /tmp/openclaw-gateway.log 2>&1 &
# Start Mission Control (dev)
cd ~/clawhalla/apps/mission-control && pnpm dev
# View logs
tail -f /tmp/openclaw-gateway.log
tail -f /tmp/mission-control.log

Manual Installation

If you prefer full control, follow these steps.

  1. Clone the repository

    Terminal window
    git clone https://github.com/deegalabs/clawhalla.git
    cd clawhalla
  2. Generate a gateway token

    Terminal window
    GATEWAY_TOKEN=$(openssl rand -hex 32)
    echo $GATEWAY_TOKEN # save this
  3. Configure OpenClaw

    Create ~/.openclaw/openclaw.json:

    {
    "auth": {
    "profiles": {
    "anthropic:manual": { "provider": "anthropic", "mode": "api_key" }
    }
    },
    "gateway": {
    "port": 18789, "mode": "local", "bind": "loopback",
    "auth": { "mode": "token", "token": "YOUR_GATEWAY_TOKEN" }
    }
    }

    Create ~/.openclaw/agents/main/agent/auth-profiles.json:

    {
    "version": 1,
    "profiles": {
    "anthropic:manual": {
    "type": "api_key",
    "provider": "anthropic",
    "key": "sk-ant-..."
    }
    },
    "lastGood": { "anthropic": "anthropic:manual" }
    }
  4. Copy the workspace template

    Terminal window
    cp -r workspace-template/. ~/.openclaw/workspace/
  5. Set up Mission Control

    Terminal window
    cd apps/mission-control
    pnpm install
    mkdir -p data
    pnpm drizzle-kit generate
    pnpm drizzle-kit migrate
    cat > .env.local << EOF
    GATEWAY_URL=http://127.0.0.1:18789
    GATEWAY_TOKEN=YOUR_GATEWAY_TOKEN
    DB_PATH=./data/mission-control.db
    EOF
  6. Start the gateway

    Terminal window
    nohup openclaw gateway > /tmp/openclaw-gateway.log 2>&1 &
    sleep 5
    curl -s http://127.0.0.1:18789/health # should return {"ok":true}
  7. Start Mission Control

    Terminal window
    pnpm dev --hostname 0.0.0.0 --port 3000

    Open http://localhost:3000 in your browser.


Troubleshooting

Gateway shows as offline in Mission Control

The most common cause: GATEWAY_TOKEN in .env.local is empty or wrong.

Check apps/mission-control/.env.local and verify the token matches ~/.openclaw/openclaw.json → gateway.auth.token.

Restart Mission Control after editing .env.local.

”openclaw: command not found”

Source your shell profile and try again:

Terminal window
source ~/.bashrc # or ~/.zshrc

If using nvm, make sure Node is active:

Terminal window
nvm use 24

Gateway does not start

Check if port 18789 is already in use:

Terminal window
lsof -i :18789

Kill the existing process and restart:

Terminal window
kill $(ps aux | grep openclaw-gateway | grep -v grep | awk '{print $2}')
nohup openclaw gateway > /tmp/openclaw-gateway.log 2>&1 &

Mission Control blank page or DB error

The data/ directory is missing or the migration was not run:

Terminal window
cd ~/clawhalla/apps/mission-control
mkdir -p data
pnpm drizzle-kit migrate

Docker: container fails to start

Terminal window
docker compose logs clawhalla

Common causes: port conflict (18789 or 3000 already in use), missing .env file, Docker daemon not running.

Models show as unavailable

Verify your credentials file:

Terminal window
cat ~/.openclaw/agents/main/agent/auth-profiles.json

For API key, the key field must be your Anthropic API key. For Claude Max, the token field must be your OAuth token.

Check gateway logs for auth errors:

Terminal window
tail -50 /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log