{ "title": "Windows (WSL2)", "content": "OpenClaw on Windows is recommended **via WSL2** (Ubuntu recommended). The\nCLI + Gateway run inside Linux, which keeps the runtime consistent and makes\ntooling far more compatible (Node/Bun/pnpm, Linux binaries, skills). Native\nWindows might be trickier. WSL2 gives you the full Linux experience — one command\nto install: `wsl --install`.\n\nNative Windows companion apps are planned.\n\n* [Getting Started](/start/getting-started) (use inside WSL)\n* [Install & updates](/install/updating)\n* Official WSL2 guide (Microsoft): [https://learn.microsoft.com/windows/wsl/install](https://learn.microsoft.com/windows/wsl/install)\n\n* [Gateway runbook](/gateway)\n* [Configuration](/gateway/configuration)\n\n## Gateway service install (CLI)\n\nSelect **Gateway service** when prompted.\n\n## Advanced: expose WSL services over LAN (portproxy)\n\nWSL has its own virtual network. If another machine needs to reach a service\nrunning **inside WSL** (SSH, a local TTS server, or the Gateway), you must\nforward a Windows port to the current WSL IP. The WSL IP changes after restarts,\nso you may need to refresh the forwarding rule.\n\nExample (PowerShell **as Administrator**):\n\nAllow the port through Windows Firewall (one-time):\n\nRefresh the portproxy after WSL restarts:\n\n* SSH from another machine targets the **Windows host IP** (example: `ssh user@windows-host -p 2222`).\n* Remote nodes must point at a **reachable** Gateway URL (not `127.0.0.1`); use\n `openclaw status --all` to confirm.\n* Use `listenaddress=0.0.0.0` for LAN access; `127.0.0.1` keeps it local only.\n* If you want this automatic, register a Scheduled Task to run the refresh\n step at login.\n\n## Step-by-step WSL2 install\n\n### 1) Install WSL2 + Ubuntu\n\nOpen PowerShell (Admin):\n\n```powershell theme={null}\nwsl --install", "code_samples": [ { "code": "openclaw onboard --install-daemon", "language": "unknown" }, { "code": "openclaw gateway install", "language": "unknown" }, { "code": "openclaw configure", "language": "unknown" }, { "code": "openclaw doctor", "language": "unknown" }, { "code": "Allow the port through Windows Firewall (one-time):", "language": "unknown" }, { "code": "Refresh the portproxy after WSL restarts:", "language": "unknown" }, { "code": "Notes:\n\n* SSH from another machine targets the **Windows host IP** (example: `ssh user@windows-host -p 2222`).\n* Remote nodes must point at a **reachable** Gateway URL (not `127.0.0.1`); use\n `openclaw status --all` to confirm.\n* Use `listenaddress=0.0.0.0` for LAN access; `127.0.0.1` keeps it local only.\n* If you want this automatic, register a Scheduled Task to run the refresh\n step at login.\n\n## Step-by-step WSL2 install\n\n### 1) Install WSL2 + Ubuntu\n\nOpen PowerShell (Admin):", "language": "unknown" } ], "headings": [ { "level": "h2", "text": "Install (WSL2)", "id": "install-(wsl2)" }, { "level": "h2", "text": "Gateway", "id": "gateway" }, { "level": "h2", "text": "Gateway service install (CLI)", "id": "gateway-service-install-(cli)" }, { "level": "h2", "text": "Advanced: expose WSL services over LAN (portproxy)", "id": "advanced:-expose-wsl-services-over-lan-(portproxy)" }, { "level": "h2", "text": "Step-by-step WSL2 install", "id": "step-by-step-wsl2-install" }, { "level": "h3", "text": "1) Install WSL2 + Ubuntu", "id": "1)-install-wsl2-+-ubuntu" } ], "url": "llms-txt#windows-(wsl2)", "links": [] }