--- summary: "Windows (WSL2) support + companion app status" read_when: - Installing Clawdbot on Windows - Looking for Windows companion app status --- # Windows (WSL2) Clawdbot on Windows is recommended **via WSL2** (Ubuntu recommended). The CLI + Gateway run inside Linux, which keeps the runtime consistent. Native Windows installs are untested and more problematic. Native Windows companion apps are planned. ## Install (WSL2) - [Getting Started](/start/getting-started) (use inside WSL) - [Install & updates](/install/updating) - Official WSL2 guide (Microsoft): https://learn.microsoft.com/windows/wsl/install ## Gateway - [Gateway runbook](/gateway) - [Configuration](/gateway/configuration) ## Gateway service install (CLI) Inside WSL2: ``` clawdbot onboard --install-daemon ``` Or: ``` clawdbot gateway install ``` Or: ``` clawdbot configure ``` Select **Gateway service** when prompted. Repair/migrate: ``` clawdbot doctor ``` ## Advanced: expose WSL services over LAN (portproxy) WSL has its own virtual network. If another machine needs to reach a service running **inside WSL** (SSH, a local TTS server, or the Gateway), you must forward a Windows port to the current WSL IP. The WSL IP changes after restarts, so you may need to refresh the forwarding rule. Example (PowerShell **as Administrator**): ```powershell $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 the port through Windows Firewall (one-time): ```powershell New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound ` -Protocol TCP -LocalPort $ListenPort -Action Allow ``` Refresh the portproxy after WSL restarts: ```powershell 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** (example: `ssh user@windows-host -p 2222`). - Remote nodes must point at a **reachable** Gateway URL (not `127.0.0.1`); use `clawdbot status --all` to confirm. - Use `listenaddress=0.0.0.0` for LAN access; `127.0.0.1` keeps it local only. - If you want this automatic, register a Scheduled Task to run the refresh step at login. ## Step-by-step WSL2 install ### 1) Install WSL2 + Ubuntu Open PowerShell (Admin): ```powershell wsl --install # Or pick a distro explicitly: wsl --list --online wsl --install -d Ubuntu-24.04 ``` Reboot if Windows asks. ### 2) Enable systemd (required for gateway install) In your WSL terminal: ```bash sudo tee /etc/wsl.conf >/dev/null <<'EOF' [boot] systemd=true EOF ``` Then from PowerShell: ```powershell wsl --shutdown ``` Re-open Ubuntu, then verify: ```bash systemctl --user status ``` ### 3) Install Clawdbot (inside WSL) Follow the Linux Getting Started flow inside WSL: ```bash git clone https://github.com/clawdbot/clawdbot.git cd clawdbot pnpm install pnpm ui:build # auto-installs UI deps on first run pnpm build clawdbot onboard ``` Full guide: [Getting Started](/start/getting-started) ## Windows companion app We do not have a Windows companion app yet. Contributions are welcome if you want contributions to make it happen.