Skip to content

How to Install OpenClaw on Mac, Windows, Linux or a Server

Use the installer script or a desktop app; after terminal onboarding, openclaw gateway install keeps the Gateway running. Skip the old clawdbot npm package.

•••13 min read•AI Tools
Install OpenClaw cover with three rising step blocks labeled Install, Onboard and Verify, and a note that OpenClaw was formerly Clawdbot and Moltbot

OpenClaw, the self-hosted AI assistant formerly called Clawdbot and then Moltbot, installs with one command or a desktop app. The installer script detects your operating system, installs Node.js if it's missing, installs OpenClaw and launches onboarding (OpenClaw install docs). As of September 24, 2026, these are the commands:

bash
# macOS, Linux or WSL2
curl -fsSL https://openclaw.ai/install.sh | bash
powershell
# Windows (PowerShell)
iwr -useb https://openclaw.ai/install.ps1 | iex

In onboarding, pick Quick start. It leaves the Gateway running in that terminal, so press Ctrl+C once the dashboard opens and run openclaw gateway install to turn it into a background service. openclaw gateway status should then report the Gateway listening on port 18789.

If you're following a Clawdbot tutorial from early 2026, skip its npm install -g clawdbot step. That package hasn't been updated since January 25, 2026. Install the current openclaw package instead.

Pick the install method that fits

Every method ends with the same Gateway: the always-on process that routes messages and keeps your chat apps connected (Gateway runbook). The methods differ in who manages Node.js and which machine the Gateway lives on. The official install page puts the install itself at about two minutes (openclaw.ai/install). Signing in to a model provider during onboarding can take longer.

If you…UseWhat to expect
Are fine with a terminal on macOS or LinuxInstaller scriptInstalls Node if needed, then starts onboarding
Use WindowsWindows Hub, PowerShell or WSL2Three supported paths; the Hub app needs no terminal
Would rather skip the terminal on macOS or LinuxDesktop appSets up the Gateway, chat and onboarding for you
Already manage Node yourself, for example with nvmnpm, pnpm or bunNeeds Node 24.16+ or 26.1+ before you start
Want the assistant to answer while your laptop is closedLinux server, VPS or Raspberry PiCLI install plus a systemd service
Want an isolated, throwaway environmentDockerNeeds Docker Compose v2
Only want to try it oncenpx openclaw@latestThe Gateway runs until you press Ctrl+C

System requirements: what you need before you install

RequirementAs of September 24, 2026
Operating systemmacOS 15 or later, Windows 10 or 11, or Linux (the Linux desktop app is x64 only)
Node.js24.16 or later on the 24.x line, or 26.1 or later; Node 26 is recommended
AI accessA Claude Code or Codex CLI login, or an API key from a model provider
pnpmOnly needed to build from source
Docker (optional)Docker Desktop or Docker Engine with Docker Compose v2

These come from the install docs, the official install page and getting started. The terminal installer runs on Debian, Ubuntu, Fedora, Arch and Raspberry Pi OS.

You usually don't need to install Node first. When it's missing, the installer script provisions Node 26 on macOS and Node 24 LTS on Linux. If you manage Node yourself, check node --version. Node 22 is too old, and Node 25 isn't supported either: the openclaw package declares >=24.16.0 <25 || >=26.1.0 (npm). Node 22.12 was the floor for the January 2026 clawdbot package, not for current OpenClaw releases.

The install docs don't set a general RAM minimum. The official figures that do exist are narrower. Docker needs at least 6 GB of RAM, but only when you build the image locally from source. The Raspberry Pi guide lists 1 GB of RAM, one CPU core, 500 MB of free disk and a 64-bit OS as its minimum, and recommends 2 GB or more. A small machine is enough because, with a cloud model provider, the model runs on the provider's servers and your machine only hosts the Gateway.

Phones can't host the Gateway. The Android and iPhone apps are companions that connect to a Gateway running somewhere else (more in the FAQ).

Install on macOS, Linux (including Ubuntu) or WSL2

The installer script is the method the docs recommend for terminal users. On Windows, set up WSL2 with systemd first (WSL2 steps), then run the same command inside your distro.

Run the installer script

bash
curl -fsSL https://openclaw.ai/install.sh | bash

