{
  "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": []
}