Skip to main content

Installer internals

OpenClaw ships three installer scripts, served from openclaw.ai.
ScriptPlatformWhat it does
install.shmacOS / Linux / WSLInstalls Node if needed, installs OpenClaw via npm (default) or git, and can run onboarding.
install-cli.shmacOS / Linux / WSLInstalls Node + OpenClaw into a local prefix (~/.openclaw). No root required.
install.ps1Windows (PowerShell)Installs Node if needed, installs OpenClaw via npm (default) or git, and can run onboarding.

Quick commands

curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --help
If install succeeds but openclaw is not found in a new terminal, see Node.js troubleshooting.

install.sh

Recommended for most interactive installs on macOS/Linux/WSL.

Flow (install.sh)

1

Detect OS

Supports macOS and Linux (including WSL). If macOS is detected, installs Homebrew if missing.
2

Ensure Node.js 24 by default

Checks Node version and installs Node 24 if needed (Homebrew on macOS, NodeSource setup scripts on Linux apt/dnf/yum). OpenClaw still supports Node 22 LTS, currently 22.14+, for compatibility.
3

Ensure Git

Installs Git if missing.
4

Install OpenClaw

  • npm method (default): global npm install - git method: clone/update repo, install deps with pnpm, build, then install wrapper at ~/.local/bin/openclaw
5

Post-install tasks

  • Runs openclaw doctor --non-interactive on upgrades and git installs (best effort) - Attempts onboarding when appropriate (TTY available, onboarding not disabled, and bootstrap/config checks pass) - Defaults SHARP_IGNORE_GLOBAL_LIBVIPS=1

Source checkout detection

If run inside an OpenClaw checkout (package.json + pnpm-workspace.yaml), the script offers:
  • use checkout (git), or
  • use global install (npm)
If no TTY is available and no install method is set, it defaults to npm and warns. The script exits with code 2 for invalid method selection or invalid --install-method values.

Examples (install.sh)

bash curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash

Troubleshooting

Git is required for git install method. For npm installs, Git is still checked/installed to avoid spawn git ENOENT failures when dependencies use git URLs.
Some Linux setups point npm global prefix to root-owned paths. install.sh can switch prefix to ~/.npm-global and append PATH exports to shell rc files (when those files exist).
The scripts default SHARP_IGNORE_GLOBAL_LIBVIPS=1 to avoid sharp building against system libvips. To override:
SHARP_IGNORE_GLOBAL_LIBVIPS=0 curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
Install Git for Windows, reopen PowerShell, rerun installer.
Run npm config get prefix and add that directory to your user PATH (no \bin suffix needed on Windows), then reopen PowerShell.
install.ps1 does not currently expose a -Verbose switch. Use PowerShell tracing for script-level diagnostics:
Set-PSDebug -Trace 1
& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard
Set-PSDebug -Trace 0
Usually a PATH issue. See Node.js troubleshooting.

This page is sourced from openclaw/openclaw.
Last modified on March 27, 2026