On macOS, the first run may ask for your administrator password so it can install Homebrew.

To install without starting onboarding, for example over SSH or in a provisioning script, add --no-onboard and run onboarding when you're ready:

bash
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard
openclaw onboard --install-daemon

If you'd rather read the script before it runs, download it with curl -fsSL https://openclaw.ai/install.sh -o install.sh, open it, then run bash install.sh.

Finish onboarding

The installer opens the onboarding wizard (getting started):

  • Quick start looks for an existing Claude Code or Codex CLI login or a provider API key. It verifies what it finds with a real completion, saves the config and opens the web dashboard. If nothing it finds works, it switches to manual provider setup.
  • Custom setup walks through every guided option instead.

Change settings later with openclaw configure. openclaw onboard --classic opens the classic step-by-step wizard.

Keep the Gateway running

Quick start keeps the Gateway in the foreground, so it stops when you close the terminal. Press Ctrl+C and install it as a service. Your config stays saved.

bash
openclaw gateway install

This creates a LaunchAgent on macOS, a systemd user unit on Linux and WSL2, or a Scheduled Task on native Windows. If Windows denies task creation, OpenClaw falls back to a login item in your Startup folder. openclaw onboard --install-daemon does the same job during onboarding.

On a Linux machine you only reach over SSH, also enable lingering so the service keeps running after you log out (Gateway runbook):

bash
sudo loginctl enable-linger $(whoami)

Check that the install worked

Run these checks in order (install docs, getting started):

CommandA good resultIf it fails
openclaw --versionPrints a version number"command not found" almost always means npm's global bin folder isn't on your PATH
openclaw doctorReports no config problemsApply the fixes it suggests
openclaw gateway statusThe Gateway is running and listening on port 18789Run openclaw gateway install again, then see the port guide below
openclaw dashboardThe Control UI opens in your browserCheck openclaw gateway status first

Then type a message in the Control UI chat. An AI reply means your provider login or key works. Finally, restart the machine and run openclaw gateway status again. If the Gateway came back on its own, the service is set up correctly.

For a PATH problem, these three commands show where the chain breaks:

bash
node -v          # Is Node installed?
npm prefix -g    # Where do global packages go?
echo "$PATH"     # Is that bin folder on PATH?

When you can't tell which part is failing, run openclaw triage. It runs read-only health checks and writes a sanitized summary that it can hand to Claude Code, Codex CLI or the built-in OpenClaw agent. Nothing leaves your machine until you pick an agent, and secrets, tokens and raw logs stay out of the summary.

For specific symptoms, use OpenClaw Port Not Listening when the Gateway won't bind to port 18789, OpenClaw API key errors when onboarding can't verify your provider, and the OpenClaw error troubleshooting center for error codes.

Install on Windows

Windows has three supported paths (Windows docs). The January 2026 Clawdbot README strongly recommended WSL2 on Windows. Native Windows is now supported as well.

PathChoose it whenWhat it sets up
Windows Hub appYou want a desktop app with setup, tray status and chatAn app-owned WSL Gateway, configured for you
PowerShell installerYou want the CLI and Gateway directly in WindowsA native Gateway started by a Scheduled Task
WSL2You want the most Linux-compatible GatewayA systemd service inside your own distro

Windows Hub app

Windows Hub runs on Windows 10 20H2 or later and Windows 11. It installs without administrator rights and ships as signed x64 and ARM64 installers.

  1. Download OpenClawCompanion-Setup-x64.exe, or OpenClawCompanion-Setup-arm64.exe on an ARM PC, from the install page.
  2. Launch OpenClaw Companion from the Start menu. With no saved Gateway, setup opens.
  3. Choose Set up locally. The app creates its own OpenClawGateway WSL distro, installs the Gateway inside it and pairs itself. An existing Ubuntu distro isn't touched.
  4. When the tray icon turns green, open Command Center from the tray to confirm the connection.

Local setup relies on WSL. If it fails, the usual causes are WSL being disabled, virtualization being blocked, or a network failure while the Gateway package installs. The setup log is at %LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.txt.

PowerShell installer

powershell
iwr -useb https://openclaw.ai/install.ps1 | iex

