docs/install/installer.md
OpenClaw ships three installer scripts, served from openclaw.ai.
| Script | Platform | What it does |
|---|---|---|
install.sh | macOS / Linux / WSL | Installs Node if needed, installs OpenClaw via npm (default) or git, and can run onboarding. |
install-cli.sh | macOS / Linux / WSL | Installs Node + OpenClaw into a local prefix (~/.openclaw) with npm or git checkout modes. No root required. |
install.ps1 | Windows (PowerShell) | Installs Node if needed, installs OpenClaw via npm (default) or git, and can run onboarding. |
```bash
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --help
```
```bash
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install-cli.sh | bash -s -- --help
```
```powershell
& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -Tag beta -NoOnboard -DryRun
```
<a id="installsh"></a>
If run inside an OpenClaw checkout (package.json + pnpm-workspace.yaml), the script offers:
git), ornpm)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.
| Flag | Description |
|---|---|
--install-method npm|git | Choose install method (default: npm). Alias: --method |
--npm | Shortcut for npm method |
--git | Shortcut for git method. Alias: --github |
--version <version|dist-tag|spec> | npm version, dist-tag, or package spec (default: latest) |
--beta | Use beta dist-tag if available, else fallback to latest |
--git-dir <path> | Checkout directory (default: ~/openclaw). Alias: --dir |
--no-git-update | Skip git pull for existing checkout |
--no-prompt | Disable prompts |
--no-onboard | Skip onboarding |
--onboard | Enable onboarding |
--dry-run | Print actions without applying changes |
--verbose | Enable debug output (set -x, npm notice-level logs) |
--help | Show usage (-h) |
| Variable | Description |
|---|---|
OPENCLAW_INSTALL_METHOD=git|npm | Install method |
OPENCLAW_VERSION=latest|next|main|<semver>|<spec> | npm version, dist-tag, or package spec |
OPENCLAW_BETA=0|1 | Use beta if available |
OPENCLAW_GIT_DIR=<path> | Checkout directory |
OPENCLAW_GIT_UPDATE=0|1 | Toggle git updates |
OPENCLAW_NO_PROMPT=1 | Disable prompts |
OPENCLAW_NO_ONBOARD=1 | Skip onboarding |
OPENCLAW_DRY_RUN=1 | Dry run mode |
OPENCLAW_VERBOSE=1 | Debug mode |
OPENCLAW_NPM_LOGLEVEL=error|warn|notice | npm log level |
SHARP_IGNORE_GLOBAL_LIBVIPS=0|1 | Control sharp/libvips behavior (default: 1) |
<a id="install-clish"></a>
| Flag | Description |
|---|---|
--prefix <path> | Install prefix (default: ~/.openclaw) |
--install-method npm|git | Choose install method (default: npm). Alias: --method |
--npm | Shortcut for npm method |
--git, --github | Shortcut for git method |
--git-dir <path> | Git checkout directory (default: ~/openclaw). Alias: --dir |
--version <ver> | OpenClaw version or dist-tag (default: latest) |
--node-version <ver> | Node version (default: 22.22.0) |
--json | Emit NDJSON events |
--onboard | Run openclaw onboard after install |
--no-onboard | Skip onboarding (default) |
--set-npm-prefix | On Linux, force npm prefix to ~/.npm-global if current prefix is not writable |
--help | Show usage (-h) |
| Variable | Description |
|---|---|
OPENCLAW_PREFIX=<path> | Install prefix |
OPENCLAW_INSTALL_METHOD=git|npm | Install method |
OPENCLAW_VERSION=<ver> | OpenClaw version or dist-tag |
OPENCLAW_NODE_VERSION=<ver> | Node version |
OPENCLAW_GIT_DIR=<path> | Git checkout directory for git installs |
OPENCLAW_GIT_UPDATE=0|1 | Toggle git updates for existing checkouts |
OPENCLAW_NO_ONBOARD=1 | Skip onboarding |
OPENCLAW_NPM_LOGLEVEL=error|warn|notice | npm log level |
SHARP_IGNORE_GLOBAL_LIBVIPS=0|1 | Control sharp/libvips behavior (default: 1) |
<a id="installps1"></a>
| Flag | Description |
|---|---|
-InstallMethod npm|git | Install method (default: npm) |
-Tag <tag|version|spec> | npm dist-tag, version, or package spec (default: latest) |
-GitDir <path> | Checkout directory (default: %USERPROFILE%\openclaw) |
-NoOnboard | Skip onboarding |
-NoGitUpdate | Skip git pull |
-DryRun | Print actions only |
| Variable | Description |
|---|---|
OPENCLAW_INSTALL_METHOD=git|npm | Install method |
OPENCLAW_GIT_DIR=<path> | Checkout directory |
OPENCLAW_NO_ONBOARD=1 | Skip onboarding |
OPENCLAW_GIT_UPDATE=0 | Disable git pull |
OPENCLAW_DRY_RUN=1 | Dry run mode |
Use non-interactive flags/env vars for predictable runs.
<Tabs> <Tab title="install.sh (non-interactive npm)"> ```bash curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --no-prompt --no-onboard ``` </Tab> <Tab title="install.sh (non-interactive git)"> ```bash OPENCLAW_INSTALL_METHOD=git OPENCLAW_NO_PROMPT=1 \ curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash ``` </Tab> <Tab title="install-cli.sh (JSON)"> ```bash curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install-cli.sh | bash -s -- --json --prefix /opt/openclaw ``` </Tab> <Tab title="install.ps1 (skip onboarding)"> ```powershell & ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard ``` </Tab> </Tabs>```bash
SHARP_IGNORE_GLOBAL_LIBVIPS=0 curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
```
```powershell
Set-PSDebug -Trace 1
& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard
Set-PSDebug -Trace 0
```