You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/gateway/doctor.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -412,7 +412,9 @@ That stages grounded durable candidates into the short-term dreaming store while
412
412
<Accordiontitle="7b. Plugin install cleanup">
413
413
Doctor removes legacy OpenClaw-generated plugin dependency staging state in `openclaw doctor --fix` / `openclaw doctor --repair` mode: stale generated dependency roots, old install-stage directories, package-local debris from earlier bundled-plugin dependency repair code, and orphaned or recovered managed npm copies of bundled `@openclaw/*` plugins that can shadow the current bundled manifest. Doctor also relinks the host `openclaw` package into managed npm plugins that declare `peerDependencies.openclaw`, so package-local runtime imports such as `openclaw/plugin-sdk/*` keep resolving after updates or npm repairs.
414
414
415
-
Doctor can also reinstall missing downloadable plugins when config references them but the local plugin registry cannot find them (material `plugins.entries`, configured channel/provider/search settings, configured agent runtimes). During package updates, doctor avoids running package-manager plugin repair while the core package is being swapped; run `openclaw doctor --fix` again after the update if a configured plugin still needs recovery. Gateway startup and config reload do not run package managers; plugin installs remain explicit doctor/install/update work.
415
+
Doctor can also reinstall missing downloadable plugins when config references them but the local plugin registry cannot find them (material `plugins.entries`, configured channel/provider/search settings, configured agent runtimes). During package updates, doctor avoids reinstalling plugin packages while the core package is being swapped; run `openclaw doctor --fix` again after the update if a configured plugin still needs recovery. Outside the container image startup exception below, gateway startup and config reload do not run package repair; plugin installs remain explicit doctor/install/update work.
416
+
417
+
Containerized gateway startup has a narrow upgrade exception: when `openclaw gateway run` starts on a new OpenClaw version, it runs safe state migrations and the existing post-core plugin convergence before readiness, then records a per-version checkpoint. This startup pass can clean stale bundled-plugin records, repair local plugin links, reinstall configured plugin packages when the convergence path requires it, and check active plugin payloads. If startup cannot repair safely, run the same image once with `openclaw doctor --fix` against the same mounted state/config before restarting the container normally.
416
418
417
419
</Accordion>
418
420
<Accordiontitle="8. Gateway service migrations and cleanup hints">
Copy file name to clipboardExpand all lines: docs/install/docker.md
+22Lines changed: 22 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,6 +115,28 @@ docker compose up -d openclaw-gateway
115
115
Run `docker compose` from the repo root. If you enabled `OPENCLAW_EXTRA_MOUNTS` or `OPENCLAW_HOME_VOLUME`, the setup script writes `docker-compose.extra.yml`; include it after any `docker-compose.override.yml` you maintain yourself, e.g. `-f docker-compose.yml -f docker-compose.override.yml -f docker-compose.extra.yml`.
116
116
</Note>
117
117
118
+
### Upgrading container images
119
+
120
+
When you replace the OpenClaw image but keep the same mounted state/config, the
121
+
new gateway runs startup-safe upgrade migrations and plugin convergence before
122
+
readiness. Routine image upgrades should not require a separate
123
+
`openclaw doctor --fix` pass.
124
+
125
+
If startup cannot complete those repairs safely, the gateway exits instead of
126
+
reporting healthy. With a restart policy, Docker, Podman, or Kubernetes may show
127
+
the gateway container restarting. Keep the mounted state volume, then run the
128
+
same image once with `openclaw doctor --fix` as the container command, using the
129
+
same state/config mounts the gateway uses:
130
+
131
+
```bash
132
+
docker run --rm -v <openclaw-state>:/home/node/.openclaw <image> openclaw doctor --fix
133
+
podman run --rm -v <openclaw-state>:/home/node/.openclaw <image> openclaw doctor --fix
134
+
```
135
+
136
+
After doctor finishes, restart the gateway container with its default command.
137
+
In Kubernetes, run the same command in a one-off Job or debug pod mounted to the
138
+
same PVC, then restart the Deployment or StatefulSet.
139
+
118
140
### Environment variables
119
141
120
142
Optional variables accepted by `scripts/docker/setup.sh` (and, for the gateway container, by `docker-compose.yml` directly):
Copy file name to clipboardExpand all lines: docs/install/podman.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -153,6 +153,35 @@ Useful env vars for the manual launcher (persist these in `~/.openclaw/.env`; th
153
153
154
154
If you use a non-default `OPENCLAW_CONFIG_DIR` or `OPENCLAW_WORKSPACE_DIR`, set the same variables for both `./scripts/podman/setup.sh` and later `./scripts/run-openclaw-podman.sh launch` commands -- the repo-local launcher does not persist custom path overrides across shells.
155
155
156
+
## Upgrading images
157
+
158
+
After you rebuild or pull a new image, restart the container or Quadlet service.
159
+
On first startup for a new OpenClaw version, the gateway runs safe state and
160
+
plugin repairs before reporting ready.
161
+
162
+
If the gateway exits instead of becoming ready, run the same image once with
163
+
`openclaw doctor --fix` against the same mounted state/config, then restart the
On SELinux hosts, add `,Z` to both bind mounts if Podman blocks access to the
183
+
mounted state.
184
+
156
185
## Useful commands
157
186
158
187
-**Container logs:**`podman logs -f openclaw`
@@ -165,6 +194,7 @@ If you use a non-default `OPENCLAW_CONFIG_DIR` or `OPENCLAW_WORKSPACE_DIR`, set
165
194
166
195
-**Permission denied (EACCES) on config or workspace:** The container runs with `--userns=keep-id` and `--user <your uid>:<your gid>` by default. Ensure the host config/workspace paths are owned by your current user.
167
196
-**Gateway start blocked (missing `gateway.mode=local`):** Ensure `~/.openclaw/openclaw.json` exists and sets `gateway.mode="local"`. `scripts/podman/setup.sh` creates this if missing.
197
+
-**Container restarts after an image update:** Run the one-off `openclaw doctor --fix` command in [Upgrading images](#upgrading-images), then start the gateway again.
168
198
-**Container CLI commands hit the wrong target:** Use `openclaw --container <name> ...` explicitly, or export `OPENCLAW_CONTAINER=<name>` in your shell.
169
199
-**`openclaw update` fails with `--container`:** Expected. Rebuild/pull the image, then restart the container or the Quadlet service.
170
200
-**Quadlet service does not start:** Run `systemctl --user daemon-reload`, then `systemctl --user start openclaw.service`. On headless systems you may also need `sudo loginctl enable-linger "$(whoami)"`.
0 commit comments