Bake required binaries into the image
Installing binaries inside a running container is a trap: anything installed at runtime is lost on restart. Bake every external binary a skill needs into the image at build time. The examples below cover three binaries only, alphabetically:gog(fromgogcli) for Gmail accessgoplacesfor Google Placeswaclifor WhatsApp
- Update the Dockerfile.
- Rebuild the image.
- Restart the containers.
The URLs above are examples. For ARM-based VMs, choose the
arm64 assets. For reproducible builds, pin versioned release URLs.Build and launch
Killed or exit code 137 during pnpm install --frozen-lockfile, the VM is out of memory. Use a larger machine class before retrying.
Verify binaries:
/healthz returning a 200 response confirms the gateway process is listening and healthy; the built-in image HEALTHCHECK polls the same endpoint.
What persists where
OpenClaw runs in Docker, but Docker is not the source of truth. All long-lived state must survive restarts, rebuilds, and reboots.| Component | Location | Persistence mechanism | Notes |
|---|---|---|---|
| Gateway config | /home/node/.openclaw/ | Host volume mount | Includes openclaw.json |
| Channel/provider creds | /home/node/.openclaw/credentials/ | Host volume mount | Channel and provider credential material |
| Model auth profiles | /home/node/.openclaw/agents/ | Host volume mount | agents/<agentId>/agent/auth-profiles.json (OAuth, API keys) |
| Legacy OAuth key file | /home/node/.config/openclaw/ | Host volume mount | Read-only compat for pre-migration OAuth sidecars; openclaw doctor --fix migrates these into auth-profiles.json |
| Skill configs | /home/node/.openclaw/skills/ | Host volume mount | Skill-level state |
| Agent workspace | /home/node/.openclaw/workspace/ | Host volume mount | Code and agent artifacts |
| WhatsApp session | /home/node/.openclaw/ | Host volume mount | Preserves QR login |
| Gmail keyring | /home/node/.openclaw/ | Host volume + password | Requires GOG_KEYRING_PASSWORD |
| Plugin packages | /home/node/.openclaw/npm, /home/node/.openclaw/git | Host volume mount | Downloadable plugin package roots |
| External binaries | /usr/local/bin/ | Docker image | Must be baked at build time |
| Node runtime | Container filesystem | Docker image | Rebuilt every image build |
| OS packages | Container filesystem | Docker image | Do not install at runtime |
| Docker container | Ephemeral | Restartable | Safe to destroy |