From Command Prompt, the install page's version does the same job: powershell -c "irm https://openclaw.ai/install.ps1 | iex". To skip onboarding, run:

powershell
& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1 ))) -NoOnboard

After onboarding, openclaw gateway install registers a Scheduled Task named "OpenClaw Gateway". It starts the Gateway through a hidden wrapper, so the background Gateway doesn't open a visible console window. Check the result with:

powershell
openclaw --version
openclaw doctor
openclaw gateway status --json

WSL2

Install WSL from PowerShell:

powershell
wsl --install
# or pick a distro explicitly
wsl --install -d Ubuntu-24.04

Inside the distro, enable systemd so openclaw gateway install can create its service:

bash
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
[boot]
systemd=true
EOF

That command replaces any existing /etc/wsl.conf. If you already have one, add the [boot] section by hand instead. Restart WSL with wsl --shutdown in PowerShell, reopen the distro and run the Linux installer:

bash
curl -fsSL https://openclaw.ai/install.sh | bash
# after onboarding, press Ctrl+C if the Gateway is still in the foreground
openclaw gateway install
openclaw gateway status

To start the Gateway before anyone signs in to Windows, the Windows docs add lingering, the dbus-x11 package and a boot-time scheduled task.

Install the desktop app on macOS or Linux

The official install page marks the desktop app as the recommended option on each platform. It installs the Gateway, chat and setup for you, with no terminal needed (openclaw.ai/install).

macOS: download the app from the install page, or the OpenClaw-<version>.dmg file from GitHub releases. Install and launch OpenClaw.app. It can set up a local Gateway on first launch or connect to a Gateway you already run elsewhere.

Linux: download the x64 AppImage or .deb package. Install the .deb with sudo apt install ./OpenClaw-<version>-amd64.deb, or make the AppImage executable and run it. On first launch, choose Get started, then On this computer to install anything missing and start the Gateway as a systemd user service (Linux docs).

The AppImage needs glibc 2.35 or newer. Ubuntu 22.04 and Debian 12 qualify. RHEL 9 and Rocky Linux 9 ship glibc 2.34 and can't run it, so use a CLI install there. The AppImage also expects FUSE 2 (libfuse2, or libfuse2t64 on Ubuntu 24.04 and later). Without FUSE, start it with APPIMAGE_EXTRACT_AND_RUN=1.

Install with npm, pnpm or bun

Use this method if you already manage Node yourself. Check node --version first: you need 24.16 or later on the 24.x line, or 26.1 or later (install docs).

bash
# npm 12, or npm 11.16 and later
npm install -g openclaw@latest --allow-scripts=openclaw
openclaw onboard --install-daemon

npm 12 blocks unapproved install scripts by default. Without the flag, it reports OpenClaw's preinstall and postinstall steps as blocked. On npm 11.15 and earlier, drop --allow-scripts=openclaw, because those versions don't have the option. Check your version with npm --version. The npm approve-scripts openclaw command that npm 11.16 suggests fails for global installs with ENOMATCH.

For pnpm and bun:

bash
# pnpm
pnpm add -g --allow-build=openclaw openclaw@latest
openclaw onboard --install-daemon

# bun 1.4 or later
bun add -g --trust openclaw@latest
bun run --bun openclaw onboard --install-daemon --daemon-runtime bun

Node remains OpenClaw's primary runtime. The second bun command runs onboarding and the managed Gateway under Bun.

Everything in one folder. curl -fsSL https://openclaw.ai/install-cli.sh | bash keeps OpenClaw and its own copy of Node under a local prefix such as ~/.openclaw, and changes nothing else on macOS, Linux or WSL2. It skips onboarding, so run openclaw onboard --install-daemon afterwards.

From source. For contributors or anyone who wants to run a local checkout:

bash
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

If pnpm says its global bin directory isn't on PATH, run pnpm setup, reopen the shell and retry.

Try it once. npx openclaw@latest runs onboarding and a foreground Gateway without a global install (getting started). The Gateway stops when you press Ctrl+C, and your config stays saved for a proper install later.

Run OpenClaw 24/7 on a server, VPS or Raspberry Pi

