Windows
Instalar, actualizar, ejecutar como una tarea programada de Windows y desinstalar en Windows 10 / 11.
Si estás usando WSL2, puedes seguir la configuración de Linux en su lugar; install.sh se ejecuta sin cambios en WSL.
Nota sobre
setup.bat. Los errores de detención abrupta#6118(el desbordamiento de espacio en disco deset /ade 32 bits y el error de análisisif/elsecon paréntesis sin escapar) se corrigieron en #6137 y se incluyen en v0.7.4 y posteriores. Las versiones actuales se completan con normalidad. Queda una salvedad:setup.bat --prebuilttodavía compruebacargoantes de llegar a la rama precompilada, así que la ruta de precompilado manual (Opción 1 abajo) es la verdadera instalación sin Rust. Compilar desde el código fuente (Opción 3) también funciona.
Instalar
Opción 1: Binario precompilado (recomendado)
Descarga el zip de la última versión para Windows, extrae zeroclaw.exe y colócalo en tu PATH.
Desde un símbolo del sistema de PowerShell:
# La instalación y la configuración de PATH son idempotentes. Si zeroclaw ya está en la
# versión más reciente y en el PATH del usuario, esos pasos se omiten; Quickstart
# se ejecuta igualmente al final.
$ver = (Invoke-RestMethod 'https://api.github.com/repos/zeroclaw-labs/zeroclaw/releases/latest').tag_name.TrimStart('v')
$dst = "$env:USERPROFILE\.zeroclaw\bin"
$exe = "$dst\zeroclaw.exe"
$current = if (Test-Path $exe) {
((& $exe --version 2>$null) | Select-String -Pattern '\d+\.\d+\.\d+').Matches.Value
} else { '' }
if ($current -ne $ver) {
$url = "https://github.com/zeroclaw-labs/zeroclaw/releases/download/v$ver/zeroclaw-x86_64-pc-windows-msvc.zip"
New-Item -ItemType Directory -Force -Path $dst | Out-Null
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\zeroclaw.zip" -UseBasicParsing
Expand-Archive -Force -Path "$env:TEMP\zeroclaw.zip" -DestinationPath $dst
}
$environment = [Environment]
$userPath = $environment::GetEnvironmentVariable('Path', 'User')
if (($userPath -split ';') -notcontains $dst) {
$environment::SetEnvironmentVariable('Path', "$dst;$userPath", 'User')
}
if (($env:Path -split ';') -notcontains $dst) {
$env:Path = "$dst;$env:Path"
}
& $exe quickstart
Para el comportamiento estable común a las rutas de Windows de binarios precompilados y de código fuente, consulta las rutas de instalación canónicas. La disponibilidad de las versiones y el bloque de descarga de PowerShell siguen documentándose aquí porque dependen de los recursos activos de GitHub.
El archivo zip precompilado es autosuficiente; Visual Studio Build Tools solo son necesarios para compilar desde el código fuente.
Después de la instalación, verifica:
zeroclaw --version # matches the latest release
Opción 2: setup.bat (de una versión de lanzamiento)
setup.bat --prebuilt
Flags:
| Bandera | Comportamiento |
|---|---|
--prebuilt | Descarga el binario precompilado desde GitHub Releases (la opción más rápida una vez alcanzada; el script actual sigue comprobando primero cargo) |
--minimal | Compilar solo el núcleo (sin canales ni hardware) |
--dist | Compila el conjunto de funcionalidades para la distribución ligera de versiones |
--default | Compilar con el conjunto de características predeterminado de Cargo |
--all | Compilar con todas las funcionalidades registradas |
⚠️ Problema conocido (actual).
setup.bat --prebuilttodavía compruebacargoantes de llegar a la rama precompilada, así que la Opción 2 no cumple una promesa de no usar Rust. Si no tienes una cadena de herramientas de Rust, usa la Opción 1 de arriba.Histórico (pre-
v0.7.4). Las versiones anteriores tenían dos fallos críticos y una discrepancia en el comando de onboarding reportados en #6118: un desbordamiento de espacio en disco enset /ade 32 bits (Invalid number. Numbers are limited to 32-bits of precision.), un error de análisisif/elsecon paréntesis sin escapar (.[0m was unexpected at this time.), y un aviso final dezeroclaw init. Todo se corrigió en #6137 (v0.7.4 / 0.7.5 / 0.8.0); las versiones actuales imprimenzeroclaw quickstarty finalizan normalmente.
Opción 3: Desde el origen
Requiere Rust (rustup) y las herramientas de compilación de Visual Studio:
git clone https://github.com/zeroclaw-labs/zeroclaw
cd zeroclaw
cargo install --locked --path .
zeroclaw quickstart
Opción 4: Scoop
scoop bucket add zeroclaw https://github.com/zeroclaw-labs/scoop-zeroclaw
scoop install zeroclaw
zeroclaw quickstart
Opción 5: Docker
ZeroClaw publica una imagen de contenedor de Linux en ghcr.io/zeroclaw-labs/zeroclaw:latest (y :vX.Y.Z para versiones etiquetadas). En Windows, ejecútala mediante Docker Desktop o mediante sudo apt install docker.io dentro de una distribución WSL; ambos funcionan, y el comportamiento del contenedor es idéntico.
Inicio rápido:
# Volumen persistente para la configuración + espacio de trabajo; el directorio de datos de ZeroClaw dentro del contenedor es /zeroclaw-data
docker run -d --name zeroclaw `
--restart=unless-stopped `
-p 42617:42617 `
-v zeroclaw-data:/zeroclaw-data `
ghcr.io/zeroclaw-labs/zeroclaw:latest
# Vigila los registros del primer inicio
docker logs -f zeroclaw
# Comprobación de estado (no requiere autenticación)
curl http://localhost:42617/health
# (Opcional) empareja un cliente. NOTA: la imagen publicada usa por defecto
# `require_pairing = false`, así que por defecto no se emite código de emparejamiento
# y `/api/*` acepta solicitudes sin autenticación. Para habilitar el emparejamiento,
# sobrescribe la configuración (establece `require_pairing = true` en
# /zeroclaw-data/.zeroclaw/config.toml dentro del contenedor) y reinicia;
# entonces se imprime un código de un solo uso en stdout en el primer inicio, tras lo cual
# los clientes lo envían por POST a `/pair`:
curl -X POST http://localhost:42617/pair -H 'X-Pairing-Code: <code-from-logs>'
Datos de la imagen (verificados contra ghcr.io/zeroclaw-labs/zeroclaw:latest):
- Base:
gcr.io/distroless/cc-debian13:nonroot(etapa de release; la etapadevesdebian:trixie-slim) ENTRYPOINT ["zeroclaw"],CMD ["daemon"]: ejecutar sin argumentos inicia el daemon y la pasarelaEXPOSE 42617: tanto el daemon como el gateway escuchan en este puerto- Directorio de datos:
/zeroclaw-data(config:/zeroclaw-data/.zeroclaw/config.toml, espacio de trabajo:/zeroclaw-data/workspace). Monte un volumen con nombre o un enlace aquí para persistencia; tenga en cuenta que esto no es/root/.zeroclaw. - Emparejamiento: la imagen publicada tiene por defecto
require_pairing = false, así que/api/*acepta solicitudes sin autenticación desde el principio. Cuando el emparejamiento está habilitado (establecerequire_pairing = trueen/zeroclaw-data/.zeroclaw/config.tomly reinicia), el daemon imprime un código de un solo uso en stdout al iniciarse por primera vez, y luego los clientes lo envían por POST a/paircon el encabezadoX-Pairing-Codeantes de que cualquier endpoint autenticado responda. - Panel web: incluido y servido por defecto en la imagen publicada. La imagen establece
gateway.web_dist_dir = "/usr/share/zeroclawlabs/web/dist"e incluye allí el frontend compilado, por lo que el gateway sirve el fallback de SPA listo para usar. Los recursos viven fuera del punto de montaje/zeroclaw-data, así que un montaje de volumen-v …:/zeroclaw-datano puede ocultarlos (ref #6400).
Compila desde el código fuente usando el Dockerfile incluido:
git clone https://github.com/zeroclaw-labs/zeroclaw
cd zeroclaw
docker build -t zeroclaw:local -f Dockerfile.debian .
Verificado en Windows + Docker:
- El comportamiento del contenedor coincide con Linux. Se descargó y ejecutó
ghcr.io/zeroclaw-labs/zeroclaw:latesten WSL Debian en Windows 11 build 26200.8313. La imagen arranca correctamente, el gateway escucha en:42617,/healthdevuelve JSON válido. Conrequire_pairing = trueconfigurado en la configuración y el contenedor reiniciado, el flujo del código de emparejamiento en/pairtambién funciona según la documentación. - Docker sin Docker Desktop.
wsl --installpara habilitar WSL2, luegosudo apt install docker.iodentro de la distro WSL, te da el daemon directamente; verificado para descargar y ejecutar la imagen publicada sin modificación.
Mejores prácticas del lado del host: orientación general sobre Docker + WSL2, no afirmaciones de tiempo de ejecución específicas de zeroclaw. Procede de Microsoft Learn y de la propia documentación de Docker cuando corresponde:
-
Puntos de montaje de volúmenes. El montaje enlazado de rutas del lado de Windows (
-v C:/Users/...:/zeroclaw-data) en un contenedor Linux cruza el límite del sistema de archivos entre WSL2 y Windows; Microsoft documenta la disposición y las implicaciones de rutas entre sistemas operativos en la referencia de sistemas de archivos de WSL. Prefiere volúmenes con nombre de Docker (-v zeroclaw-data:/zeroclaw-data) o almacena el espacio de trabajo dentro del sistema de archivos de WSL (\\wsl$\Debian\home\...) para obtener un rendimiento casi nativo. -
Redes. La red predeterminada de WSL2 usa NAT, así que los servicios en el contenedor son accesibles desde Windows mediante
localhost:<port>después del reenvío-p(verificado en Windows 11 + WSL2). Si necesitas llegar al contenedor desde otro equipo en la LAN, o ejecutar configuraciones de varios contenedores donde el DNS entre contenedores importa, cambia al modo reflejado según la referencia de Microsoft sobre Mirrored mode networking, añadiendo a%USERPROFILE%\.wslconfig:[wsl2] networkingMode=mirrored -
Daemon bajo Docker, no Task Scheduler. Dentro del contenedor no hay Windows Task Scheduler. Usa la política de reinicio de Docker,
--restart=unless-stopped, como en el ejemplo anterior, para el arranque en modo daemon. La imagen publicada se ejecuta como PID 1 / usuario no root; el contenedor es el servicio; no ejecuteszeroclaw service installdentro de él. -
Sandbox de habilidades mediante el socket Docker del host. El sandbox de ejecución de habilidades de ZeroClaw puede invocar Docker. Si ejecutas ZeroClaw en un contenedor y quieres que el sandbox de habilidades también use Docker, monta el socket Docker del host para que los contenedores hijos se ejecuten en el daemon del host en lugar de anidar Docker dentro de Docker:
# PowerShell / cmd.exe: use a single leading slash. # Git Bash / MINGW: use //var/run/docker.sock to bypass MSYS path rewriting. -v /var/run/docker.sock:/var/run/docker.sockTen en cuenta que montar el socket de Docker concede acceso al host equivalente a root a todo lo que esté dentro del contenedor; la página de Docker Protect the Docker daemon socket cubre la compensación. En Docker Desktop para Windows, el socket del host es
\\.\pipe\docker_engine; la sintaxis de bind-mount anterior se traduce correctamente. El patrón es general; no se ha evaluado específicamente frente al sandbox de habilidades de zeroclaw en esta documentación. -
Límites de recursos. Docker Desktop en Windows asigna RAM/CPU mediante
%USERPROFILE%\.wslconfig, que por defecto usa la mitad de la RAM del host. La superficie de configuración completa está documentada en la referencia de Microsoft Configuración avanzada en WSL. Un margen inicial razonable para una implementación de ZeroClaw de un solo usuario es:[wsl2] memory=8GB processors=4Auméntalo si estás ejecutando cargas de trabajo pesadas de habilidades o inferencia local de LLM dentro de la misma distro de WSL; esta es una guía de dimensionamiento, no un requisito estricto de la imagen.
Dependencias del sistema
Las compilaciones de Windows usan la cadena de herramientas MSVC. Para compilar desde el código fuente necesitas:
- Herramientas de compilación de Visual Studio (o Visual Studio completo) con la carga de trabajo “Desarrollo de escritorio con C++”
- Rust estable (vía
rustup)
Si usas Opción 1, no necesitas la cadena de herramientas de Rust; el binario es autónomo. La Opción 2 (setup.bat --prebuilt) está pensada para usar la misma ruta del binario, pero el script actual sigue comprobando cargo antes de llegar a la rama precompilada; consulta el problema conocido de arriba.
Ejecutándose como un servicio
En Windows, ZeroClaw se instala como una tarea programada con ámbito de usuario llamada ZeroClaw Daemon. No hay opción de Servicio de Windows / LocalSystem en la versión actual; la ruta de código subyacente siempre instala una tarea programada, independientemente de si zeroclaw service install se ejecuta desde una shell con privilegios elevados o no.
zeroclaw service install
zeroclaw service start
Esto crea una tarea en el Programador de tareas (taskschd.msc) bajo tu cuenta de usuario que se inicia al iniciar sesión. Administrarla mediante:
zeroclaw service status
zeroclaw service restart
zeroclaw service stop
zeroclaw service logs
Acerca de
--service-init. La CLI expone una bandera--service-init [auto|systemd|openrc]para mantener la coherencia entre plataformas, pero en Windows no tiene efecto; siempre se usa la ruta de tarea programada.
Los registros van a %USERPROFILE%\.zeroclaw\logs\ (en concreto, <config_dir>/logs/, donde <config_dir> por defecto es %USERPROFILE%\.zeroclaw\). Sin embargo, el propio contenedor de la tarea programada reside junto al archivo de configuración en %USERPROFILE%\.zeroclaw\zeroclaw-daemon.cmd. Solo los archivos de salida del daemon (daemon.stdout.log / daemon.stderr.log) se escriben en logs\.
Instalaciones de servidor / multiusuario. El soporte nativo para Windows Service / LocalSystem está en la hoja de ruta, pero aún no está implementado. Por ahora, en un servidor, instala ZeroClaw bajo la cuenta con la que debe ejecutarse el agente; la ruta de tarea programada lo iniciará al iniciar sesión ese usuario. Si necesitas que se inicie antes de que cualquier usuario inicie sesión, usa Task Scheduler → ZeroClaw Daemon → Properties → General → “Run whether user is logged on or not.”
Actualizar
Manual (ruta de la opción 1)
Vuelva a ejecutar el bloque de instalación de PowerShell de Opción 1 con el nuevo $ver. El nuevo zip sobrescribe zeroclaw.exe existente en su lugar. Luego:
zeroclaw service restart
setup.bat
Vuelve a descargar la última versión y vuelve a ejecutar setup.bat --prebuilt (o la bandera que usaste originalmente). Luego:
zeroclaw service restart
Scoop
scoop update zeroclaw
zeroclaw service restart
Desde la fuente
cd C:\path\to\zeroclaw
git pull
cargo install --locked --path . --force
zeroclaw service restart
Desinstalar
Detén y elimina la tarea programada:
zeroclaw service stop
zeroclaw service uninstall
Eliminar el binario:
:: Opción 1 (precompilado manual) o setup.bat
rmdir /s /q "%USERPROFILE%\.zeroclaw\bin"
:: Option 3 (cargo install)
del "%USERPROFILE%\.cargo\bin\zeroclaw.exe"
:: Option 4 (Scoop)
scoop uninstall zeroclaw
Elimina config, workspace y logs (opcional; esto elimina el historial de conversaciones):
rmdir /s /q "%USERPROFILE%\.zeroclaw"
La versión anterior de este documento hacía referencia a
%LOCALAPPDATA%\ZeroClaw\; esa ruta no la usa la versión actual; solo se usa%USERPROFILE%\.zeroclaw\.
Cosas a tener en cuenta
-
Rutas largas. Algunos sistemas de archivos de Windows aún limitan la longitud de las rutas a 260 caracteres. Habilita la compatibilidad con rutas largas si encuentras errores de
path too longdurante una compilación desde el código fuente:reg add HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f -
SmartScreen. El binario no firmado puede activar SmartScreen en el primer inicio desde Explorer (doble clic). Clic derecho → Propiedades → “Desbloquear” es la solución habitual hasta que agreguemos un MSI firmado. Iniciarlo desde PowerShell o
cmd.exenormalmente no activa SmartScreen. -
Programador de tareas detener en inactividad / batería. De forma predeterminada, Windows puede finalizar las tareas programadas cuando hay inactividad o batería. La tarea instalada
ZeroClaw Daemondeshabilita estas condiciones, pero si lo has instalado mediante una versión anterior, puedes verificarlo en Task Scheduler → ZeroClaw Daemon → Properties → Conditions:- “Iniciar la tarea solo si el ordenador está conectado a la corriente”: unchecked
- “Detener si el equipo cambia a alimentación por batería”: desmarcado
- “Iniciar la tarea solo si el ordenador está inactivo durante…”: unchecked
-
Autenticación por contraseña de OpenSSH. Si estás administrando Windows por SSH y la clave pública no se acepta, coloca tu clave en
C:\Users\<user>\.ssh\authorized_keys(usuario normal) oC:\ProgramData\ssh\administrators_authorized_keys(cuando hayas iniciado sesión como miembro deAdministrators).