Clawdbot Windows (WSL2) Setup

Run Clawdbot AI assistant on Windows using WSL2. Full Linux experience with Ubuntu for consistent runtime and tooling.

Clawdbot Windows Overview

Clawdbot on Windows is recommended via WSL2 (Ubuntu recommended). The CLI + Gateway run inside Linux, which keeps the runtime consistent and makes tooling far more compatible.

Native Windows might be trickier. WSL2 gives you the full Linux experience — one command to install: wsl --install.

Native Windows companion apps are planned.

Installation (WSL2)

Step 1: Install WSL2 + Ubuntu

Open PowerShell (Admin):

wsl --install
# Or pick a distro explicitly:
wsl --list --online
wsl --install -d Ubuntu-24.04

Reboot if Windows asks.

Step 2: Enable systemd (Required)

In your WSL terminal:

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

Then from PowerShell:

wsl --shutdown

Re-open Ubuntu, then verify:

systemctl --user status

Step 3: Install Clawdbot (Inside WSL)

Follow the Linux Getting Started flow inside WSL:

# Option 1: Quick install
curl -fsSL https://clawd.bot/install.sh | bash

# Option 2: From source
git clone https://github.com/clawdbot/clawdbot.git
cd clawdbot
pnpm install
pnpm ui:build
pnpm build
clawdbot onboard --install-daemon

Gateway Service Install (CLI)

Inside WSL2:

# Option 1
clawdbot onboard --install-daemon

# Option 2
clawdbot gateway install

# Option 3
clawdbot configure
# Select "Gateway service" when prompted

Repair/migrate:

clawdbot doctor

Expose WSL Services Over LAN (Advanced)

WSL has its own virtual network. If another machine needs to reach a service running inside WSL, you must forward a Windows port to the current WSL IP.

Note: The WSL IP changes after restarts, so you may need to refresh the forwarding rule.

Example (PowerShell as Administrator)

$Distro = "Ubuntu-24.04"
$ListenPort = 2222
$TargetPort = 22
$WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]

if (-not $WslIp) { throw "WSL IP not found." }

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort `
    connectaddress=$WslIp connectport=$TargetPort

Allow Through Firewall (One-time)

New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
    -Protocol TCP -LocalPort $ListenPort -Action Allow

Refresh After WSL Restart

netsh interface portproxy delete v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 | Out-Null
netsh interface portproxy add v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 `
    connectaddress=$WslIp connectport=$TargetPort | Out-Null

Notes:

  • SSH from another machine targets the Windows host IP (e.g., ssh user@windows-host -p 2222)
  • Use listenaddress=0.0.0.0 for LAN access; 127.0.0.1 keeps it local only
  • For automatic refresh, register a Scheduled Task to run at login

Gateway Configuration

See the main guides:

Health Checks

clawdbot status
clawdbot health
clawdbot doctor

Windows Companion App

We do not have a Windows companion app yet. Contributions are welcome.

Next Steps