How to install OpenClaw
The installer script, npm, pnpm, bun, source, Docker and the desktop apps
There are more ways to install OpenClaw than there are reasons to choose between them. The docs recommend one, the installer script, and list the rest for people who already manage Node, run containers, or want the desktop app instead of a terminal. Here is each method, what it needs, how to verify the install, and the one requirement that trips people first.
Requirements
- Node 24.16 or newer, or 26.1 or newer. The docs recommend 26, and the installer provisions it when Node is missing: 26 on macOS, 24 LTS on Linux.
- macOS, Linux or Windows; on Windows the choices are the Hub app, the PowerShell installer or a WSL2 Gateway.
- pnpm only if you build from source.
The methods
- Installer script, recommended: one curl line on macOS, Linux and WSL2, one PowerShell line on Windows. It detects the OS, installs Node if needed, installs OpenClaw and launches onboarding; a flag skips onboarding.
- Desktop apps: the signed Windows Hub installer, and the macOS menu bar app from the GitHub releases page as a dmg or zip. Both can provision a local Gateway on first run or connect to a remote one.
- Local prefix installer: keeps OpenClaw and Node under one directory without depending on a system-wide Node.
- npm, pnpm or bun, if you manage Node yourself; each needs a flag that allows OpenClaw’s package lifecycle scripts, and newer npm blocks them without it.
- From source with a local checkout, or straight from the GitHub main branch through the installer; Docker, Podman, Nix and Ansible have their own pages.
The npm note is the one worth reading before you type: npm 12 blocks unapproved lifecycle scripts by default, so the install needs an explicit allow flag, and the approve command npm suggests does not work for a global install. pnpm wants an allow-build flag on the global add. bun wants a trust flag, and bun 1.4 or newer can also run the CLI and the Gateway, although Node remains the primary runtime.
Node remains the primary runtime, so the plain openclaw executable keeps its Node shebang.
Verify, then keep it running
- Three commands: print the version, run doctor for config issues, check the Gateway status.
- Managed startup: a LaunchAgent on macOS, a systemd user service on Linux and WSL2, a Scheduled Task on native Windows with a Startup-folder fallback, installed by onboarding or by the gateway install command.
- If the command is not found after the install, the docs end with a section for exactly that case.
Which one
The script, unless you have a reason. The desktop app if you would rather not see a terminal. npm or pnpm if you already keep Node current and want to pin the version. Source if you contribute. the Windows guide weighs the three Windows paths, and OpenClaw on Docker explains what the container setup does and does not do.
Or none of them
Installing is the short part. OpenClaw setup, step by step walks the five steps after it, and Hosted OpenClaw on Diali is the version where the install, the service and the updates are done on an isolated instance and you begin at the first message.
- One script, or a desktop app; the rest are for people who know why.
- Node 24 or 26, and a flag for the package scripts if you install by hand.
- Verify with version, doctor and status; then install the service.
Stop reading about it, build one
Set up an agent, pick a channel, and have it working inside the app you already keep open.
