How to Install OpenClaw (macOS, Windows, Linux): Clean Setup + Verification

Hey there, automation builders. If you're ready to install OpenClaw but wondering which path to take—CLI install, Docker, or something else—I've run through every major setup route across macOS, Ubuntu, and Windows WSL2.

I'll walk you through the decision points, platform-specific steps, verification checks that actually matter, and how to cleanly uninstall if things go wrong. Here's what worked (and what didn't) across three different machines.


Choose Your Install Path (CLI vs Docker)

When to Use CLI (Local, Lightweight, Dev-First)

Recommended for:

  • Personal use on a single machine
  • Full system access (file operations, browser control, local automations)
  • Faster iteration and debugging
  • Lowest setup friction

Advantages:

  • Direct access to Gateway logs (openclaw gateway logs)
  • One-command install: npm install -g openclaw@latest
  • Onboarding wizard handles daemon setup automatically
  • Easier skill installation and configuration

Setup time: 5-10 minutes if you have Node.js 22+ already installed.

Docker를 사용할 때 (격리, 재현 가능, 안전함)

추천 대상:

  • 서버 배포 또는 VPS 호스팅
  • 격리가 필요한 공유 환경
  • 한 호스트에서 여러 OpenClaw 인스턴스를 실행할 때
  • 보안이 중요한 설정 (기본적으로 샌드박스 모드 활성화)

장점:

  • 그룹/채널 자동화를 위한 세션별 샌드박싱
  • 환경 간 재현 가능한 빌드
  • 쉽게 해체하고 재구성 가능
  • Node.js 버전 충돌 없음

설치 시간: Docker 설치 및 이미지 다운로드 포함 10-15분.

공식 OpenClaw 문서에 따르면, Docker 기반 설치는 선언적 구성 및 세션별 샌드박스를 위한 Nix 모드를 지원합니다.

초보자를 위한 결정 지름길

상황
최선의 선택
처음 설치, 개인 노트북
CLI 설치
빠르게 테스트하고 싶을 때
CLI 설치
VPS/클라우드 서버에서 실행할 때
Docker
여러 격리된 인스턴스가 필요할 때
Docker
OpenClaw 디버깅 또는 기여할 때
CLI 설치 (소스에서)

macOS 설치

사전 준비사항 (Homebrew, 권한)

Node.js 버전 확인:

node --version
# Must show v22.x.x or higher

If you don't have Node 22+, install via Homebrew:

brew install node@22
brew link node@22

Or use nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
nvm install 22 && nvm use 22

CLI Install Steps

# Install OpenClaw globally
npm install -g openclaw@latest
# Verify installation
openclaw --version
# Should show: openclaw/2026.1.29
# Run onboarding wizard (installs launchd daemon)
openclaw onboard --install-daemon

What --install-daemon does:

  • Creates launchd service at ~/Library/LaunchAgents/com.openclaw.gateway.plist
  • Auto-starts Gateway on login
  • Runs Gateway in background (you don't need terminal open)

Docker Install Alternative

# Pull latest image
docker pull openclaw/openclaw:latest
# Run with volume mounts for config persistence
docker run -d \
  --name openclaw-gateway \
  -v ~/.openclaw:/root/.openclaw \
  -p 18789:18789 \
  openclaw/openclaw:latest \
  gateway --port 18789

Per GitHub issue #1679, Docker deployments require explicit auth token configuration when accessed via reverse proxy.

Default Config & File Locations

~/.openclaw/
├── openclaw.json       # Main config (model, channels, tools)
├── state/              # Session data, message history
├── workspace/          # Skills and custom tools
└── credentials/        # OAuth tokens, API keys
~/Library/LaunchAgents/
└── com.openclaw.gateway.plist  # macOS daemon config

Why WSL2 is Required

OpenClaw does not support native Windows. The WhatsApp Web protocol, iMessage integration, and Unix-based process management all assume a POSIX environment.

According to the Windows platform guide, WSL2 (Windows Subsystem for Linux) is the only supported path for Windows users.

WSL2 Setup Checklist

  1. Enable WSL2:
# Run in PowerShell as Administrator
wsl --install

This installs Ubuntu 24.04 by default. Restart your computer when prompted.

  1. Launch Ubuntu:
  • Open "Ubuntu" from Start Menu
  • Create username and password when prompted
  1. Verify WSL version:
wsl --list --verbose
# Should show VERSION = 2

If it shows VERSION = 1, upgrade:

wsl --set-version Ubuntu 2

OpenClaw Install Inside WSL

Once inside Ubuntu (WSL2), follow the Linux install steps:

# Update packages
sudo apt update && sudo apt upgrade -y
# Install Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Verify Node version
node --version
# Install OpenClaw
npm install -g openclaw@latest
# Run onboarding
openclaw onboard --install-daemon

Common Windows-Specific Pitfalls

Issue 1: WSL network access from Windows

By default, WSL2 uses a virtualized network. To access the OpenClaw web dashboard from Windows browser:

  1. Find WSL IP:
ip addr show eth0 | grep inet
# Example output: inet 172.20.224.5/20
  1. Access dashboard at http://172.20.224.5:18789/ (replace with your WSL IP)

Issue 2: File system performance

Store ~/.openclaw/ inside WSL file system (/home/username/), not Windows (/mnt/c/). Cross-system file access is 10-20x slower.

Issue 3: systemd not running

Some WSL2 distributions don't enable systemd by default. Check:

systemctl --version

If it fails, enable systemd in /etc/wsl.conf:

sudo nano /etc/wsl.conf

Add:

[boot]
systemd=true

Restart WSL:

wsl --shutdown

Linux Install

Supported Distros

Distribution
Status
Notes
Ubuntu 22.04+
✅ Fully supported
Recommended
Debian 11+
✅ Fully supported
Fedora 38+
✅ Fully supported
Arch Linux
✅ Fully supported
Raspberry Pi OS
✅ Supported
See Raspberry Pi guide
CentOS/RHEL
⚠️ Manual setup
systemd works, package manager differs

Package Dependencies

Ubuntu/Debian:

sudo apt update
sudo apt install -y curl git build-essential

Fedora:

sudo dnf install -y curl git gcc-c++ make

Arch:

sudo pacman -S curl git base-devel

CLI Install Steps

# Install Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Or use nvm for user-level install
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install 22 && nvm use 22
# Install OpenClaw
npm install -g openclaw@latest
# Run onboarding (installs systemd service)
openclaw onboard --install-daemon

Running OpenClaw as a Service (Optional)

The --install-daemon flag creates a systemd user service automatically. Verify it's running:

systemctl --user status openclaw-gateway

Expected output:

● openclaw-gateway.service - OpenClaw Gateway
   Loaded: loaded (/home/user/.config/systemd/user/openclaw-gateway.service)
   Active: active (running)

Manual service management:

# Start
systemctl --user start openclaw-gateway
# Stop
systemctl --user stop openclaw-gateway
# Restart
systemctl --user restart openclaw-gateway
# View logs
journalctl --user -u openclaw-gateway -f

Enable auto-start on boot:

systemctl --user enable openclaw-gateway
sudo loginctl enable-linger $USER

The enable-linger command allows user services to start before login, which is necessary for headless servers.


Verify Installation

Check Version Output

openclaw --version

Expected output:

openclaw/2026.1.29

If you see command not found, verify npm global bin is in your PATH:

echo $PATH | grep npm

Add it if missing:

echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.bashrc
source ~/.bashrc

Run Health Checks

openclaw doctor

Healthy installation output:

✅ CLI version: 2026.1.29
✅ Node.js: v22.11.0
✅ Gateway service: running (PID 12345)
✅ Config: ~/.openclaw/openclaw.json
✅ Auth: Anthropic API key configured
⚠️  DM policy: pairing (requires approval for unknown senders)
ℹ️  Channels: telegram, whatsapp (2 connected)

Common warnings:

Read Logs Correctly

# View recent Gateway logs
openclaw gateway logs --tail 50
# Follow logs in real-time
openclaw gateway logs --follow

Key log patterns to recognize:

Successful startup:

2026-01-30T12:00:00.000Z [gateway] agent model: anthropic/claude-sonnet-4-5-20250929
2026-01-30T12:00:00.100Z [gateway] listening on ws://127.0.0.1:18789 (PID 12345)
2026-01-30T12:00:00.200Z [canvas] host mounted at http://127.0.0.1:18793/__openclaw__/canvas/

Authentication working:

2026-01-30T12:01:00.000Z [telegram] connected @yourbotname
2026-01-30T12:01:00.100Z [whatsapp] paired device: Chrome (Linux)

Problem indicators:

Error: Missing API key for Anthropic
[ws] unauthorized conn=xxx reason=token_missing
Error: EACCES: permission denied

What "Working" Looks Like

Minimal working test:

  1. Send a message to your Telegram bot:
Hello
  1. Expected response:
Hello! I'm your OpenClaw assistant. How can I help you today?
  1. Check logs show the interaction:
openclaw gateway logs --tail 10
  1. Should contain:
[telegram] ← message from @yourusername
[agent] generating response (model: claude-sonnet-4-5)
[telegram] → reply sent

If you see this flow, your installation is working correctly.


Uninstall or Reset Configuration

Full Uninstall Steps

macOS:

# Stop and remove daemon
openclaw gateway stop
launchctl unload ~/Library/LaunchAgents/com.openclaw.gateway.plist
rm ~/Library/LaunchAgents/com.openclaw.gateway.plist
# Remove OpenClaw package
npm uninstall -g openclaw
# Remove config and data (optional)
rm -rf ~/.openclaw

Linux:

# Stop and disable service
systemctl --user stop openclaw-gateway
systemctl --user disable openclaw-gateway
rm ~/.config/systemd/user/openclaw-gateway.service
# Remove package
npm uninstall -g openclaw
# Remove config and data (optional)
rm -rf ~/.openclaw

Windows (WSL2):

Same as Linux steps above, run inside Ubuntu WSL2 terminal.

Resetting Config Without Reinstall

Option 1: Delete config only (preserves session history)

mv ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup
openclaw onboard

Option 2: Full state reset (fresh start)

openclaw gateway stop
mv ~/.openclaw ~/.openclaw.backup
openclaw onboard --install-daemon

Option 3: Reset specific channels

rm ~/.openclaw/credentials/telegram.json
openclaw channels login

When a Clean Reset is the Right Move

Reset if:

  • Gateway won't start after config changes
  • Channel pairing is broken (WhatsApp QR expired, Telegram token invalid)
  • You switched API providers (Anthropic ↔ OpenAI) and seeing auth errors
  • Upgrade migration failed (openclaw doctor shows state version mismatch)

Don't reset if:

  • You just want to change one setting (edit ~/.openclaw/openclaw.json directly)
  • Daemon isn't starting (check systemctl --user status openclaw-gateway first)
  • Pairing codes aren't working (run openclaw pairing list to see pending pairs)

I've hit all these scenarios testing across platforms. The most common mistake is resetting config when you just need to restart the daemon—save yourself 10 minutes and check service status first.

Prefer a guided setup? At Macaron, we built an AI that remembers your context and creates personalized mini-apps from a single sentence—no technical setup required. If you want to test how conversation turns into custom tools for daily tasks like meal planning or habit tracking, sign up and run your first automation instantly with Macaron.


FAQ

Q: Do I need Node.js 22+ or can I use an older version?

Node.js 22+ is required. Older versions won't work—you'll get syntax errors immediately.

Q: 게이트웨이가 '실행 중'으로 표시되는데 대시보드에 접근할 수 없어요. 문제가 뭔가요?

기본 바인딩이 v2026.1.29에서 로컬호스트 전용으로 변경되었습니다. 동일한 머신에서 http://127.0.0.1:18789로 접근하거나, 원격 액세스를 위해 Tailscale을 설정하세요.

Q: WhatsApp이 계속 연결이 끊어졌다가 다시 연결돼요. 어떻게 해결하죠?

자격 증명을 삭제하고 다시 페어링하세요: rm -rf ~/.openclaw/credentials/whatsapp 그런 다음 openclaw channels login --channel whatsapp 명령을 다시 실행하세요.

Q: 설치 후 openclaw 명령이 인식되지 않아요.

npm의 글로벌 bin을 PATH에 추가하세요: echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.bashrc && source ~/.bashrc

Q: 게이트웨이를 인터넷에 노출시키는 것이 안전한가요?

아니요. 대신 Tailscale을 사용하세요. 2026년 1월에 직접적인 인터넷 노출로 여러 심각한 취약점이 발견되었습니다.

Q: Raspberry Pi나 저렴한 VPS에서 실행할 수 있나요?

네, 가능합니다. 1GB 이상의 RAM이 필요합니다. Linux 설치 단계를 따르세요—Docker도 가능하지만 더 많은 메모리를 사용합니다.

안녕하세요, 저는 Hanks입니다 — 워크플로우 조작자이자 AI 도구 애호가로, 자동화, SaaS 및 콘텐츠 제작 분야에서 10년 이상의 실무 경험을 가지고 있습니다. 제가 도구를 테스트하니 여러분은 그럴 필요 없습니다. 복잡한 과정을 간단하고 실행 가능한 단계로 나누고, '실제로 효과가 있는 것'의 숫자를 파헤칩니다.

지원하기 Macaron 의 첫 친구들