The Node requirement has changed nine times in 2026 and the reasons (the SQLite WAL-reset corruption floor and the separate node:sqlite TEXT NUL decoder bug) were buried in install prose; the Bun page's Caveats section had become the de facto Bun contract while sitting under Containers. - Add docs/install/node-compatibility.md: supported lines, why the floors exist, platform consequences, what each installer provisions, the guard diagnostic, and a sourced history of the requirement across releases. - Add docs/install/bun-compatibility.md: Bun requirements, per-platform SQLite builds, macOS library selection and OPENCLAW_SQLITE_LIBRARY with the preload migration, the memory scan fallback, known limitations, and release history. - Keep docs/install/node.md and docs/install/bun.md as install how-tos; move the contract paragraphs to the new pages and link them. - Add a Runtimes nav group (Node, Node compatibility, Bun, Bun compatibility) and move Bun out of Containers; no URLs change. - Point the environment reference, memory config, and install overview at the new pages; add zh-CN glossary entries; add a docs guide bullet to refresh the tables when the runtime floors in code change.
10 KiB
summary, read_when, title
| summary | read_when | title | ||||
|---|---|---|---|---|---|---|
| Install OpenClaw - desktop app downloads, installer script, npm/pnpm/bun, from source, Docker, and more |
|
Install |
System requirements
- Node 24.16+ or 26.1+ - Node 26 is recommended; the installer provisions Node 26 on macOS and Node 24 LTS on Linux when Node is missing (see Node.js compatibility).
- macOS, Linux, or Windows - Windows users can start with the native Windows Hub app, the PowerShell CLI installer, or a WSL2 Gateway. See Windows.
pnpmis only needed if you build from source.
Download the desktop app
Prefer a normal app download over the CLI? OpenClaw ships desktop companions:
- Windows: the Windows Hub companion app — a signed installer you download and run like any Windows app, with setup, tray status, chat, and node mode:
- macOS: the macOS menu bar app — download the
OpenClaw-<version>.dmg(preferred) or.zipasset from OpenClaw GitHub releases, then install and launch OpenClaw.app. See the macOS app page for details, including what to do when the newest release ships no macOS asset.
Both desktop apps can provision a local Gateway during first-run setup, or connect to an existing remote Gateway.
Recommended: installer script
The fastest way to install. It detects your OS, installs Node if needed, installs OpenClaw, and launches onboarding.
Windows desktop users can also install the native [Windows Hub](/platforms/windows#recommended-windows-hub) companion app, which includes setup, tray status, chat, node mode, and local MCP mode. ```bash curl -fsSL https://openclaw.ai/install.sh | bash ``` ```powershell iwr -useb https://openclaw.ai/install.ps1 | iex ```To install without running onboarding:
```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard ``` ```powershell & ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard ```For all flags and CI/automation options, see Installer internals.
Alternative install methods
Local prefix installer (install-cli.sh)
Use this when you want OpenClaw and Node kept under a local prefix such as
~/.openclaw, without depending on a system-wide Node install:
curl -fsSL https://openclaw.ai/install-cli.sh | bash
It supports npm installs by default, plus git-checkout installs under the same prefix flow. Full reference: Installer internals.
Already installed? Switch between package and git installs with
openclaw update --channel dev and openclaw update --channel stable. See
Updating.
npm, pnpm, or bun
If you already manage Node yourself:
On npm 12 or npm 11.16+:```bash
npm install -g openclaw@latest --allow-scripts=openclaw
openclaw onboard --install-daemon
```
On npm 11.15 and earlier, use the same command without
`--allow-scripts=openclaw`.
<Note>
npm 12 blocks unapproved package lifecycle scripts by default. The
`--allow-scripts=openclaw` option explicitly allows OpenClaw's `preinstall`
and `postinstall` steps; without it, npm reports them as `blocked because
they are not covered by allowScripts`.
npm 11.16 accepts the option but otherwise only warns that the scripts are
`not yet covered by allowScripts` and still runs them. npm 11.15 and earlier
have neither the policy nor the option, so their command must be unflagged.
The `npm approve-scripts openclaw`
command suggested by npm 11.16 does not work for a global install — it fails
with `ENOMATCH No installed packages match: openclaw`.
</Note>
<Note>
The hosted installer clears npm freshness filters such as `min-release-age`
for the OpenClaw package install. If you install manually with npm, your own
npm policy still applies.
</Note>
<Note>
pnpm requires explicit approval for packages with build scripts. `approve-builds -g` is not supported for global installs, so pass `--allow-build=openclaw` on the `pnpm add -g` command instead.
</Note>
<Note>
`--trust` allows OpenClaw's package lifecycle scripts for this install. Bun
1.4 or newer can also run OpenClaw's CLI, local agent, and Gateway. Node
remains the primary runtime, so the plain `openclaw` executable keeps its
Node shebang. `bun run --bun` forces the Bun runtime, while
`--daemon-runtime bun` installs the managed Gateway under Bun.
</Note>
From source
For contributors or anyone who wants to run from a local checkout:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
corepack enable
pnpm install && pnpm build && pnpm ui:build
pnpm add --global "openclaw@link:$PWD"
openclaw onboard --install-daemon
pnpm add --global "openclaw@link:$PWD" links the CLI to this checkout without changing its package files. If pnpm reports that its global bin directory is not on PATH, run pnpm setup, reopen your shell, and retry.
Corepack selects the exact pnpm version from package.json (currently pnpm 12).
If Corepack is unavailable, install that version explicitly with
npm install -g pnpm@12.3.4 --allow-scripts=pnpm@12.3.4; keep npm install scripts and optional dependencies
enabled so pnpm can provision its native executable.
Or skip the global install and use pnpm openclaw ... from inside the repo. See Setup for full development workflows.
Install from the GitHub main checkout
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --install-method git --version main
Containers and package managers
Automated fleet provisioning. Optional dependency installer and package-script runner. Containerized or headless deployments. Declarative install via Nix flake. Rootless container alternative to Docker.Verify the install
openclaw --version # confirm the CLI is available
openclaw doctor # check for config issues
openclaw gateway status # verify the Gateway is running
If you want managed startup after install:
- macOS: LaunchAgent via
openclaw onboard --install-daemonoropenclaw gateway install - Linux/WSL2: systemd user service via the same commands
- Native Windows: Scheduled Task first, with a per-user Startup-folder login item fallback if task creation is denied
Next: run onboarding and connect a channel
Run onboarding, install the Gateway service, and open the dashboard. Message your agent from Telegram, Discord, Slack, WhatsApp, and more.Hosting and deployment
Deploy OpenClaw on a cloud server or VPS. See Linux server for the full provider picker (DigitalOcean, Hetzner, Hostinger, Fly.io, GCP, Azure, Railway, Northflank, Oracle Cloud, Raspberry Pi, and more), deploy declaratively on Render, or try the experimental Cloudflare Containers template.
Experimental Worker + Container deployment. Shared Docker steps. K8s deployment. Isolated local or hosted macOS deployment. Managed Linux host with SSH-tunneled access. Pick a provider.Back up, update, migrate, or uninstall
Create, verify, and restore state archives. Keep OpenClaw up to date. Move to a new machine. Remove OpenClaw completely.Troubleshooting: openclaw not found
Almost always a PATH issue: npm's global bin directory isn't on your shell's PATH. See Node.js troubleshooting for the full fix, including the Windows path.
node -v # Node installed?
npm prefix -g # Where are global packages?
echo "$PATH" # Is the global bin dir in PATH?