* feat(deploy): add experimental Cloudflare template * fix(deploy): keep container SSH debug access opt-in * fix(deploy): satisfy scripts tsgo lane and model wrangler entrypoint in knip * fix(deploy): model wrangler-consumed exports and isolated dependency in knip The Worker default export and Durable Object class are instantiated by wrangler from wrangler.jsonc, and @cloudflare/containers lives in the template's isolated package.json — modeled per the deadcode checks' own guidance rather than root-manifest changes. * docs(deploy): align SSH bootstrap flow with the disabled-by-default policy
7.3 KiB
summary, read_when, title
| summary | read_when | title | |||
|---|---|---|---|---|---|
| Install OpenClaw - installer script, npm/pnpm/bun, from source, Docker, and more |
|
Install |
System requirements
- Node 22.22.3+, 24.15+, or 25.9+ - Node 26 is the recommended default; the installer script provisions it automatically when Node is missing.
- 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.
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:
```bash npm install -g openclaw@latest openclaw onboard --install-daemon ```<Note>
npm 12 blocks package lifecycle scripts by default, so the command above
skips OpenClaw's `preinstall` and `postinstall` steps — npm reports them
as `blocked because they are not covered by allowScripts`. Allow them
explicitly:
```bash
npm install -g openclaw@latest --allow-scripts openclaw
```
npm 11.16.x only warns that the scripts are `not yet covered by
allowScripts` and still runs them. If you want to clear that warning, be
aware that the `npm approve-scripts openclaw` command it suggests does not
work for a global install — it fails with `ENOMATCH No installed packages
match: openclaw`. npm 11.12 and earlier have no such policy.
</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>
```bash
pnpm add -g --allow-build=openclaw openclaw@latest
openclaw onboard --install-daemon
```
<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>
```bash
bun add -g openclaw@latest
openclaw onboard --install-daemon
```
<Note>
Bun can install the global package, but the resulting `openclaw` executable requires a supported Node runtime because OpenClaw state uses `node:sqlite`.
</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
pnpm install && pnpm build && pnpm ui:build
pnpm link --global
openclaw onboard --install-daemon
Or skip the link 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
Containerized or headless deployments. Rootless container alternative to Docker. Declarative install via Nix flake. Automated fleet provisioning. Optional dependency installer and package-script runner.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
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. Pick a provider. Shared Docker steps. K8s deployment.Update, migrate, or uninstall
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?