Updating
Clawdbot is moving fast (pre “1.0”). Treat updates like shipping infra: update → run checks → restart → verify.Before you update
- Know how you installed: global (npm/pnpm/bun) vs from source (git clone).
- Know how your Gateway is running: foreground terminal vs supervised service (launchd/systemd).
- Snapshot your tailoring:
- Config:
~/.clawdbot/clawdbot.json - Credentials:
~/.clawdbot/credentials/ - Workspace:
~/clawd
- Config:
Update (global install)
Global install (pick one):- If your Gateway runs as a service,
clawdbot daemon restartis preferred over killing PIDs. - If you’re pinned to a specific version, see “Rollback / pinning” below.
Update (clawdbot update)
For source installs (git checkout), prefer:
- Requires a clean worktree.
- Fetches + rebases against the configured upstream.
- Installs deps, builds, builds the Control UI, and runs
clawdbot doctor.
clawdbot update will skip. Use “Update (global install)” instead.
Update (Control UI / RPC)
The Control UI has Update & Restart (RPC:update.run). It:
- Runs the same source-update flow as
clawdbot update(git checkout only). - Writes a restart sentinel with a structured report (stdout/stderr tail).
- Restarts the gateway and pings the last active session with the report.
Update (from source)
From the repo checkout: Preferred:pnpm buildmatters when you run the packagedclawdbotbinary (dist/entry.js) or use Node to rundist/.- If you run directly from TypeScript (
pnpm clawdbot .../bun run clawdbot ...), a rebuild is usually unnecessary, but config migrations still apply → run doctor. - Switching between global and git installs is easy: install the other flavor, then run
clawdbot doctorso the gateway service entrypoint is rewritten to the current install.
Always run: clawdbot doctor
Doctor is the “safe update” command. It’s intentionally boring: repair + migrate + warn.
Note: if you’re on a source install (git checkout), clawdbot doctor will offer to run clawdbot update first.
Typical things it does:
- Migrate deprecated config keys / legacy config file locations.
- Audit DM policies and warn on risky “open” settings.
- Check Gateway health and can offer to restart.
- Detect and migrate older gateway services (launchd/systemd; legacy schtasks) to current Clawdbot services.
- On Linux, ensure systemd user lingering (so the Gateway survives logout).
Start / stop / restart the Gateway
CLI (works regardless of OS):- macOS launchd (app-bundled LaunchAgent):
launchctl kickstart -k gui/$UID/com.clawdbot.gateway(usecom.clawdbot.<profile>if set) - Linux systemd user service:
systemctl --user restart clawdbot-gateway[-<profile>].service - Windows (WSL2):
systemctl --user restart clawdbot-gateway[-<profile>].servicelaunchctl/systemctlonly work if the service is installed; otherwise runclawdbot daemon install.
Rollback / pinning (when something breaks)
Pin (global install)
Install a known-good version (replace<version> with the last working one):
npm view clawdbot version.
Then restart + re-run doctor:
Pin (source) by date
Pick a commit from a date (example: “state of main as of 2026-01-01”):If you’re stuck
- Run
clawdbot doctoragain and read the output carefully (it often tells you the fix). - Check: Troubleshooting
- Ask in Discord: https://discord.gg/clawd