Getting Started Goal: go from zerofirst working chat (with sane defaults) as quickly as possible. Fastest chat: open the Control UI (no channel setup needed). Run openclaw dashboard and chat in the browser, or open http://127.0.0.1:18789/ on the gateway host. Docs:

0) Prereqs

  • Node >=22
  • pnpm (optional; recommended if you build from source)
  • Recommended: Brave Search API key for web search. Easiest path: openclaw configure --section web (stores tools.web.search.apiKey). See 1) Install the CLI (recommended)
    curl -fsSL https://openclaw.ai/install.sh | bash
    
    Installer options (install method, non-interactive, from GitHub): 2) Run the onboarding wizard (and install the service)
    openclaw onboard --install-daemon
    
    What you’ll choose:
    • Local vs Remote gateway
    • Auth: OpenAI Code (Codex) subscription (OAuth) or API keys. For Anthropic we recommend an API key; claude setup-token is also supported.
    • Providers: WhatsApp QR login, Telegram/Discord bot tokens, Mattermost plugin tokens, etc.
    • Daemon: background install (launchd/systemd; WSL2 uses systemd)
      • Runtime: Node (recommended; required for WhatsApp/Telegram). Bun is not recommended.
    • Gateway token: the wizard generates one by default (even on loopback) and stores it in gateway.auth.token.
    Wizard doc: Auth: where it lives (important)
    • Recommended Anthropic path: set an API key (wizard can store it for service use). claude setup-token is also supported if you want to reuse Claude Code credentials.
    • OAuth credentials (legacy import): ~/.openclaw/credentials/oauth.json
    • Auth profiles (OAuth + API keys): ~/.openclaw/agents//agent/auth-profiles.json
    Headless/server tip: do OAuth on a normal machine first, then copy oauth.json to the gateway host.

     

     
    3) Start the Gateway If you installed the service during onboarding, the Gateway should already be running:
    openclaw gateway status
    
    Manual run (foreground):
    openclaw gateway --port 18789 --verbose
    
    Dashboard (local loopback): http://127.0.0.1:18789/ If a token is configured, paste it into the Control UI settings (stored as connect.params.auth.token). ⚠️ Bun warning (WhatsApp + Telegram): Bun has known issues with these channels. If you use WhatsApp or Telegram, run the Gateway with Node.

     

     
    3.5) Quick verify (2 min)
    openclaw status
    openclaw health
    openclaw security audit --deep
    

     

     
    4) Pair + connect your first chat surface

     

     
    WhatsApp (QR login)
    openclaw channels login
    
    Scan via WhatsApp → Settings → Linked Devices. WhatsApp doc: Telegram / Discord / others The wizard can write tokens/config for you. If you prefer manual config, start with:
    • Telegram: 5) DM safety (pairing approvals) Default posture: unknown DMs get a short code and messages are not processed until approved. If your first DM gets no reply, approve the pairing:
      openclaw pairing list whatsapp
      openclaw pairing approve whatsapp <code>
      
      Pairing doc: From source (development) If you’re hacking on OpenClaw itself, run from source:
      git clone https://github.com/openclaw/openclaw.git
      cd openclaw
      pnpm install
      pnpm ui:build # auto-installs UI deps on first run
      pnpm build
      openclaw onboard --install-daemon
      
      If you don’t have a global install yet, run the onboarding step via pnpm openclaw ... from the repo. pnpm build also bundles A2UI assets; if you need to run just that step, use pnpm canvas:a2ui:bundle. Gateway (from this repo):
      node openclaw.mjs gateway --port 18789 --verbose
      

       

       
      7) Verify end-to-end In a new terminal, send a test message:
      openclaw message send --target +15555550123 --message "Hello from OpenClaw"
      
      If openclaw health shows “no auth configured”, go back to the wizard and set OAuth/key auth — the agent won’t be able to respond without it. Tip: openclaw status --all is the best pasteable, read-only debug report. Health probes: openclaw health (or openclaw status --deep) asks the running gateway for a health snapshot.

       

       
      Next steps (optional, but great)