Files
openclaw/docs/install/updating.md

190 lines
5.0 KiB
Markdown
Raw Normal View History

2026-01-06 19:24:33 +01:00
---
2026-01-10 21:14:30 +01:00
summary: "Updating Clawdbot safely (global install or source), plus rollback strategy"
2026-01-06 19:24:33 +01:00
read_when:
- Updating Clawdbot
- Something breaks after an update
---
# Updating
Clawdbot is moving fast (pre “1.0”). Treat updates like shipping infra: update → run checks → restart → verify.
## Before you update
2026-01-10 21:14:30 +01:00
- 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).
2026-01-06 19:24:33 +01:00
- Snapshot your tailoring:
- Config: `~/.clawdbot/clawdbot.json`
- Credentials: `~/.clawdbot/credentials/`
- Workspace: `~/clawd`
2026-01-10 21:14:30 +01:00
## Update (global install)
2026-01-06 19:24:33 +01:00
Global install (pick one):
```bash
npm i -g clawdbot@latest
```
```bash
pnpm add -g clawdbot@latest
```
2026-01-10 21:14:30 +01:00
```bash
bun add -g clawdbot@latest
```
2026-01-06 19:24:33 +01:00
Then:
```bash
clawdbot doctor
2026-01-08 07:16:05 +01:00
clawdbot daemon restart
2026-01-06 19:24:33 +01:00
clawdbot health
```
Notes:
2026-01-08 07:16:05 +01:00
- If your Gateway runs as a service, `clawdbot daemon restart` is preferred over killing PIDs.
2026-01-06 19:24:33 +01:00
- If youre pinned to a specific version, see “Rollback / pinning” below.
2026-01-10 20:32:19 +01:00
## Update (`clawdbot update`)
For **source installs** (git checkout), prefer:
```bash
clawdbot update --restart
```
It runs a safe-ish update flow:
- Requires a clean worktree.
- Fetches + rebases against the configured upstream.
- Installs deps, builds, builds the Control UI, and runs `clawdbot doctor`.
2026-01-10 21:14:30 +01:00
If you installed via **npm/pnpm/bun** (no git metadata), `clawdbot update` will skip. Use “Update (global install)” instead.
2026-01-10 20:32:19 +01:00
## Update (Control UI / RPC)
The Control UI has **Update & Restart** (RPC: `update.run`). It:
2026-01-10 20:32:19 +01:00
1) Runs the same source-update flow as `clawdbot update` (git checkout only).
2) Writes a restart sentinel with a structured report (stdout/stderr tail).
3) Restarts the gateway and pings the last active session with the report.
If the rebase fails, the gateway aborts and restarts without applying the update.
2026-01-06 19:24:33 +01:00
## Update (from source)
From the repo checkout:
2026-01-10 20:32:19 +01:00
Preferred:
```bash
clawdbot update
```
Manual (equivalent-ish):
2026-01-06 19:24:33 +01:00
```bash
git pull
pnpm install
pnpm build
2026-01-09 07:02:42 +00:00
pnpm ui:build # auto-installs UI deps on first run
2026-01-06 19:24:33 +01:00
pnpm clawdbot doctor
pnpm clawdbot health
```
Notes:
2026-01-06 20:25:08 +00:00
- `pnpm build` matters when you run the packaged `clawdbot` binary ([`dist/entry.js`](https://github.com/clawdbot/clawdbot/blob/main/dist/entry.js)) or use Node to run `dist/`.
2026-01-06 19:24:33 +01:00
- If you run directly from TypeScript (`pnpm clawdbot ...` / `bun run clawdbot ...`), a rebuild is usually unnecessary, but **config migrations still apply** → run doctor.
2026-01-10 21:14:30 +01:00
- Switching between global and git installs is easy: install the other flavor, then run `clawdbot doctor` so the gateway service entrypoint is rewritten to the current install.
2026-01-06 19:24:33 +01:00
## Always run: `clawdbot doctor`
Doctor is the “safe update” command. Its intentionally boring: repair + migrate + warn.
2026-01-10 21:14:30 +01:00
Note: if youre on a **source install** (git checkout), `clawdbot doctor` will offer to run `clawdbot update` first.
2026-01-06 19:24:33 +01:00
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.
2026-01-06 19:24:33 +01:00
- On Linux, ensure systemd user lingering (so the Gateway survives logout).
2026-01-07 02:04:02 +01:00
Details: [Doctor](/gateway/doctor)
2026-01-06 19:24:33 +01:00
## Start / stop / restart the Gateway
CLI (works regardless of OS):
```bash
clawdbot daemon status
2026-01-08 07:16:05 +01:00
clawdbot daemon stop
clawdbot daemon restart
2026-01-06 19:24:33 +01:00
clawdbot gateway --port 18789
2026-01-08 06:48:28 +00:00
clawdbot logs --follow
2026-01-06 19:24:33 +01:00
```
If youre supervised:
- macOS launchd (app-bundled LaunchAgent): `launchctl kickstart -k gui/$UID/com.clawdbot.gateway` (use `com.clawdbot.<profile>` if set)
- Linux systemd user service: `systemctl --user restart clawdbot-gateway[-<profile>].service`
- Windows (WSL2): `systemctl --user restart clawdbot-gateway[-<profile>].service`
2026-01-08 06:48:28 +00:00
- `launchctl`/`systemctl` only work if the service is installed; otherwise run `clawdbot daemon install`.
2026-01-06 19:24:33 +01:00
2026-01-06 23:32:12 +00:00
Runbook + exact service labels: [Gateway runbook](/gateway)
2026-01-06 19:24:33 +01:00
## Rollback / pinning (when something breaks)
2026-01-10 21:14:30 +01:00
### Pin (global install)
2026-01-06 19:24:33 +01:00
2026-01-11 04:46:26 +01:00
Install a known-good version (replace `<version>` with the last working one):
2026-01-06 19:24:33 +01:00
```bash
2026-01-11 04:46:26 +01:00
npm i -g clawdbot@<version>
2026-01-06 19:24:33 +01:00
```
2026-01-10 21:14:30 +01:00
```bash
2026-01-11 04:46:26 +01:00
pnpm add -g clawdbot@<version>
2026-01-10 21:14:30 +01:00
```
```bash
2026-01-11 04:46:26 +01:00
bun add -g clawdbot@<version>
2026-01-10 21:14:30 +01:00
```
2026-01-11 04:46:26 +01:00
Tip: to see the current published version, run `npm view clawdbot version`.
2026-01-06 19:24:33 +01:00
Then restart + re-run doctor:
```bash
clawdbot doctor
2026-01-08 07:16:05 +01:00
clawdbot daemon restart
2026-01-06 19:24:33 +01:00
```
### Pin (source) by date
Pick a commit from a date (example: “state of main as of 2026-01-01”):
```bash
git fetch origin
git checkout "$(git rev-list -n 1 --before=\"2026-01-01\" origin/main)"
```
Then reinstall deps + restart:
```bash
pnpm install
pnpm build
2026-01-08 07:16:05 +01:00
clawdbot daemon restart
2026-01-06 19:24:33 +01:00
```
If you want to go back to latest later:
```bash
git checkout main
git pull
```
## If youre stuck
- Run `clawdbot doctor` again and read the output carefully (it often tells you the fix).
2026-01-07 02:04:02 +01:00
- Check: [Troubleshooting](/gateway/troubleshooting)
2026-01-06 19:24:33 +01:00
- Ask in Discord: https://discord.gg/clawd