Fixing "Control UI assets not found" in OpenClaw 2026.3.22
TL;DR โ Quick Fix
The v2026.3.22 npm package accidentally omitted the dist/control-ui/ folder; restore it by extracting the assets from the v2026.3.13 tarball.
Run DiagnosticsNext Step
Fix now, then reduce repeat incidents
If this issue keeps coming back, validate your setup in Doctor first, then harden your config.
Error Signal
Control UI assets not found. Build them with `pnpm ui:build`What's Happening
If you recently updated to OpenClaw 2026.3.22, you might be seeing a 503 error when trying to access the dashboard. The gateway logs will show: "Control UI assets not found. Build them with pnpm ui:build..." This happens because the release package is missing the necessary frontend files.
The Fix
You don't need to rebuild from source. The easiest way to fix this is to pull the missing files from the last stable version (2026.3.13). Run these commands in your terminal to restore the directory:
cd /tmp && npm pack [email protected]
tar -xzf openclaw-2026.3.13.tgz package/dist/control-ui/
cp -r /tmp/package/dist/control-ui $(npm prefix -g)/lib/node_modules/openclaw/dist/
openclaw gateway restart
If you're on a custom path, use npm prefix -g to verify where your global node modules are installed. Once the folder is back in place, your dashboard will load correctly.
Why This Occurs
The 2026.3.22 package was missing the dist/control-ui/ directory due to a packaging oversight. npm pack --dry-run shows that the required static assets (HTML, JS, and CSS) were left out of the bundle. Additionally, some users have noted that the WhatsApp extension is also missing from dist/extensions/ in this same release. The team is aware of these packaging issues and a patch is expected shortly.
Prevention
While you can't prevent packaging errors upstream, you can verify your local installation integrity using npm pack --dry-run against the installed files if you suspect an update has broken your environment. If you rely on stable production environments, consider pinning your version in your package.json to avoid picking up broken patch releases until they've been vetted by the community.
Last Updated: March 2026
Did this guide solve your problem?