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.04Reboot if Windows asks.
Step 2: Enable systemd (Required)
In your WSL terminal:
sudo tee /etc/wsl.conf > /dev/null << 'EOF'
[boot]
systemd=true
EOFThen from PowerShell:
wsl --shutdownRe-open Ubuntu, then verify:
systemctl --user statusStep 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-daemonGateway Service Install (CLI)
Inside WSL2:
# Option 1
clawdbot onboard --install-daemon
# Option 2
clawdbot gateway install
# Option 3
clawdbot configure
# Select "Gateway service" when promptedRepair/migrate:
clawdbot doctorExpose 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=$TargetPortAllow Through Firewall (One-time)
New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
-Protocol TCP -LocalPort $ListenPort -Action AllowRefresh 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-NullNotes:
- SSH from another machine targets the Windows host IP (e.g.,
ssh user@windows-host -p 2222) - Use
listenaddress=0.0.0.0for LAN access;127.0.0.1keeps 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 doctorWindows Companion App
We do not have a Windows companion app yet. Contributions are welcome.
Next Steps
- Clawdbot macOS - macOS setup
- Clawdbot Linux - Linux setup
- Clawdbot Gateway - Gateway configuration