A Gateway on a laptop only answers while the laptop is awake. For round-the-clock replies, run it on an always-on Linux host and reach it from your laptop or phone. The Gateway on that host owns your state and workspace, so back the host up regularly (Linux server guide).

You don't need a Mac mini for this. The official Linux server guide lists Azure, DigitalOcean, Fly.io, GCP, Hetzner, Hostinger, Northflank, Oracle Cloud, Railway, Render and Raspberry Pi, among others, and notes that AWS works too. A Mac only matters for macOS-only features such as iMessage, and the docs cover macOS VMs for that case.

Diagram of a laptop reaching an OpenClaw Gateway on a server through an SSH tunnel; the Gateway stays on loopback as a systemd user service and connects to chat apps and a cloud model provider

On a public VPS, decide how you'll administer the box before you install anything, for example through Tailscale or hardened SSH. Then install the CLI, run onboarding with the service, and enable lingering:

bash
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard
openclaw onboard --install-daemon
sudo loginctl enable-linger $(whoami)

On a headless machine, the Raspberry Pi guide recommends a provider API key over OAuth sign-in.

Keep the Gateway on loopback and reach the dashboard through an SSH tunnel. From your laptop:

bash
ssh user@your-server 'openclaw dashboard --no-open'   # prints the dashboard URL
ssh -N -L 18789:127.0.0.1:18789 user@your-server      # leave this running

Open the printed URL in your local browser, or open http://127.0.0.1:18789/ and sign in with the Gateway token (Linux docs, Raspberry Pi guide). If you bind the Gateway to your LAN or tailnet instead, OpenClaw requires a shared secret (gateway.auth.token or gateway.auth.password). On the server, openclaw gateway status and systemctl --user status openclaw-gateway.service confirm the service is up.

For a Raspberry Pi, the Raspberry Pi guide assumes 64-bit Raspberry Pi OS and a Pi 4 or 5 with at least 2 GB of RAM (4 GB recommended). Add swap on boards with 2 GB or less. A USB SSD is faster than an SD card and survives more write cycles.

Install with Docker and Docker Compose

Docker is optional. The Docker docs position it for an isolated, throwaway Gateway or a host where you don't want local installs. If you already develop on your own machine, the docs point you to the normal installer instead.

You need Docker Desktop or Docker Engine with Docker Compose v2, plus enough disk for images and logs. The 6 GB RAM requirement applies only when you build the image from source, and the pre-built image skips that build:

bash
git clone https://github.com/openclaw/openclaw.git
cd openclaw
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
./scripts/docker/setup.sh

Without the export line, the script builds openclaw:local from source. Either way, it runs onboarding: it asks for your provider API keys, writes a generated Gateway token to .env and starts the Gateway with Docker Compose. Open http://127.0.0.1:18789/ and paste that token into Settings.

Day-to-day commands, run from the repo root:

bash
# Print the dashboard URL again
docker compose run --rm openclaw-cli dashboard --no-open

# Liveness check
curl -fsS http://127.0.0.1:18789/healthz

# Add Telegram (use --channel discord for Discord)
docker compose run --rm openclaw-cli channels add --channel telegram --token "<token>"

# Move to a newer image
docker compose pull openclaw-gateway openclaw-cli
docker compose up -d openclaw-gateway

Stick to ghcr.io/openclaw/openclaw or its Docker Hub mirror openclaw/openclaw. The docs advise against unofficial mirrors because they don't follow OpenClaw's release timing. On a VPS, read the Docker docs' security hardening notes before exposing anything, especially the part about the DOCKER-USER firewall chain.

Coming from Clawdbot, Moltbot or an early OpenClaw

You installed the clawdbot or moltbot package

Clawdbot became Moltbot and then OpenClaw in January 2026 (OpenClaw announcement). The npm packages under the old names stayed behind. As of September 24, 2026:

npm packageLatest versionPublished
clawdbot2026.1.24-3January 25, 2026
moltbot0.1.0, which ships no commandJanuary 27, 2026
openclaw2026.9.6September 23, 2026

So npm install -g clawdbot installs a January build, not OpenClaw. A January install can also leave an old Gateway service and a settings folder behind:

