Caricamento in corso...
Caricamento in corso...
Last synced: Today, 22:00
Technical reference for the OpenClaw framework. Real-time synchronization with the official documentation engine.
Use this file to discover all available pages before exploring further.
OpenClaw does not install every bundled plugin dependency tree at package install time. It first derives an effective plugin plan from config and plugin metadata, then stages runtime dependencies only for bundled OpenClaw-owned plugins that the plan can actually load.
This page covers packaged runtime dependencies for bundled OpenClaw plugins. Third-party plugins and custom plugin paths still use explicit plugin installation commands such as
openclaw plugins installopenclaw plugins updateOpenClaw owns the plan and policy:
The package manager owns dependency convergence:
node_modulesIn practice, OpenClaw should decide what needs to exist.
pnpmnpmOpenClaw also owns the per-install-root coordination lock. Package managers protect their own install transaction, but they do not serialize OpenClaw's manifest writes, isolated-stage copy/rename, final validation, or plugin import against another Gateway, doctor, or CLI process touching the same runtime dependency root.
The effective plugin plan is derived from config plus discovered plugin metadata. These inputs can activate bundled plugin runtime dependencies:
plugins.entries.<id>.enabledplugins.allowplugins.denyplugins.enabledchannels.telegram.enabledenabledByDefaultExplicit disablement wins. A disabled plugin, denied plugin id, disabled plugin system, or disabled channel does not trigger runtime dependency repair. Persisted auth state alone also does not activate a bundled channel or provider.
The plugin plan is the stable input. The generated dependency materialization is an output of that plan.
Gateway startup parses config and builds the startup plugin lookup table before plugin runtime modules are loaded. Startup then stages runtime dependencies only for the
startupPluginIdsFor packaged installs, dependency staging is allowed before plugin import. After staging, the runtime loader imports startup plugins with install repair disabled; at that point missing dependency materialization is treated as a load failure, not another repair loop.
When startup dependency staging is deferred behind the HTTP bind, Gateway readiness stays blocked on the
plugin-runtime-depsRuntime dependency repair should run when one of these is true:
openclaw doctor --fixopenclaw plugins deps --repairRuntime dependency repair should not run just because OpenClaw started. A normal startup with an unchanged plan and complete dependency materialization should skip package-manager work.
Commands that edit config, enable plugins, or repair doctor findings can enter plugin plan mode once, materialize the newly required bundled dependencies, then return to the normal command flow. Local
openclaw onboardopenclaw configureHot reload paths that can change active plugins must go back through plugin plan mode before loading plugin runtime. The reload should compare the new effective plugin plan with the previous one, stage missing dependencies for newly active bundled plugins, then load or restart the affected runtime.
If a config reload does not change the effective plugin plan, it should not repair bundled runtime dependencies.
OpenClaw writes a generated install manifest for the selected bundled runtime dependencies and runs the package manager in the runtime dependency install root. It prefers
pnpmnpmThe
pnpmbashpnpm install \ --prod \ --ignore-scripts \ --ignore-workspace \ --config.frozen-lockfile=false \ --config.minimum-release-age=0 \ --config.store-dir=<install-root>/.openclaw-pnpm-store \ --config.node-linker=hoisted \ --config.virtual-store-dir=.pnpm
The
npmAfter install, OpenClaw validates the staged dependency tree before making it visible to the runtime dependency root. Isolated staging is copied into the runtime dependency root and validated again.
The whole repair/materialization section is guarded by an install-root lock. Current lock owners record PID, process start-time when available, and creation time. Legacy locks without process start-time or creation-time evidence are only reclaimed by filesystem age, so recycled Docker PID 1 locks recover without expiring normal long-running current installs by age alone.
Packaged installs must not mutate read-only package directories. OpenClaw can read dependency roots from packaged layers, but writes generated runtime dependencies to a writable stage such as:
OPENCLAW_PLUGIN_STAGE_DIR$STATE_DIRECTORY~/.openclaw/plugin-runtime-deps/var/lib/openclaw/plugin-runtime-depsThe writable root is the final materialization target. Older read-only roots are kept as compatibility layers only when needed.
When a packaged OpenClaw update changes the versioned writable root but the selected bundled-plugin dependency plan is still satisfied by a previous staged root, repair reuses that previous
node_modulesUse
plugins depsbashopenclaw plugins deps openclaw plugins deps --json openclaw plugins deps --repair openclaw plugins deps --prune
Use doctor when the dependency state is part of broader install health:
bashopenclaw doctor openclaw doctor --fix
plugins depsIf a packaged install reports missing bundled runtime dependencies:
openclaw plugins deps --jsonopenclaw plugins deps --repairopenclaw doctor --fixOPENCLAW_PLUGIN_STAGE_DIRIn source checkouts, the workspace install usually provides bundled plugin dependencies. Run
pnpm install© 2024 TaskFlow Mirror
Powered by TaskFlow Sync Engine