#Issue after update
1 messages · Page 1 of 1 (latest)
Yep — openslaw is just a typo, but the real issue is this:
Cannot find module '@slack/web-api'
That usually means a bundled plugin runtime dependency went missing after update.
Run this exact sequence:
openclaw --version
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
doctor --fix is specifically meant to repair missing bundled runtime deps.
If it still fails with the same module error, do a clean global reinstall, then rerun doctor:
pnpm add -g openclaw@latest
openclaw doctor --fix
openclaw gateway restart
Docs:
If any step errors, paste the output and I’ll walk it with you.
primas@primas ~ % pnpm add -g openclaw@latest
WARN 3 deprecated subdependencies found: basic-ftp@5.1.0, glob@10.5.0, node-domexception@1.0.0
Packages: -1
Progress: resolved 618, reused 550, downloaded 0, added 0, done
Done in 3.2s using pnpm v10.33.0
primas@primas ~ % openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module '@slack/web-api'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/dist/client-C5Kf086m.js
at Module.resolveFilename (node:internal/modules/cjs/loader:1455:15)
at require.resolve (node:internal/modules/helpers:163:19)
at jitiResolve (/Users/primas/Library/pnpm/global/5/.pnpm/jiti@2.6.1/node_modules/jiti/dist/jiti.cjs:1:148703)
at jitiRequire (/Users/primas/Library/pnpm/global/5/.pnpm/jiti@2.6.1/node_modules/jiti/dist/jiti.cjs:1:150290)
at /Users/primas/Library/pnpm/global/5/.pnpm/jiti@2.6.1/node_modules/jiti/dist/jiti.cjs:1:157987
at /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/dist/client-C5Kf086m.js:1:370
at eval_evalModule (/Users/primas/Library/pnpm/global/5/.pnpm/jiti@2.6.1/node_modules/jiti/dist/jiti.cjs:1:155533)
at jitiRequire (/Users/primas/Library/pnpm/global/5/.pnpm/jiti@2.6.1/node_modules/jiti/dist/jiti.cjs:1:150967)
at /Users/primas/Library/pnpm/global/5/.pnpm/jiti@2.6.1/node_modules/jiti/dist/jiti.cjs:1:157987
at /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/dist/channel-cVxfXBcu.js:48:23
Got it — thanks for the output.
This is a broken bundled-runtime-deps state, and in your case the CLI dies before doctor --fix can run.
Let’s do a manual repair first:
# 1) Go to the installed OpenClaw package dir
cd "$(pnpm root -g)/openclaw"
# 2) Re-run bundled plugin runtime dependency installer
node scripts/postinstall-bundled-plugins.mjs
# 3) Quick check that Slack dep now resolves
node -e "console.log(require.resolve('@slack/web-api/package.json'))"
# 4) Now doctor + restart
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If step 3 still fails, do this fallback, then rerun steps 3–4:
pnpm add -g @slack/web-api@^7
Also check this env var isn’t disabling the postinstall flow:
echo "$OPENCLAW_DISABLE_BUNDLED_PLUGIN_POSTINSTALL"
If it prints a value, unset it (unset OPENCLAW_DISABLE_BUNDLED_PLUGIN_POSTINSTALL) and repeat the manual postinstall step.
Docs:
If it still breaks, paste the outputs from steps 2 and 3 and I’ll go one level deeper.
primas@primas openclaw % openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module '@buape/carbon'
Nice catch — the @buape/carbon error confirms this is a broken bundled-deps install (not your config).
Let’s do a clean repair in one go:
# 0) make sure pnpm is allowed to run postinstall scripts
pnpm config get ignore-scripts
# if that prints "true", run:
pnpm config set ignore-scripts false
# 1) hard reinstall OpenClaw globally
pnpm remove -g openclaw
pnpm store prune
pnpm add -g openclaw@2026.4.5 --force
# 2) manually run bundled plugin dep installer (important)
cd "$(pnpm root -g)/openclaw"
node scripts/postinstall-bundled-plugins.mjs
# 3) verify both previously-missing deps resolve
node -e "require.resolve('@slack/web-api/package.json'); require.resolve('@buape/carbon/package.json'); console.log('bundled deps OK')"
# 4) now run normal repair/startup commands
openclaw doctor --fix
openclaw --version
openclaw gateway restart
openclaw gateway status
If step 3 still fails, paste exactly that output — then we’ll target the package root directly with an npm install --no-save ... workaround.
(And yeah, this smells like a packaging/runtime-deps bug in 2026.4.5.)
[postinstall] installed bundled plugin deps: @buape/carbon@0.14.0, @larksuiteoapi/node-sdk@^1.60.0
primas@primas openclaw % openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module '@buape/carbon'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw/dist/ui-7MjYF8PY.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1455:15)
at require.resolve (node:internal/modules/helpers:163:19)
Perfect, this explains it.
You likely ran the postinstall in an openclaw folder that is not the global install used by your openclaw binary.
So it installed deps, just in the wrong place.
Run this exactly (it forces the repair in the real global path):
# 1) go to the actual global OpenClaw package dir
GLOBAL_OPENCLAW_DIR="$(pnpm root -g)/openclaw"
cd "$GLOBAL_OPENCLAW_DIR"
pwd
# should be something like: /Users/primas/Library/pnpm/global/5/node_modules/openclaw
# 2) run bundled deps repair there
node scripts/postinstall-bundled-plugins.mjs
# 3) install exact required versions from bundled plugin manifests (belt + suspenders)
CARBON_VER=$(node -p "require('./dist/extensions/discord/package.json').dependencies['@buape/carbon']")
SLACK_VER=$(node -p "require('./dist/extensions/slack/package.json').dependencies['@slack/web-api']")
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps "@buape/carbon@${CARBON_VER}" "@slack/web-api@${SLACK_VER}"
# 4) verify both resolve in THIS install
node -e "console.log(require.resolve('@buape/carbon/package.json')); console.log(require.resolve('@slack/web-api/package.json'))"
# 5) retry
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If step 4 fails, paste that exact output + pwd and I’ll give you a one-line surgical fix for that exact install path.
To address all issues (including breaking changes), run:
npm audit fix --force
Run npm audit for details.
primas@primas openclaw % openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module '@larksuiteoapi/node-sdk'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama
Great datapoint. Also: ignore the npm audit fix --force suggestion — that’s not the fix here.
You’re in a half-installed global package state, and openclaw is loading from the .pnpm/...canvas@0.1.97... tree.
Run this exact repair against that exact install root:
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_*/node_modules/openclaw
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps \
@slack/web-api @buape/carbon @larksuiteoapi/node-sdk
node scripts/postinstall-bundled-plugins.mjs
node -e "['@slack/web-api','@buape/carbon','@larksuiteoapi/node-sdk'].forEach(m=>console.log(m,'->',require.resolve(m+'/package.json')))"
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If that still throws missing-module, paste only these two outputs:
pwd(right after thecd)- the
node -e ...require.resolve...output
Then I’ll give you a one-liner for the exact active tree.
node:internal/modules/cjs/loader:1458
throw err;
^
Error: Cannot find module '@buape/carbon/package.json'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw/[eval]
at Module.resolveFilename (node:internal/modules/cjs/loader:1455:15)
at require.resolve (node:internal/modules/helpers:163:19)
at [eval]:1:100
at Array.forEach (<anonymous>)
at [eval]:1:62
at runScriptInThisContext (node:internal/vm:219:10)
at node:internal/process/execution:451:12
at [eval]-wrapper:6:24
at runScriptInContext (node:internal/process/execution:449:60)
at evalFunction (node:internal/process/execution:283:30) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw/[eval]'
]
}
Boom, we found it. You’re repairing .97, but your actual openclaw command is still running from .96.
From your stack trace, the active tree is:
...openclaw@2026.4.5_@napi-rs+canvas@0.1.96.../node_modules/openclaw
So patch that exact one:
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps \
@slack/web-api @buape/carbon @larksuiteoapi/node-sdk
node scripts/postinstall-bundled-plugins.mjs
node -e "['@slack/web-api','@buape/carbon','@larksuiteoapi/node-sdk'].forEach(m=>console.log(m,'->',require.resolve(m+'/package.json')))"
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
After it’s working, run this once so we can clean up the dual-install weirdness:
which -a openclaw
(And yep: do not run npm audit fix --force for this issue.)
primas@primas openclaw % node -e "['@slack/web-api','@buape/carbon','@larksuiteoapi/node-sdk'].forEach(m=>console.log(m,'->',require.resolve(m+'/package.json')))"
@slack/web-api -> /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/node_modules/@slack/web-api/package.json
node:internal/modules/cjs/loader:1458
throw err;
^
Error: Cannot find module '@buape/carbon/package.json'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/[eval]
at Module.resolveFilename (node:internal/modules/cjs/loader:1455:15)
at require.resolve (node:internal/modules/helpers:163:19)
at [eval]:1:100
at Array.forEach (<anonymous>)
at [eval]:1:62
at runScriptInThisContext (node:internal/vm:219:10)
at node:internal/process/execution:451:12
at [eval]-wrapper:6:24
at runScriptInContext (node:internal/process/execution:449:60)
at evalFunction (node:internal/process/execution:283:30) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/[eval]'
]
}
Node.js v25.6.1
Perfect — now we’re down to one concrete miss in the active tree: @buape/carbon.
Run this in that same .96 directory:
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps \
@buape/carbon@0.14.0 @larksuiteoapi/node-sdk@^1.60.0
node -e "for (const m of ['@slack/web-api','@buape/carbon','@larksuiteoapi/node-sdk']) { try { console.log(m,'->',require.resolve(m+'/package.json')) } catch { console.log('MISSING',m) } }"
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If the verify line still prints MISSING @buape/carbon, paste the exact npm install ... output (that’s the key bit now).
primas@primas openclaw % openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module '@buape/carbon'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw/dist/ui-7MjYF8PY.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1455:15)
at require.resolve (node:internal/modules/helpers:163:19)
Yeah, this is bouncing between .96 and .97, so let’s stop chasing one-by-one and patch all installed 2026.4.5 trees at once.
Copy/paste this whole block:
BASE="$HOME/Library/pnpm/global/5/.pnpm"
for d in "$BASE"/openclaw@2026.4.5_*/node_modules/openclaw; do
[ -d "$d" ] || continue
echo "== patching: $d"
(
cd "$d" || exit 1
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps \
@slack/web-api @buape/carbon @larksuiteoapi/node-sdk
node scripts/postinstall-bundled-plugins.mjs
)
done
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
This should handle whichever tree the shim is actually hitting.
If it still fails, send:
which -a openclaw
ls -l "$(which openclaw)"
and we’ll fix the shim target directly.
primas@primas openclaw %
primas@primas openclaw %
primas@primas openclaw %
primas@primas openclaw % BASE="$HOME/Library/pnpm/global/5/.pnpm"
for d in "$BASE"/openclaw@2026.4.5_*/node_modules/openclaw; do
[ -d "$d" ] || continue
echo "== patching: $d"
(
cd "$d" || exit 1
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps \
@slack/web-api @buape/carbon @larksuiteoapi/node-sdk
node scripts/postinstall-bundled-plugins.mjs
)
for>
for>
Yep — you’re stuck in zsh continuation mode (for>), because the loop wasn’t closed with done.
- Press Ctrl+C now to exit that prompt.
- Paste this complete block (includes
done):
BASE="$HOME/Library/pnpm/global/5/.pnpm"
for d in "$BASE"/openclaw@2026.4.5_*/node_modules/openclaw; do
[ -d "$d" ] || continue
echo "== patching: $d"
(
cd "$d" || exit 1
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps \
@slack/web-api @buape/carbon @larksuiteoapi/node-sdk
node scripts/postinstall-bundled-plugins.mjs
)
done
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If anything errors, paste from the first == patching: line onward.
for>
primas@primas openclaw % clear
primas@primas openclaw % BASE="$HOME/Library/pnpm/global/5/.pnpm"
for d in "$BASE"/openclaw@2026.4.5_*/node_modules/openclaw; do
[ -d "$d" ] || continue
echo "== patching: $d"
(
cd "$d" || exit 1
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps \
@slack/web-api @buape/carbon @larksuiteoapi/node-sdk
node scripts/postinstall-bundled-plugins.mjs
for subsh>
for subsh>
You’re super close — you’re just entering an unfinished subshell (for subsh>).
Let’s avoid loops entirely.
- Press Ctrl+C to exit that prompt.
- Run these single-line commands exactly:
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps @slack/web-api @buape/carbon @larksuiteoapi/node-sdk
node scripts/postinstall-bundled-plugins.mjs
node -e "for (const m of ['@slack/web-api','@buape/carbon','@larksuiteoapi/node-sdk']) { try { console.log(m,'->',require.resolve(m+'/package.json')) } catch { console.log('MISSING',m) } }"
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
No loops, no multiline blocks, no \ line continuations.
If anything fails, paste that one failing command + output.
added 9 packages, and audited 526 packages in 11s
90 packages are looking for funding
run `npm fund` for details
2 high severity vulnerabilities
To address all issues, run:
npm audit fix
Run `npm audit` for details.
[postinstall] installed bundled plugin deps: @aws-sdk/client-s3@3.1023.0, @aws-sdk/s3-request-presigner@3.1023.0, @aws/bedrock-token-generator@^1.1.0, @clawdbot/lobster@2026.1.24, @discordjs/voice@^0.19.2, @grammyjs/runner@^2.0.3, @grammyjs/transformer-throttler@^1.2.1, @lancedb/lancedb@^0.27.2, @microsoft/teams.api@2.0.6, @microsoft/teams.apps@2.0.6, @opentelemetry/api@^1.9.1, @opentelemetry/api-logs@^0.214.0, @opentelemetry/exporter-logs-otlp-proto@^0.214.0, @opentelemetry/exporter-metrics-otlp-proto@^0.214.0, @opentelemetry/exporter-trace-otlp-proto@^0.214.0, @opentelemetry/resources@^2.6.1, @opentelemetry/sdk-logs@^0.214.0, @opentelemetry/sdk-metrics@^2.6.1, @opentelemetry/sdk-node@^0.214.0, @opentelemetry/sdk-trace-base@^2.6.1, @opentelemetry/semantic-conventions@^1.40.0, @pierre/diffs@1.1.10, @pierre/theme@0.0.29, @slack/bolt@^4.6.0, @tloncorp/tlon-skill@0.3.2, @twurple/api@^8.1.3, @twurple/auth@^8.1.3, @twurple/chat@^8.1.3, @urbit/aura@^3.0.0, @whiskeysockets/baileys@7.0.0-rc.9, discord-api-types@^0.38.44, fake-indexeddb@^6.2.5, grammy@^1.41.1, https-proxy-agent@^9.0.0, jimp@^1.6.0, mpg123-decoder@^1.0.3, music-metadata@^11.12.3, nostr-tools@^2.23.3, openai@^6.33.0, opusscript@^0.1.1, silk-wasm@^3.7.1, zca-js@2.1.2
@slack/web-api -> /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/node_modules/@slack/web-api/package.json
MISSING @buape/carbon
MISSING @larksuiteoapi/node-sdk
primas@primas openclaw %
primas@primas openclaw %
primas@primas openclaw %
Nice progress — that output is actually useful.
One correction: checking require.resolve('<pkg>/package.json') can be a false negative (some packages hide that path via exports).
Let’s do a real module check + explicit install:
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps @buape/carbon@0.14.0 @larksuiteoapi/node-sdk@1.60.0
node -e "for (const m of ['@slack/web-api','@buape/carbon','@larksuiteoapi/node-sdk']) { try { console.log('OK', m, '->', require.resolve(m)) } catch (e) { console.log('MISS', m, e.code) } }"
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If openclaw doctor --fix then errors from the .97 path, run the same 3 first commands in the .97 directory too:
...canvas@0.1.97.../node_modules/openclaw
We’re basically there; this should clear it.
primas@primas openclaw % node -e "for (const m of ['@slack/web-api','@buape/carbon','@larksuiteoapi/node-sdk']) { try { console.log('OK', m, '->', require.resolve(m)) } catch (e) { console.log('MISS', m, e.code) } }"
MISS @slack/web-api MODULE_NOT_FOUND
MISS @buape/carbon ERR_PACKAGE_PATH_NOT_EXPORTED
OK @larksuiteoapi/node-sdk -> /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/node_modules/@larksuiteoapi/node-sdk/lib/index.js
primas@primas openclaw %
Great, that output cracked it.
@slack/web-apiis truly missing.@buape/carbonis installed but wrong shape/version for this build (ERR_PACKAGE_PATH_NOT_EXPORTED).
Let’s install the exact versions this OpenClaw build expects (from its own bundled plugin manifests):
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw
CARBON_VER=$(node -p "require('./dist/extensions/discord/package.json').dependencies['@buape/carbon']")
SLACK_VER=$(node -p "require('./dist/extensions/slack/package.json').dependencies['@slack/web-api']")
echo "CARBON_VER=$CARBON_VER"
echo "SLACK_VER=$SLACK_VER"
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps --force "@buape/carbon@$CARBON_VER" "@slack/web-api@$SLACK_VER"
node -e "try{console.log('slack ->', require.resolve('@slack/web-api'))}catch(e){console.log('slack FAIL', e.code)}; try{console.log('carbon ->', require.resolve('@buape/carbon'))}catch(e){console.log('carbon FAIL', e.code)}"
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If doctor then complains from the .97 tree, run the same commands there too (same path, just canvas@0.1.97).
primas@primas openclaw % cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw
CARBON_VER=$(node -p "require('./dist/extensions/discord/package.json').dependencies['@buape/carbon']")
SLACK_VER=$(node -p "require('./dist/extensions/slack/package.json').dependencies['@slack/web-api']")
echo "CARBON_VER=$CARBON_VER"
echo "SLACK_VER=$SLACK_VER"
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps --force "@buape/carbon@$CARBON_VER" "@slack/web-api@$SLACK_VER"
CARBON_VER=0.14.0
SLACK_VER=^7.15.0
npm warn using --force Recommended protections disabled.
added 9 packages, removed 6 packages, and audited 520 packages in 1s
90 packages are looking for funding
run npm fund for details
2 high severity vulnerabilities
To address all issues (including breaking changes), run:
npm audit fix --force
Run npm audit for details.
primas@primas openclaw % node -e "try{console.log('slack ->', require.resolve('@slack/web-api'))}catch(e){console.log('slack FAIL', e.code)}; try{console.log('carbon ->', require.resolve('@buape/carbon'))}catch(e){console.log('carbon FAIL', e.code)}"
slack -> /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.96_node-llama-cpp@3.18.1/node_modules/openclaw/node_modules/@slack/web-api/dist/index.js
carbon FAIL ERR_PACKAGE_PATH_NOT_EXPORTED
primas@primas openclaw %
This is the key clue: you’re on Node v25.6.1 (from your earlier output), and these Carbon exports are import-only.
At this point, the clean fix is: switch to Node 22 LTS, then reinstall OpenClaw fresh once.
Do this:
# if you use nvm:
nvm install 22
nvm use 22
hash -r
node -v
# should now be v22.x
pnpm remove -g openclaw
pnpm add -g openclaw@2026.4.5 --force
openclaw --version
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If you’re not on nvm, tell me how Node was installed (which node + node -v) and I’ll give the exact Node-22 switch command for your setup.
(And yep: still ignore npm audit fix --force for this issue.)
nvm not found
Got it — no nvm. Let’s do Node 22 via Homebrew (mac-safe path).
Run these:
brew install node@22
export PATH="$(brew --prefix node@22)/bin:$PATH"
hash -r
node -v
which node
node -v should show v22.x.
Then reinstall OpenClaw under that Node:
pnpm remove -g openclaw
pnpm add -g openclaw@2026.4.5 --force
openclaw --version
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If brew is not installed, say that and I’ll give you the no-brew Node 22 path.
primas@primas openclaw % openclaw --version
OpenClaw 2026.4.5 (3e72c03)
primas@primas openclaw %
primas@primas openclaw %
primas@primas openclaw %
primas@primas openclaw %
primas@primas openclaw % openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module '@buape/carbon'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw/dist/ui-7MjYF8PY.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1383:15)
at Function.resolve (node:internal/modules/helpers:157:19)
at jitiResolve (/Users/primas/Library/pnpm/global/5/.pnpm/jiti@2.6.1/node_modules/jiti/dist/jiti.cjs:1:148703)
Nice — this is now very specific.
openclaw doctor --fix is loading from the 0.1.97 tree, and that tree is missing @buape/carbon.
Run this exact set (single-line commands):
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw
npm install --omit=dev --no-save --package-lock=false --ignore-scripts --legacy-peer-deps @buape/carbon@0.14.0 @slack/web-api@^7.15.0 @larksuiteoapi/node-sdk@1.60.0
npm ls @buape/carbon @slack/web-api @larksuiteoapi/node-sdk --depth=0
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If npm ls ... shows all 3 present but doctor still fails, paste just the npm ls output + the new doctor error and I’ll give the final shim fix.
To address all issues (including breaking changes), run:
npm audit fix --force
Run npm audit for details.
openclaw@2026.4.5 /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw
├── @buape/carbon@0.14.0 extraneous
├── @larksuiteoapi/node-sdk@1.60.0 extraneous
└── @slack/web-api@7.15.0 extraneous
primas@primas openclaw % openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module 'grammy'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw/dist/allowed-updates-CPeb0arL.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1383:15)
at Function.resolve (node:internal/modules/helpers:157:19)
at jitiResolve (/Users/primas/Library/pnpm/global/5/.pnpm/
Perfect, we finally have the real signal:
Now it fails on grammy, which means the .97 tree still doesn’t have the full bundled runtime deps set.
Run this in the .97 install root:
cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw
node scripts/postinstall-bundled-plugins.mjs
npm ls grammy @slack/web-api @buape/carbon @larksuiteoapi/node-sdk --depth=0
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
node scripts/postinstall-bundled-plugins.mjs is the key step now (it should pull grammy and the rest in one go).
And yep, still ignore npm audit fix --force for this case.
bash-3.2$
bash-3.2$ cd /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw
bash-3.2$ node scripts/postinstall-bundled-plugins.mjs
bash-3.2$ npm ls grammy @slack/web-api @buape/carbon @larksuiteoapi/node-sdk --depth=0
bash-3.2$ openclaw doctor --fix
[openclaw] Failed to start CLI: Error: Cannot find module '@buape/carbon'
Require stack:
- /Users/primas/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_@napi-rs+canvas@0.1.97_node-llama-cpp@3.18.1/node_modules/openclaw/dist/ui-7MjYF8PY.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1383:15)
at Function.resolve (node:internal/modules/helpers:157:19)
At this point, let’s stop patching the broken global package tree.
You already have an openclaw source checkout (primas@primas openclaw %), so use that directly as a clean workaround.
Run this from your repo root:
cd ~/openclaw
pnpm install
pnpm build
pnpm ui:build
pnpm openclaw doctor --fix
pnpm openclaw gateway restart
pnpm openclaw gateway status
This bypasses the corrupted global pnpm install paths entirely.
If this works, you can use pnpm openclaw ... for now.
And this definitely looks like a packaging bug in 2026.4.5 — please file it here with your error traces: https://github.com/openclaw/openclaw/issues
I don't build from source though
Totally fair — if you don’t want source builds, let’s do the clean non-source workaround:
Roll back to last stable package before this regression (2026.4.2)
pnpm remove -g openclaw
# remove only old global OpenClaw package trees (so .96/.97 stop fighting)
rm -rf "$HOME/Library/pnpm/global/5/node_modules/openclaw"
rm -rf "$HOME/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_"*
pnpm add -g openclaw@2026.4.2 --force
cd "$(pnpm root -g)/openclaw"
node scripts/postinstall-bundled-plugins.mjs
openclaw --version
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If you want, once you’re unblocked on 2026.4.2, you can stay there until a fixed 2026.4.5+ ships.
And this is definitely issue-worthy: https://github.com/openclaw/openclaw/issues
Last login: Sun Apr 5 12:47:12 on ttys003
primas@primas openclaw % pnpm remove -g openclaw
dyld[57337]: Library not loaded: /opt/homebrew/opt/simdjson/lib/libsimdjson.29.dylib
Referenced from: <C109A2D5-5157-3549-AC5B-4147AA906449> /opt/homebrew/Cellar/node/25.6.1/bin/node
Reason: tried: '/opt/homebrew/opt/simdjson/lib/libsimdjson.29.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/simdjson/lib/libsimdjson.29.dylib' (no such file), '/opt/homebrew/opt/simdjson/lib/libsimdjson.29.dylib' (no such file), '/opt/homebrew/Cellar/simdjson/4.6.1/lib/libsimdjson.29.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/simdjson/4.6.1/lib/libsimdjson.29.dylib' (no such file), '/opt/homebrew/Cellar/simdjson/4.6.1/lib/libsimdjson.29.dylib' (no such file)
zsh: abort pnpm remove -g openclaw
primas@primas openclaw %
Nice catch — this is now a Homebrew Node runtime break, not OpenClaw directly.
pnpm is crashing because your Node binary links to a missing simdjson dylib.
Fix base runtime first:
brew reinstall simdjson
brew install node@22
export PATH="$(brew --prefix node@22)/bin:$PATH"
hash -r
node -v
corepack enable
corepack prepare pnpm@10 --activate
pnpm -v
Once node and pnpm work again, continue with the non-source rollback:
pnpm remove -g openclaw
rm -rf "$HOME/Library/pnpm/global/5/node_modules/openclaw"
rm -rf "$HOME/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_"*
pnpm add -g openclaw@2026.4.2 --force
openclaw --version
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If brew reinstall simdjson errors, paste that output and I’ll give the exact brew repair sequence.
primas@primas openclaw %
primas@primas openclaw % export PATH="$(brew --prefix node@22)/bin:$PATH"
hash -r
node -v
corepack enable
corepack prepare pnpm@10 --activate
pnpm -v
v22.22.2
Preparing pnpm@10 for immediate activation...
10.33.0
primas@primas openclaw %
Perfect — that’s exactly what we needed. ✅
Node/pnpm are healthy now.
Now run the cleanup + rollback block:
pnpm remove -g openclaw
rm -rf "$HOME/Library/pnpm/global/5/node_modules/openclaw"
rm -rf "$HOME/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_"*
pnpm add -g openclaw@2026.4.2 --force
openclaw --version
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
Optional (to keep Node 22 after new terminals):
echo 'export PATH="$(brew --prefix node@22)/bin:$PATH"' >> ~/.zshrc
If any command errors, paste that exact chunk and I’ll finish it with you.
rm -rf "$HOME/Library/pnpm/global/5/node_modules/openclaw"
rm -rf "$HOME/Library/pnpm/global/5/.pnpm/openclaw@2026.4.5_"*
pnpm add -g openclaw@2026.4.2 --force
openclaw --version
Packages: -475
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Progress: resolved 128, reused 109, downloaded 0, added 0, done
/Users/primas/Library/pnpm/global/5:
- openclaw 2026.4.5
Done in 407ms using pnpm v10.33.0
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
node:internal/bootstrap/switches/does_own_process_state:142
cachedCwd = rawMethods.cwd();
^
Error: ENOENT: no such file or directory, uv_cwd
at process.wrappedCwd (node:internal/bootstrap/switches/does_own_process_state:142:28)
at process.cwd (/Users/primas/Library/pnpm/.tools/pnpm/10.33.0_tmp_41348_0/node_modules/pnpm/dist/pnpm.cjs:1339:23)
at process.cwd (/Users/primas/Library/pnpm/.tools/pnpm/10.33.0_tmp_41348_0/node_modules/pnpm/dist/pnpm.cjs:3560:23)
at ../node_modules/.pnpm/get-source@2.0.12/node_modules/get-source/impl/path.js (/Users/primas/Library/pnpm/.tools/pnpm/10.33.0_tmp_41348_0/node_modules/pnpm/dist/pnpm.cjs:35363:58)
Yep — that uv_cwd / getcwd error means you deleted the directory you were currently inside (you were in the global openclaw folder when removing it). Easy fix.
Run:
cd ~
pwd
Then reinstall and continue:
pnpm add -g openclaw@2026.4.2 --force
openclaw --version
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
You’re actually close now — this is just a broken current-working-directory state from the cleanup.
Doctor works
Ends with this though
Invalid config:
- channels.bluebubbles: Unrecognized key: "network"
│
Huge progress — now it’s just a config schema mismatch.
channels.bluebubbles.network is no longer a valid key.
Remove it, then rerun doctor:
openclaw config unset channels.bluebubbles.network
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If you were using that old key to point to your BlueBubbles server, use:
channels.bluebubbles.serverUrlchannels.bluebubbles.password
Docs: https://docs.openclaw.ai/channels/bluebubbles
If the restart is clean after this, you’re done. 🎉
primas@primas ~ % openclaw config unset channels.bluebubbles.network
Invalid config at /Users/primas/.openclaw/openclaw.json:\n- channels.bluebubbles: Unrecognized key: "network"
🦞 OpenClaw 2026.4.2 (d74a122) — You had me at 'openclaw gateway start.'
Config invalid
File: ~/.openclaw/openclaw.json
Problem:
- channels.bluebubbles: Unrecognized key: "network"
Run: openclaw doctor --fix
primas@primas ~ %
Yep — now the CLI is refusing to load before it can run config unset, so we need one manual file edit.
Do this:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
nano ~/.openclaw/openclaw.json
In nano, find the channels.bluebubbles section and delete the network entry (or full network: { ... } block), then save and exit:
- save:
Ctrl+O, Enter - exit:
Ctrl+X
Then run:
openclaw doctor --fix
openclaw gateway restart
openclaw gateway status
If you want, paste just the channels.bluebubbles block here and I’ll mark the exact lines to delete.
I want to remove all bluebubbles functionality
Perfect — if you want BlueBubbles gone entirely, do this:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
nano ~/.openclaw/openclaw.json
Inside the file, delete all BlueBubbles config blocks, especially:
channels.bluebubbles: { ... }← remove whole block- any
plugins.entries.bluebubbles: { ... }block (if present)
Quick way to find them in nano: Ctrl+W, type bluebubbles.
Save/exit (Ctrl+O, Enter, Ctrl+X), then run: