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

    sh
    pnpm install

    Bun cannot resolve this repo's pnpm workspace layout, so bun install fails during workspace resolution. Use pnpm install.

  • Build and test

    sh
    bun run buildbun run vitest run

    Use Node by default for commands that launch OpenClaw.

  • Run OpenClaw with Bun

    To run onboarding under Bun and install the managed Gateway under Bun:

    sh
    bun openclaw.mjs onboard --install-daemon --daemon-runtime bun

    For a managed node host, select Bun separately:

    sh
    bun openclaw.mjs node install --runtime bun
  • Lifecycle scripts

    Bun blocks dependency lifecycle scripts unless explicitly trusted. For this repo, the commonly blocked scripts are not required:

    • baileys preinstall: checks Node major >= 20 (OpenClaw requires Node 24.16+ or 26.1+, with Node 26 recommended)
    • protobufjs postinstall: emits warnings about incompatible version schemes (no build artifacts)

    If you hit a runtime issue that needs these scripts, trust them explicitly:

    sh
    bun pm trust baileys protobufjs

    Caveats

    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.

    Was this useful?
    On this page

    On this page