From fe6b78ab5cc4f02eb9878f021e6f8927142a2eef Mon Sep 17 00:00:00 2001 From: "openclaw-docs-sync[bot]" Date: Sun, 26 Apr 2026 10:31:11 +0000 Subject: [PATCH] chore(sync): mirror docs from openclaw/openclaw@74a4ff1adcf795b32d00619ccadf1c111bd1701e --- .openclaw-sync/source.json | 4 ++-- docs/cli/plugins.md | 6 ++++++ docs/install/docker.md | 39 ++++++++++++++++++++++---------------- docs/tools/plugin.md | 10 ++++++++++ 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index be151a637..d9408926a 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "8a52c7b3d91faef5b23608cf2dfafddd4934808d", - "syncedAt": "2026-04-26T10:29:18.944Z" + "sha": "74a4ff1adcf795b32d00619ccadf1c111bd1701e", + "syncedAt": "2026-04-26T10:29:44.569Z" } diff --git a/docs/cli/plugins.md b/docs/cli/plugins.md index b7014fdb7..d6365037d 100644 --- a/docs/cli/plugins.md +++ b/docs/cli/plugins.md @@ -194,6 +194,12 @@ openclaw plugins list --json `plugins list` reads the persisted local plugin registry first, with a manifest-only derived fallback when the registry is missing or invalid. It is useful for checking whether a plugin is installed, enabled, and visible to cold startup planning, but it is not a live runtime probe of an already-running Gateway process. After changing plugin code, enablement, hook policy, or `plugins.load.paths`, restart the Gateway that serves the channel before expecting new `register(api)` code or hooks to run. For remote/container deployments, verify you are restarting the actual `openclaw gateway run` child, not only a wrapper process. +For bundled plugin work inside a packaged Docker image, bind-mount the plugin +source directory over the matching packaged source path, such as +`/app/extensions/synology-chat`. OpenClaw will discover that mounted source +overlay before `/app/dist/extensions/synology-chat`; a plain copied source +directory remains inert so normal packaged installs still use compiled dist. + For runtime hook debugging: - `openclaw plugins inspect --json` shows registered hooks and diagnostics from a module-loaded inspection pass. diff --git a/docs/install/docker.md b/docs/install/docker.md index 50dac2d69..24589c5e3 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -122,22 +122,29 @@ and setup-time config writes through `openclaw-gateway` with The setup script accepts these optional environment variables: -| Variable | Purpose | -| ------------------------------- | --------------------------------------------------------------- | -| `OPENCLAW_IMAGE` | Use a remote image instead of building locally | -| `OPENCLAW_DOCKER_APT_PACKAGES` | Install extra apt packages during build (space-separated) | -| `OPENCLAW_EXTENSIONS` | Pre-install plugin deps at build time (space-separated names) | -| `OPENCLAW_EXTRA_MOUNTS` | Extra host bind mounts (comma-separated `source:target[:opts]`) | -| `OPENCLAW_HOME_VOLUME` | Persist `/home/node` in a named Docker volume | -| `OPENCLAW_SANDBOX` | Opt in to sandbox bootstrap (`1`, `true`, `yes`, `on`) | -| `OPENCLAW_DOCKER_SOCKET` | Override Docker socket path | -| `OPENCLAW_DISABLE_BONJOUR` | Disable Bonjour/mDNS advertising (defaults to `1` for Docker) | -| `OTEL_EXPORTER_OTLP_ENDPOINT` | Shared OTLP/HTTP collector endpoint for OpenTelemetry export | -| `OTEL_EXPORTER_OTLP_*_ENDPOINT` | Signal-specific OTLP endpoints for traces, metrics, or logs | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | OTLP protocol override. Only `http/protobuf` is supported today | -| `OTEL_SERVICE_NAME` | Service name used for OpenTelemetry resources | -| `OTEL_SEMCONV_STABILITY_OPT_IN` | Opt in to latest experimental GenAI semantic attributes | -| `OPENCLAW_OTEL_PRELOADED` | Skip starting a second OpenTelemetry SDK when one is preloaded | +| Variable | Purpose | +| ------------------------------------------ | --------------------------------------------------------------- | +| `OPENCLAW_IMAGE` | Use a remote image instead of building locally | +| `OPENCLAW_DOCKER_APT_PACKAGES` | Install extra apt packages during build (space-separated) | +| `OPENCLAW_EXTENSIONS` | Pre-install plugin deps at build time (space-separated names) | +| `OPENCLAW_EXTRA_MOUNTS` | Extra host bind mounts (comma-separated `source:target[:opts]`) | +| `OPENCLAW_HOME_VOLUME` | Persist `/home/node` in a named Docker volume | +| `OPENCLAW_SANDBOX` | Opt in to sandbox bootstrap (`1`, `true`, `yes`, `on`) | +| `OPENCLAW_DOCKER_SOCKET` | Override Docker socket path | +| `OPENCLAW_DISABLE_BONJOUR` | Disable Bonjour/mDNS advertising (defaults to `1` for Docker) | +| `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS` | Disable bundled plugin source bind-mount overlays | +| `OTEL_EXPORTER_OTLP_ENDPOINT` | Shared OTLP/HTTP collector endpoint for OpenTelemetry export | +| `OTEL_EXPORTER_OTLP_*_ENDPOINT` | Signal-specific OTLP endpoints for traces, metrics, or logs | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | OTLP protocol override. Only `http/protobuf` is supported today | +| `OTEL_SERVICE_NAME` | Service name used for OpenTelemetry resources | +| `OTEL_SEMCONV_STABILITY_OPT_IN` | Opt in to latest experimental GenAI semantic attributes | +| `OPENCLAW_OTEL_PRELOADED` | Skip starting a second OpenTelemetry SDK when one is preloaded | + +Maintainers can test bundled plugin source against a packaged image by mounting +one plugin source directory over its packaged source path, for example +`OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro`. +That mounted source directory overrides the matching compiled +`/app/dist/extensions/synology-chat` bundle for the same plugin id. ### Observability diff --git a/docs/tools/plugin.md b/docs/tools/plugin.md index 4191b72ec..40dc4378d 100644 --- a/docs/tools/plugin.md +++ b/docs/tools/plugin.md @@ -224,6 +224,16 @@ OpenClaw scans for plugins in this order (first match wins): +Packaged installs and Docker images normally resolve bundled plugins from the +compiled `dist/extensions` tree. If a bundled plugin source directory is +bind-mounted over the matching packaged source path, for example +`/app/extensions/synology-chat`, OpenClaw treats that mounted source directory +as a bundled source overlay and discovers it before the packaged +`/app/dist/extensions/synology-chat` bundle. This keeps maintainer container +loops working without switching every bundled plugin back to TypeScript source. +Set `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1` to force packaged dist bundles +even when source overlay mounts are present. + ### Enablement rules - `plugins.enabled: false` disables all plugins