Windows (WSL2)

OpenClaw en Windows se recomienda vía WSL2 (se recomienda Ubuntu). El CLI + Gateway se ejecutan dentro de Linux, lo que mantiene el runtime consistente y hace que las herramientas sean mucho más compatibles (Node/Bun/pnpm, binarios de Linux, skills). Windows nativo puede ser más complicado. WSL2 te da la experiencia completa de Linux — un solo comando para instalar: wsl --install.

Las apps complementarias nativas para Windows están planificadas.

Instalación (WSL2)

Estado de Windows nativo

Los flujos nativos del CLI en Windows están mejorando, pero WSL2 sigue siendo la ruta recomendada.

Lo que funciona bien en Windows nativo hoy:

  • Instalador web vía install.ps1
  • Uso local del CLI como openclaw --version, openclaw doctor y openclaw plugins list --json
  • Pruebas básicas de agente local/proveedor como:
openclaw agent --local --agent main --thinking low -m "Reply with exactly WINDOWS-HATCH-OK."

Advertencias actuales:

  • openclaw onboard --non-interactive aún espera un Gateway local alcanzable a menos que pases --skip-health
  • openclaw onboard --non-interactive --install-daemon y openclaw gateway install intentan primero con Tareas Programadas de Windows
  • Si la creación de la Tarea Programada es denegada, OpenClaw recurre a un elemento de inicio por usuario en la carpeta Startup y arranca el Gateway inmediatamente
  • Si schtasks se cuelga o deja de responder, OpenClaw ahora aborta esa ruta rápidamente y recurre a la alternativa en lugar de quedarse colgado para siempre
  • Las Tareas Programadas siguen siendo preferidas cuando están disponibles porque proporcionan mejor supervisión del estado

Si solo quieres el CLI nativo, sin instalación del servicio Gateway, usa una de estas opciones:

openclaw onboard --non-interactive --skip-health
openclaw gateway run

Si quieres inicio gestionado en Windows nativo:

openclaw gateway install
openclaw gateway status --json

Si la creación de la Tarea Programada está bloqueada, el modo de servicio alternativo igual se inicia automáticamente después del login a través de la carpeta Startup del usuario actual.

Gateway

Instalación del servicio Gateway (CLI)

Dentro de WSL2:

openclaw onboard --install-daemon

O:

openclaw gateway install

O:

openclaw configure

Selecciona Gateway service cuando se te solicite.

Reparar/migrar:

openclaw doctor

Inicio automático del Gateway antes del login de Windows

Para configuraciones headless, asegura que toda la cadena de arranque se ejecute incluso cuando nadie inicia sesión en Windows.

1) Mantener servicios de usuario ejecutándose sin login

Dentro de WSL:

sudo loginctl enable-linger "$(whoami)"

2) Instalar el servicio Gateway de usuario de OpenClaw

Dentro de WSL:

openclaw gateway install

3) Iniciar WSL automáticamente en el arranque de Windows

En PowerShell como Administrador:

schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM

Reemplaza Ubuntu con el nombre de tu distribución de:

wsl --list --verbose

Verificar la cadena de inicio

Después de un reinicio (antes del inicio de sesión de Windows), verifica desde WSL:

systemctl --user is-enabled openclaw-gateway
systemctl --user status openclaw-gateway --no-pager

Avanzado: exponer servicios WSL sobre LAN (portproxy)

WSL tiene su propia red virtual. Si otra máquina necesita alcanzar un servicio ejecutándose dentro de WSL (SSH, un servidor TTS local o el Gateway), debes reenviar un puerto de Windows a la IP actual de WSL. La IP de WSL cambia después de reinicios, así que puede que necesites actualizar la regla de reenvío.

Ejemplo (PowerShell como Administrador):

$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

Permitir el puerto a través del Firewall de Windows (una sola vez):

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

Actualizar el portproxy después de que WSL se reinicie:

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

Notas:

  • SSH desde otra máquina apunta a la IP del host Windows (ejemplo: ssh user@windows-host -p 2222).
  • Los nodos remotos deben apuntar a una URL de Gateway alcanzable (no 127.0.0.1); usa openclaw status --all para confirmar.
  • Usa listenaddress=0.0.0.0 para acceso LAN; 127.0.0.1 lo mantiene solo local.
  • Si quieres que sea automático, registra una Tarea Programada para ejecutar el paso de actualización al iniciar sesión.

Instalación paso a paso de WSL2

1) Instalar WSL2 + Ubuntu

Abre PowerShell (Admin):

wsl --install
# O elige una distribución explícitamente:
wsl --list --online
wsl --install -d Ubuntu-24.04

Reinicia si Windows lo solicita.

2) Habilitar systemd (requerido para la instalación del Gateway)

En tu terminal WSL:

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

Luego desde PowerShell:

wsl --shutdown

Reabre Ubuntu, luego verifica:

systemctl --user status

3) Instalar OpenClaw (dentro de WSL)

Sigue el flujo de Primeros pasos de Linux dentro de WSL:

git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # auto-instala las dependencias de UI en la primera ejecución
pnpm build
openclaw onboard

Guía completa: Primeros pasos

App complementaria para Windows

Todavía no tenemos una app complementaria para Windows. Las contribuciones son bienvenidas si quieres ayudar a que suceda.