openclaw - 💡(How to fix) Fix openclaw status packaged CLI misses bundled runtime deps before loading channel status modules [2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#75340Fetched 2026-05-01 05:34:58
View on GitHub
Comments
2
Participants
3
Timeline
3
Reactions
2
Author
Timeline (top)
commented ×2cross-referenced ×1

After upgrading from 2026.4.27 to 2026.4.29, the gateway and channels were running, and bundled runtime deps were installed under the managed runtime-deps root, but plain openclaw status --usage emitted false missing-module warnings and showed an empty Channels table.

The missing packages were present under:

~/.openclaw/plugin-runtime-deps/openclaw-2026.4.29-4eca5026e977/node_modules

Examples verified present:

grammy
discord-api-types
@slack/web-api
nostr-tools

Error Message

Running:

Root Cause

After upgrading from 2026.4.27 to 2026.4.29, the gateway and channels were running, and bundled runtime deps were installed under the managed runtime-deps root, but plain openclaw status --usage emitted false missing-module warnings and showed an empty Channels table.

The missing packages were present under:

~/.openclaw/plugin-runtime-deps/openclaw-2026.4.29-4eca5026e977/node_modules

Examples verified present:

grammy
discord-api-types
@slack/web-api
nostr-tools

Fix Action

Fix / Workaround

Local workaround applied

A local wrapper now prepends the latest matching runtime-deps path for the installed OpenClaw version to NODE_PATH before delegating to the packaged launcher.

Additionally, fast status was locally patched so normal status table building uses setup-runtime fallback instead of only doing so under live/deep channel checks.

Relevant local patch behavior:

Code Example

~/.openclaw/plugin-runtime-deps/openclaw-2026.4.29-4eca5026e977/node_modules

---

grammy
discord-api-types
@slack/web-api
nostr-tools

---

openclaw status --usage

---

[channels] failed to load bundled channel discord: Cannot find module 'discord-api-types/v10'
[channels] failed to load bundled channel nostr: Cannot find module 'nostr-tools'
[channels] failed to load bundled channel slack: Cannot find module '@slack/web-api'
[channels] failed to load bundled channel telegram: Cannot find module 'grammy'

---

NODE_PATH="$HOME/.openclaw/plugin-runtime-deps/openclaw-2026.4.29-4eca5026e977/node_modules" openclaw status --usage

---

Gateway reachable.
- BlueBubbles default: enabled, configured, running, connected
- Discord default: enabled, configured, running, connected
- Telegram default: enabled, configured, running, connected, mode:polling
- WhatsApp default: enabled, configured, not linked

---

find ~/.openclaw/plugin-runtime-deps -maxdepth 1 -type d -name "openclaw-<version>-*"
export NODE_PATH="<latest>/node_modules:$NODE_PATH"
exec /usr/bin/node /usr/lib/node_modules/openclaw/openclaw.mjs "$@"
RAW_BUFFERClick to expand / collapse

Environment

  • OpenClaw: 2026.4.29 (a448042)
  • Install mode: global packaged install (/usr/lib/node_modules/openclaw, npm/pnpm update path)
  • OS: Ubuntu/Linux 6.8.0-110-generic x64
  • Node: v22.22.2
  • Gateway: systemd user service, app reports 2026.4.29

Summary

After upgrading from 2026.4.27 to 2026.4.29, the gateway and channels were running, and bundled runtime deps were installed under the managed runtime-deps root, but plain openclaw status --usage emitted false missing-module warnings and showed an empty Channels table.

The missing packages were present under:

~/.openclaw/plugin-runtime-deps/openclaw-2026.4.29-4eca5026e977/node_modules

Examples verified present:

grammy
discord-api-types
@slack/web-api
nostr-tools

Observed behavior

Running:

openclaw status --usage

printed warnings like:

[channels] failed to load bundled channel discord: Cannot find module 'discord-api-types/v10'
[channels] failed to load bundled channel nostr: Cannot find module 'nostr-tools'
[channels] failed to load bundled channel slack: Cannot find module '@slack/web-api'
[channels] failed to load bundled channel telegram: Cannot find module 'grammy'

The same command then rendered an empty Channels table, even though channels were configured and the gateway was running.

Expected behavior

Packaged CLI status should register the active bundled runtime-deps node_modules path before loading bundled channel status/setup modules, or otherwise use the same runtime-deps preparation path as gateway startup / deep status paths.

openclaw status --usage should show configured channel rows without requiring a manually exported NODE_PATH or openclaw status --deep.

Evidence / diagnosis

Manual module resolution succeeded when the managed runtime-deps path was included:

NODE_PATH="$HOME/.openclaw/plugin-runtime-deps/openclaw-2026.4.29-4eca5026e977/node_modules" openclaw status --usage

With that NODE_PATH, missing-module warnings disappeared.

openclaw channels status also showed the gateway and channels were healthy:

Gateway reachable.
- BlueBubbles default: enabled, configured, running, connected
- Discord default: enabled, configured, running, connected
- Telegram default: enabled, configured, running, connected, mode:polling
- WhatsApp default: enabled, configured, not linked

Local workaround applied

A local wrapper now prepends the latest matching runtime-deps path for the installed OpenClaw version to NODE_PATH before delegating to the packaged launcher.

Additionally, fast status was locally patched so normal status table building uses setup-runtime fallback instead of only doing so under live/deep channel checks.

Relevant local patch behavior:

find ~/.openclaw/plugin-runtime-deps -maxdepth 1 -type d -name "openclaw-<version>-*"
export NODE_PATH="<latest>/node_modules:$NODE_PATH"
exec /usr/bin/node /usr/lib/node_modules/openclaw/openclaw.mjs "$@"

Suggested fix

In packaged CLI startup or status scan initialization:

  1. Resolve the installed package version.
  2. Locate the active managed bundled runtime-deps root for that version.
  3. Register its node_modules path before loading bundled channel status/setup modules.
  4. Ensure fast openclaw status can build configured channel rows without requiring --deep.

The existing bundled runtime-deps helpers appear to already know how to register runtime-deps paths (registerBundledRuntimeDependencyNodePath / related logic), but the fast status path seems to load channel modules before that path is available.

Impact

  • False scary warnings after upgrade.
  • Empty Channels table in normal openclaw status --usage.
  • Can make a healthy gateway look partially broken.
  • Workaround is local and upgrade-fragile unless patched upstream.

extent analysis

TL;DR

The issue can be fixed by registering the managed bundled runtime-deps node_modules path before loading bundled channel status/setup modules in the packaged CLI startup or status scan initialization.

Guidance

  • Verify that the registerBundledRuntimeDependencyNodePath function is being called before loading channel modules in the fast status path.
  • Check if the NODE_PATH environment variable is being set correctly to include the managed runtime-deps node_modules path.
  • Ensure that the packaged CLI startup or status scan initialization is resolving the installed package version and locating the active managed bundled runtime-deps root correctly.
  • Test the fix by running openclaw status --usage without setting NODE_PATH manually to see if the Channels table is populated correctly.

Example

A possible code snippet to register the node_modules path could be:

const runtimeDepPath = getManagedRuntimeDepPath();
process.env.NODE_PATH = `${runtimeDepPath}/node_modules:${process.env.NODE_PATH}`;

However, this is just a suggestion and may not be the exact solution.

Notes

The issue seems to be related to the order of operations in the packaged CLI startup or status scan initialization. The fix should ensure that the node_modules path is registered before loading channel modules.

Recommendation

Apply the suggested fix by modifying the packaged CLI startup or status scan initialization to register the managed bundled runtime-deps node_modules path before loading bundled channel status/setup modules. This should resolve the issue without requiring a manual workaround.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Packaged CLI status should register the active bundled runtime-deps node_modules path before loading bundled channel status/setup modules, or otherwise use the same runtime-deps preparation path as gateway startup / deep status paths.

openclaw status --usage should show configured channel rows without requiring a manually exported NODE_PATH or openclaw status --deep.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix openclaw status packaged CLI misses bundled runtime deps before loading channel status modules [2 comments, 3 participants]