Three leftovers from a Clawdbot install and their replacements: npm i -g clawdbot gives an old build, so use the OpenClaw installer script; clawdbot-gateway.service can keep the port busy, so run openclaw gateway uninstall and then openclaw gateway install; ~/.clawdbot isn't imported, so run openclaw onboard

To move over:

  1. Check what's installed. If clawdbot --version answers with a 2026.1.x version, the old package is still on your machine.
  2. Clear the old Gateway first. The January Clawdbot Gateway also used port 18789 (clawdbot README), so a leftover service can keep the new Gateway from binding to that port. On Linux and WSL2, the uninstall docs say openclaw gateway uninstall detects and removes a pre-rename clawdbot-gateway.service unit. Install without onboarding, clear the old unit, then onboard (commands below). On macOS, run lsof -i :18789 before onboarding, and if an old Clawdbot process holds the port, follow OpenClaw Port Not Listening.
  3. Set OpenClaw up as a new install. The official migration guide covers imports from Claude Code, Claude Desktop and Hermes, and moving OpenClaw between machines. It has no path for Clawdbot- or Moltbot-era state. Run onboarding, sign in to your provider again and reconnect your chat apps. The January package kept its settings in ~/.clawdbot, while OpenClaw uses ~/.openclaw, so leave the old folder alone until the new setup does everything you need.
  4. Remove the old CLI when you no longer need it: npm rm -g clawdbot.

The Linux and WSL2 sequence for step 2:

bash
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard
openclaw gateway uninstall          # also removes a pre-rename clawdbot-gateway.service
openclaw onboard --install-daemon

You installed OpenClaw before June 2026

Don't jump straight to the latest release. The official updating guide tells installs older than June 2026 to go through 2026.9.5 first. That bridge release still imports older task, flow and plugin databases and repairs retired config keys, and current releases no longer do. Back up your state directory (~/.openclaw by default) and make sure Node is 24.16+ on the 24.x line or 26.1+.

The commands below are for an npm install with the managed Gateway service. The installer script installs through npm by default, so they cover script installs too. If you run the Gateway in the foreground or under your own supervisor, stop and start it that way instead. In Windows PowerShell, run each command separately rather than chaining them with &&.

bash
openclaw gateway stop && \
  npm install -g openclaw@2026.9.5 --allow-scripts=openclaw && \
  openclaw --version && \
  openclaw doctor --fix

Confirm the version reads 2026.9.5 and that Doctor imported what you need, then resolve any failed imports it reports. After that, move to the current release:

bash
npm install -g openclaw@latest --allow-scripts=openclaw && \
  openclaw doctor --fix && \
  openclaw gateway start && \
  openclaw gateway status --deep

On npm 11.15 or earlier, leave out --allow-scripts=openclaw. For pnpm or bun installs, the updating guide gives the matching commands.

What to set up after installing OpenClaw

FAQ

Is Clawdbot the same as OpenClaw?

Yes. Clawdbot was renamed Moltbot and then OpenClaw in January 2026. Install OpenClaw with the installer script or the openclaw npm package. The clawdbot npm package stops at a January 2026 build.

Can I install OpenClaw on Android or iPhone?

Not the Gateway. The official Android app, from Google Play or a signed APK, is a companion node that "requires a running OpenClaw Gateway". The iPhone app on the App Store connects to a Gateway over your LAN or tailnet. Install OpenClaw on macOS, Windows or Linux first, then pair the phone.

How do I update OpenClaw?

Run openclaw update. It detects whether you installed with npm, pnpm, Bun or git, checks the new version while the old Gateway keeps serving, then activates and verifies it (updating guide). Installs older than June 2026 need the 2026.9.5 bridge first. Docker installs update by pulling the new image and recreating the Gateway container.

How do I uninstall OpenClaw?

Run openclaw uninstall. The prompt preselects only the Gateway service. For a complete removal, also select state, workspace and app, or run openclaw uninstall --all. openclaw uninstall --dry-run --all previews what would be removed. Then remove the CLI with the tool that installed it: npm rm -g openclaw for installer-script and npm installs, or pnpm remove -g openclaw or bun remove -g openclaw (uninstall docs).

Found an error, or hit a problem this article does not cover? Send the article URL and what you saw to hi@laozhang.ai. We check it and update the article.