Runtimes
Bun
Bun remains usable as an optional package-script runner. The default package manager remains pnpm, which is fully supported and used by docs tooling. Bun cannot use pnpm-lock.yaml and ignores it, and current Bun versions fail to resolve this repo's pnpm-workspace.yaml layout during bun install, so dependency installs should use pnpm install.
Install
Install dependencies
pnpm installBun cannot resolve this repo's pnpm workspace layout, so bun install fails during workspace resolution. Use pnpm install.
Build and test
bun run buildbun run vitest runUse Node by default for commands that launch OpenClaw.
Run OpenClaw with Bun
To run onboarding under Bun and install the managed Gateway under Bun:
bun openclaw.mjs onboard --install-daemon --daemon-runtime bunFor a managed node host, select Bun separately:
bun openclaw.mjs node install --runtime bunLifecycle scripts
Bun blocks dependency lifecycle scripts unless explicitly trusted. For this repo, the commonly blocked scripts are not required:
baileyspreinstall: checks Node major >= 20 (OpenClaw requires Node 24.16+ or 26.1+, with Node 26 recommended)protobufjspostinstall: emits warnings about incompatible version schemes (no build artifacts)
If you hit a runtime issue that needs these scripts, trust them explicitly:
bun pm trust baileys protobufjsCaveats
On macOS, run brew install sqlite for native vector search. Bun 1.4.2 can retain SQLite handles and WAL/shared-memory files after close; use Node when prompt file release matters. See Bun compatibility for library selection, requirements, and limitations.
Some package scripts hardcode pnpm internally (for example check:docs, ui:*, protocol:check). Running them via bun run still shells out to pnpm, so just run those via pnpm directly.