Skip to content

[Bug]: Global installation via Bun results in 404 Not Found on native Dashboard URL (Port 18789) #39693

@OnlyXianzo

Description

@OnlyXianzo

Bug type

Regression (worked before, now fails)

Summary

Bug: Global installation via Bun results in 404 Not Found on native Dashboard URL (Port 18789)

Description:
When installing OpenClaw globally using the bun package manager, the core gateway server starts successfully, but the internal HTTP server fails to serve the static Control UI assets. Accessing the root Dashboard URL (http://127.0.0.1:18789/) returns a raw 404 Not Found text instead of loading the graphical interface.

Environment:

  • OS: Linux Mint (x64)
  • Node.js Version: 24.14.0
  • Package Manager: Bun (Global Install)
  • OpenClaw Version: 2026.3.7

Steps to Reproduce:

  1. Install OpenClaw globally: bun install -g openclaw
  2. Run initial configuration and set gateway mode to local: openclaw setup -> openclaw config set gateway.mode local
  3. Start the gateway in the foreground: openclaw gateway run
  4. Attempt to access the native Control UI via openclaw dashboard or by manually navigating to http://127.0.0.1:18789/.

Expected Behavior:
The built-in static HTTP server should successfully locate and serve the OpenClaw Control UI files on the root path /.

Actual Behavior:
The browser returns a raw HTTP 404 Not Found. The backend WebSocket server successfully initializes and listens on port 18789, but the internal HTTP server seemingly fails to resolve the path to the frontend assets when the application is installed globally via bun (execution path: /home/user/.bun/install/global/...).

Additional Context & Workarounds:

  • Fetching and running the decoupled UI via npx openclaw-studio@latest or bunx openclaw-studio works perfectly. The standalone Studio successfully connects to the local gateway at ws://127.0.0.1:18789.
  • The issue strictly isolates to the native HTTP server failing to map the bundled UI files from the global bun installation directory.

Steps to reproduce

  1. Install OpenClaw globally using Bun: bun install -g openclaw.
  2. Initialize setup and set gateway mode to local: openclaw setup followed by openclaw config set gateway.mode local.
  3. Start the gateway in the foreground: openclaw gateway run.
  4. Access the dashboard via openclaw dashboard or by manually navigating to http://127.0.0.1:18789.

Expected behavior

The built-in HTTP server should correctly resolve the path to the Control UI assets and serve the dashboard at the root URL (/).

Actual behavior

The browser displays a raw "Not Found" error. While logs confirm the gateway is listening on port 18789, the internal server fails to serve static frontend files when installed via a global Bun path.

OpenClaw version

2026.3.7

Operating system

Linux Mint 22 (x64)

Install method

bun global

Logs, screenshots, and evidence

{"0":"{\"subsystem\":\"gateway/ws\"}","1":"\u001b[93m⇄\u001b[39m \u001b[1mres\u001b[22m \u001b[92m✓\u001b[39m \u001b[1mconfig.set\u001b[22m \u001b[2m126ms\u001b[22m \u001b[2mconn\u001b[22m=\u001b[90m3e3f97db…010a\u001b[39m \u001b[2mid\u001b[22m=\u001b[90m48\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/ws\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:45.953Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:45.954+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change detected; evaluating reload (meta.lastTouchedAt, agents.list)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:46.458Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:46.458+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change applied (dynamic reads: meta.lastTouchedAt, agents.list)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:46.461Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:46.462+05:30"}
{"0":"Config overwrite: /home/shlok/.openclaw/openclaw.json (sha256 01d94ceb4fdd76057dede11608118bc14b4018a380f5dd545a00babe84650cef -> ed16753671182fd66f4a9232457ad1cd0e147ae78e6e0de4714fc9d96ddd73a2, backup=/home/shlok/.openclaw/openclaw.json.bak)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-03-08T09:25:46.660Z","logLevelId":4,"logLevelName":"WARN","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:264:46","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:264","fileColumn":"46","fileLine":"264","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:264","method":"console.warn"}},"time":"2026-03-08T14:55:46.660+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change detected; evaluating reload (meta.lastTouchedAt)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:47.173Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:47.173+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change applied (dynamic reads: meta.lastTouchedAt)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:47.176Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:47.177+05:30"}
{"0":"Config overwrite: /home/shlok/.openclaw/openclaw.json (sha256 ed16753671182fd66f4a9232457ad1cd0e147ae78e6e0de4714fc9d96ddd73a2 -> bdfdb2b13726aaabbf0a3790e671db210607f885b7db3e1106faee42ff53eb98, backup=/home/shlok/.openclaw/openclaw.json.bak)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-03-08T09:25:47.405Z","logLevelId":4,"logLevelName":"WARN","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:264:46","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:264","fileColumn":"46","fileLine":"264","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:264","method":"console.warn"}},"time":"2026-03-08T14:55:47.407+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change detected; evaluating reload (meta.lastTouchedAt)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:47.922Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:47.923+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change applied (dynamic reads: meta.lastTouchedAt)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:47.932Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:47.933+05:30"}
{"0":"Config overwrite: /home/shlok/.openclaw/openclaw.json (sha256 bdfdb2b13726aaabbf0a3790e671db210607f885b7db3e1106faee42ff53eb98 -> 3a58263f249cb5f7a9908409614eea4dd4f39265457c38a6d98b7643ef42c779, backup=/home/shlok/.openclaw/openclaw.json.bak)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-03-08T09:25:48.307Z","logLevelId":4,"logLevelName":"WARN","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:264:46","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:264","fileColumn":"46","fileLine":"264","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:264","method":"console.warn"}},"time":"2026-03-08T14:55:48.309+05:30"}
{"0":"{\"subsystem\":\"gateway/ws\"}","1":"\u001b[93m⇄\u001b[39m \u001b[1mres\u001b[22m \u001b[92m✓\u001b[39m \u001b[1mconfig.set\u001b[22m \u001b[2m75ms\u001b[22m \u001b[2mconn\u001b[22m=\u001b[90m3e3f97db…010a\u001b[39m \u001b[2mid\u001b[22m=\u001b[90m81\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/ws\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:48.328Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:48.329+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change detected; evaluating reload (meta.lastTouchedAt)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:48.831Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:48.832+05:30"}
{"0":"{\"subsystem\":\"gateway/reload\"}","1":"config change applied (dynamic reads: meta.lastTouchedAt)","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/reload\"}","parentNames":["openclaw"],"date":"2026-03-08T09:25:48.837Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:55:48.839+05:30"}
{"0":"{\"subsystem\":\"gateway/ws\"}","1":"\u001b[93m⇄\u001b[39m \u001b[1mres\u001b[22m \u001b[92m✓\u001b[39m \u001b[1magents.files.get\u001b[22m \u001b[2m53ms\u001b[22m \u001b[2mconn\u001b[22m=\u001b[90m3e3f97db…010a\u001b[39m \u001b[2mid\u001b[22m=\u001b[90m98\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway/ws\"}","parentNames":["openclaw"],"date":"2026-03-08T09:29:36.263Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T14:59:36.270+05:30"}
{"0":"{\"subsystem\":\"gateway\"}","1":"signal SIGINT received","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway\"}","parentNames":["openclaw"],"date":"2026-03-08T09:30:51.869Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T15:00:51.870+05:30"}
{"0":"{\"subsystem\":\"gateway\"}","1":"received SIGINT; shutting down","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gateway\"}","parentNames":["openclaw"],"date":"2026-03-08T09:30:51.892Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T15:00:51.895+05:30"}
{"0":"{\"subsystem\":\"gmail-watcher\"}","1":"gmail watcher stopped","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"{\"subsystem\":\"gmail-watcher\"}","parentNames":["openclaw"],"date":"2026-03-08T09:30:52.148Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/shlok/.bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431:14","fileName":"subsystem-Cf9yS0UI.js","fileNameWithLine":"subsystem-Cf9yS0UI.js:431","fileColumn":"14","fileLine":"431","filePath":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js","filePathWithLine":".bun/install/global/node_modules/openclaw/dist/subsystem-Cf9yS0UI.js:431","method":"logToFile"}},"time":"2026-03-08T15:00:52.148+05:30"}

Impact and severity

Affected users: All users installing via global Bun on Linux.
Severity: High (Blocks access to the native web dashboard).
Frequency: 100% repro.
Consequence: Users are forced to use standalone Studio as the native dashboard route is unreachable.

Additional information

The backend WebSocket server initializes correctly, and running the decoupled UI via npx openclaw-studio@latest works as a temporary workaround. This confirms the issue is isolated to the native HTTP asset serving path in global Bun environments.

openclaw-2026-03-08.log

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingregressionBehavior that previously worked and now fails

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions