CLI commands
Gateway
El Gateway es el servidor WebSocket de OpenClaw (canales, nodos, sesiones, hooks). Los subcomandos de esta página están bajo openclaw gateway ….
Configuración local de mDNS + DNS-SD de área amplia.
Cómo OpenClaw anuncia y encuentra gateways.
Claves de configuración de nivel superior del gateway.
Ejecutar el Gateway
Ejecuta un proceso Gateway local:
openclaw gateway
Alias en primer plano:
openclaw gateway run
Comportamiento de inicio
- De forma predeterminada, el Gateway se niega a iniciar a menos que
gateway.mode=localesté configurado en~/.openclaw/openclaw.json. Usa--allow-unconfiguredpara ejecuciones ad hoc/de desarrollo. - Se espera que
openclaw onboard --mode localyopenclaw setupescribangateway.mode=local. Si el archivo existe pero faltagateway.mode, trátalo como una configuración rota o sobrescrita y repárala en lugar de asumir implícitamente el modo local. - Si el archivo existe y falta
gateway.mode, el Gateway trata eso como daño sospechoso en la configuración y se niega a "adivinar local" por ti. - Se bloquea el enlace más allá de loopback sin autenticación (barrera de seguridad).
SIGUSR1activa un reinicio dentro del proceso cuando está autorizado (commands.restartestá habilitado de forma predeterminada; establececommands.restart: falsepara bloquear el reinicio manual, mientras que la aplicación/actualización de herramientas/configuración del gateway sigue permitida).- Los manejadores de
SIGINT/SIGTERMdetienen el proceso del gateway, pero no restauran ningún estado personalizado de la terminal. Si envuelves la CLI con una TUI o entrada en modo sin procesar, restaura la terminal antes de salir.
Opciones
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Puerto WebSocket (el valor predeterminado viene de la configuración/env; normalmente 18789).
"--bind"--authOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
Sobrescritura del token (también establece OPENCLAW_GATEWAY_TOKEN para el proceso).
"--password"--tailscale--tailscale-reset-on-exitbooleanRestablece la configuración de Tailscale serve/funnel al apagar.
--allow-unconfiguredbooleanPermite iniciar el gateway sin gateway.mode=local en la configuración. Omite la protección de inicio solo para arranque ad hoc/de desarrollo; no escribe ni repara el archivo de configuración.
--devbooleanCrea una configuración + espacio de trabajo de desarrollo si faltan (omite BOOTSTRAP.md).
--resetbooleanRestablece configuración de desarrollo + credenciales + sesiones + espacio de trabajo (requiere --dev).
--forcebooleanMata cualquier listener existente en el puerto seleccionado antes de iniciar.
--verbosebooleanRegistros detallados.
--cli-backend-logsbooleanMuestra solo los registros del backend de la CLI en la consola (y habilita stdout/stderr).
"--ws-log--compactbooleanAlias de --ws-log compact.
--raw-streambooleanRegistra eventos sin procesar del stream del modelo en jsonl.
Reiniciar el Gateway
openclaw gateway restart
openclaw gateway restart --safe
openclaw gateway restart --force
openclaw gateway restart --safe pide al Gateway en ejecución que haga una comprobación previa del trabajo activo de OpenClaw antes de reiniciar. Si hay operaciones en cola, entrega de respuestas, ejecuciones integradas o ejecuciones de tareas activas, el Gateway informa los bloqueadores, fusiona solicitudes duplicadas de reinicio seguro y reinicia cuando el trabajo activo se agota. restart simple conserva el comportamiento existente del administrador de servicios por compatibilidad. Usa --force solo cuando quieras explícitamente la ruta de anulación inmediata.
Perfilado de inicio
- Establece
OPENCLAW_GATEWAY_STARTUP_TRACE=1para registrar tiempos de fases durante el inicio del Gateway, incluido el retrasoeventLoopMaxpor fase y tiempos de tablas de búsqueda de plugins para installed-index, registro de manifiestos, planificación de inicio y trabajo de owner-map. - Establece
OPENCLAW_DIAGNOSTICS=timelineconOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>para escribir una cronología de diagnósticos de inicio JSONL de mejor esfuerzo para arneses externos de QA. También puedes habilitar la bandera condiagnostics.flags: ["timeline"]en la configuración; la ruta sigue proporcionándose mediante env. AñadeOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1para incluir muestras del bucle de eventos. - Ejecuta
pnpm test:startup:gateway -- --runs 5 --warmup 1para medir el inicio del Gateway. La medición registra la primera salida del proceso,/healthz,/readyz, tiempos de traza de inicio, retraso del bucle de eventos y detalles de tiempos de tablas de búsqueda de plugins.
Consultar un Gateway en ejecución
Todos los comandos de consulta usan RPC de WebSocket.
Modos de salida
- Predeterminado: legible para humanos (con color en TTY).
--json: JSON legible por máquina (sin estilo/spinner).--no-color(oNO_COLOR=1): deshabilita ANSI mientras mantiene el diseño humano.
Opciones compartidas
--url <url>: URL WebSocket del Gateway.--token <token>: token del Gateway.--password <password>: contraseña del Gateway.--timeout <ms>: tiempo de espera/presupuesto (varía por comando).--expect-final: espera una respuesta "final" (llamadas de agente).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789
El endpoint HTTP /healthz es una sonda de disponibilidad básica: devuelve una respuesta cuando el servidor puede responder HTTP. El endpoint HTTP /readyz es más estricto y permanece en rojo mientras los sidecars de plugins de inicio, canales o hooks configurados todavía se están estabilizando. Las respuestas detalladas de preparación locales o autenticadas incluyen un bloque de diagnóstico eventLoop con retraso del bucle de eventos, utilización del bucle de eventos, proporción de núcleos de CPU y una bandera degraded.
gateway usage-cost
Obtén resúmenes de costo de uso desde registros de sesión.
openclaw gateway usage-cost
openclaw gateway usage-cost --days 7
openclaw gateway usage-cost --json
"--days gateway stability
Obtén el registrador de estabilidad diagnóstica reciente desde un Gateway en ejecución.
openclaw gateway stability
openclaw gateway stability --type payload.large
openclaw gateway stability --bundle latest
openclaw gateway stability --bundle latest --export
openclaw gateway stability --json
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tbGltaXQgPGxpbWl0
" type="number" default="25">
Número máximo de eventos recientes que incluir (máx. 1000).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
Filtra por tipo de evento diagnóstico, como payload.large o diagnostic.memory.pressure.
"--since-seq--bundle [path]stringLee un paquete de estabilidad persistido en lugar de llamar al Gateway en ejecución. Usa --bundle latest (o solo --bundle) para el paquete más nuevo bajo el directorio de estado, o pasa directamente una ruta JSON de paquete.
--exportbooleanEscribe un zip de diagnósticos de soporte compartible en lugar de imprimir detalles de estabilidad.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
Ruta de salida para --export.
Privacidad y comportamiento de paquetes
- Los registros conservan metadatos operativos: nombres de eventos, conteos, tamaños en bytes, lecturas de memoria, estado de colas/sesiones, nombres de canales/plugins y resúmenes de sesiones redactados. No conservan texto de chat, cuerpos de webhook, salidas de herramientas, cuerpos sin procesar de solicitud o respuesta, tokens, cookies, valores secretos, nombres de host ni ids de sesión sin procesar. Establece
diagnostics.enabled: falsepara deshabilitar por completo el registrador. - En salidas fatales del Gateway, tiempos de espera de apagado y fallos de inicio durante reinicio, OpenClaw escribe la misma instantánea diagnóstica en
~/.openclaw/logs/stability/openclaw-stability-*.jsoncuando el registrador tiene eventos. Inspecciona el paquete más nuevo conopenclaw gateway stability --bundle latest;--limit,--typey--since-seqtambién se aplican a la salida de paquetes.
gateway diagnostics export
Escribe un zip local de diagnósticos diseñado para adjuntarse a informes de errores. Para el modelo de privacidad y el contenido del paquete, consulta Exportación de diagnósticos.
openclaw gateway diagnostics export
openclaw gateway diagnostics export --output openclaw-diagnostics.zip
openclaw gateway diagnostics export --json
"--log-lines"--log-bytes"--url"--token"--password"--timeout--no-stability-bundlebooleanOmite la búsqueda de paquetes de estabilidad persistidos.
--jsonbooleanImprime la ruta escrita, el tamaño y el manifiesto como JSON.
La exportación contiene un manifiesto, un resumen en Markdown, la forma de la configuración, detalles de configuración saneados, resúmenes de registros saneados, instantáneas saneadas de estado/salud del Gateway y el paquete de estabilidad más nuevo cuando existe uno.
Está pensada para compartirse. Conserva detalles operativos que ayudan a depurar, como campos seguros de registros de OpenClaw, nombres de subsistemas, códigos de estado, duraciones, modos configurados, puertos, ids de plugins, ids de proveedores, ajustes de funciones no secretos y mensajes operativos de registro redactados. Omite o redacta texto de chat, cuerpos de webhook, salidas de herramientas, credenciales, cookies, identificadores de cuenta/mensaje, texto de prompt/instrucciones, nombres de host y valores secretos. Cuando un mensaje de estilo LogTape parece texto de carga útil de usuario/chat/herramienta, la exportación conserva solo que se omitió un mensaje más su conteo de bytes.
gateway status
gateway status muestra el servicio Gateway (launchd/systemd/schtasks) más una sonda opcional de capacidad de conectividad/autenticación.
openclaw gateway status
openclaw gateway status --json
openclaw gateway status --require-rpc
"--url"--token"--password"--timeout--no-probebooleanOmite el sondeo de conectividad (vista solo del servicio).
--deepbooleanEscanea también los servicios de nivel del sistema.
--require-rpcbooleanConvierte el sondeo de conectividad predeterminado en un sondeo de lectura y sale con código distinto de cero cuando ese sondeo de lectura falla. No se puede combinar con --no-probe.
Semántica de estado
gateway statuspermanece disponible para diagnósticos incluso cuando la configuración local de la CLI falta o no es válida.gateway statuspredeterminado prueba el estado del servicio, la conexión WebSocket y la capacidad de autenticación visible en el momento del handshake. No prueba operaciones de lectura/escritura/administración.- Los sondeos de diagnóstico no mutan nada para la autenticación inicial de dispositivos: reutilizan un token de dispositivo existente en caché cuando existe, pero no crean una nueva identidad de dispositivo de la CLI ni un registro de emparejamiento de dispositivo de solo lectura solo para comprobar el estado.
gateway statusresuelve SecretRefs de autenticación configuradas para la autenticación del sondeo cuando es posible.- Si una SecretRef de autenticación requerida no se resuelve en esta ruta de comando,
gateway status --jsoninformarpc.authWarningcuando falla la conectividad/autenticación del sondeo; pasa--token/--passwordexplícitamente o resuelve primero la fuente del secreto. - Si el sondeo se realiza correctamente, las advertencias de auth-ref no resueltas se suprimen para evitar falsos positivos.
- Usa
--require-rpcen scripts y automatización cuando un servicio en escucha no sea suficiente y también necesites que las llamadas RPC con alcance de lectura estén sanas. --deepañade un escaneo de mejor esfuerzo para instalaciones adicionales de launchd/systemd/schtasks. Cuando se detectan varios servicios similares al gateway, la salida para personas imprime sugerencias de limpieza y advierte que la mayoría de las configuraciones deberían ejecutar un Gateway por máquina.--deeptambién informa una transferencia reciente de reinicio del supervisor del Gateway cuando el proceso del servicio salió limpiamente para un reinicio de supervisor externo.- La salida para personas incluye la ruta resuelta del registro de archivo más una instantánea de rutas/validez de configuración CLI frente a servicio para ayudar a diagnosticar derivas de perfil o state-dir.
Comprobaciones de deriva de autenticación de systemd en Linux
- En instalaciones systemd de Linux, las comprobaciones de deriva de autenticación del servicio leen valores
Environment=yEnvironmentFile=de la unidad (incluidos%h, rutas entrecomilladas, varios archivos y archivos opcionales con-). - Las comprobaciones de deriva resuelven SecretRefs de
gateway.auth.tokenusando el entorno de runtime combinado (primero el entorno del comando de servicio y luego el entorno del proceso como reserva). - Si la autenticación con token no está efectivamente activa (
gateway.auth.modeexplícito depassword/none/trusted-proxy, o modo no definido donde la contraseña puede prevalecer y ningún candidato de token puede prevalecer), las comprobaciones de deriva de token omiten la resolución del token de configuración.
gateway probe
gateway probe es el comando para "depurarlo todo". Siempre sondea:
- tu gateway remoto configurado (si está definido), y
- localhost (loopback) aunque el remoto esté configurado.
Si pasas --url, ese destino explícito se añade antes de ambos. La salida para personas etiqueta los destinos como:
URL (explícita)Remoto (configurado)oRemoto (configurado, inactivo)Local loopback
openclaw gateway probe
openclaw gateway probe --json
Interpretación
Reachable: yessignifica que al menos un destino aceptó una conexión WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyinforma lo que el sondeo pudo probar sobre la autenticación. Es independiente de la accesibilidad.Read probe: oksignifica que las llamadas RPC de detalle con alcance de lectura (health/status/system-presence/config.get) también se completaron correctamente.Read probe: limited - missing scope: operator.readsignifica que la conexión se completó, pero el RPC con alcance de lectura está limitado. Esto se informa como accesibilidad degradada, no como fallo completo.Read probe: faileddespués deConnect: oksignifica que el Gateway aceptó la conexión WebSocket, pero los diagnósticos de lectura posteriores agotaron el tiempo de espera o fallaron. Esto también es accesibilidad degradada, no un Gateway inaccesible.- Igual que
gateway status, el sondeo reutiliza la autenticación de dispositivo existente en caché, pero no crea una identidad de dispositivo inicial ni estado de emparejamiento. - El código de salida es distinto de cero solo cuando ningún destino sondeado es accesible.
Salida JSON
Nivel superior:
ok: al menos un destino es accesible.degraded: al menos un destino aceptó una conexión pero no completó todos los diagnósticos RPC de detalle.capability: mejor capacidad observada entre los destinos accesibles (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeounknown).primaryTargetId: mejor destino para tratar como ganador activo en este orden: URL explícita, túnel SSH, remoto configurado y luego local loopback.warnings[]: registros de advertencia de mejor esfuerzo concode,messageytargetIdsopcionales.network: sugerencias de URL de local loopback/tailnet derivadas de la configuración actual y la red del host.discovery.timeoutMsydiscovery.count: el presupuesto de descubrimiento/recuento de resultados real usado para esta pasada de sondeo.
Por destino (targets[].connect):
ok: accesibilidad después de la clasificación de conexión + degradación.rpcOk: éxito completo de RPC de detalle.scopeLimited: el RPC de detalle falló porque faltaba el alcance de operador.
Por destino (targets[].auth):
role: rol de autenticación informado enhello-okcuando está disponible.scopes: alcances concedidos informados enhello-okcuando están disponibles.capability: clasificación de capacidad de autenticación expuesta para ese destino.
Códigos de advertencia comunes
ssh_tunnel_failed: falló la configuración del túnel SSH; el comando recurrió a sondeos directos.multiple_gateways: más de un destino fue accesible; esto es inusual salvo que ejecutes perfiles aislados intencionalmente, como un bot de rescate.auth_secretref_unresolved: no se pudo resolver una SecretRef de autenticación configurada para un destino fallido.probe_scope_limited: la conexión WebSocket se completó, pero el sondeo de lectura quedó limitado por la falta deoperator.read.
Remoto sobre SSH (paridad con la app de Mac)
El modo "Remoto sobre SSH" de la app de macOS usa un reenvío de puerto local para que el gateway remoto (que puede estar vinculado solo a loopback) sea accesible en ws://127.0.0.1:<port>.
Equivalente en la CLI:
openclaw gateway probe --ssh user@gateway-host
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host o user@host:port (el puerto predeterminado es 22).
--ssh-autobooleanElige el primer host de gateway descubierto como destino SSH desde el endpoint de descubrimiento resuelto (local. más el dominio de área amplia configurado, si lo hay). Las sugerencias solo TXT se ignoran.
Configuración (opcional, usada como valores predeterminados):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Ayudante RPC de bajo nivel.
openclaw gateway call status
openclaw gateway call logs.tail --params '{"sinceMs": 60000}'
"--params"--url"--token"--password"--timeout--expect-finalbooleanPrincipalmente para RPCs de estilo agente que transmiten eventos intermedios antes de una carga útil final.
--jsonbooleanSalida JSON legible por máquina.
Gestionar el servicio Gateway
openclaw gateway install
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
openclaw gateway uninstall
Instalar con un wrapper
Usa --wrapper cuando el servicio gestionado deba iniciarse mediante otro ejecutable, por ejemplo un
shim de gestor de secretos o un ayudante para ejecutar como otro usuario. El wrapper recibe los argumentos normales del Gateway y es
responsable de terminar ejecutando openclaw o Node con esos argumentos.
cat > ~/.local/bin/openclaw-doppler <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
exec doppler run --project my-project --config production -- openclaw "$@"
EOF
chmod +x ~/.local/bin/openclaw-doppler
openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --force
openclaw gateway restart
También puedes establecer el wrapper mediante el entorno. gateway install valida que la ruta sea
un archivo ejecutable, escribe el wrapper en ProgramArguments del servicio y conserva
OPENCLAW_WRAPPER en el entorno del servicio para reinstalaciones forzadas, actualizaciones y reparaciones de doctor posteriores.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --force
openclaw doctor
Para eliminar un wrapper persistente, borra OPENCLAW_WRAPPER durante la reinstalación:
OPENCLAW_WRAPPER= openclaw gateway install --force
openclaw gateway restart
Opciones de comando
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--wrapper <path>,--force,--jsongateway restart:--safe,--force,--wait <duration>,--jsongateway uninstall|start|stop:--json
Comportamiento del ciclo de vida
- Usa
gateway restartpara reiniciar un servicio gestionado. No encadenesgateway stopygateway startcomo sustituto de reinicio; en macOS,gateway stopdeshabilita intencionalmente el LaunchAgent antes de detenerlo. gateway restart --safepide al Gateway en ejecución que haga una comprobación previa del trabajo activo de OpenClaw y difiera el reinicio hasta que se vacíen la entrega de respuestas, las ejecuciones integradas y las ejecuciones de tareas.--safeno se puede combinar con--forceni--wait.gateway restart --wait 30ssustituye el presupuesto configurado de drenaje de reinicio para ese reinicio. Los números sin unidad son milisegundos; se aceptan unidades comos,myh.--wait 0espera indefinidamente.gateway restart --forceomite el drenaje de trabajo activo y reinicia inmediatamente. Úsalo cuando un operador ya haya inspeccionado los bloqueadores de tareas enumerados y quiera recuperar el gateway ahora.- Los comandos de ciclo de vida aceptan
--jsonpara scripting.
Autenticación y SecretRefs durante la instalación
- Cuando la autenticación por token requiere un token y
gateway.auth.tokenestá gestionado por SecretRef,gateway installvalida que el SecretRef pueda resolverse, pero no conserva el token resuelto en los metadatos del entorno del servicio. - Si la autenticación por token requiere un token y el SecretRef del token configurado no está resuelto, la instalación falla de forma cerrada en lugar de conservar texto sin formato alternativo.
- Para la autenticación por contraseña en
gateway run, prefiereOPENCLAW_GATEWAY_PASSWORD,--password-fileo ungateway.auth.passwordrespaldado por SecretRef en lugar de--passworden línea. - En el modo de autenticación inferido,
OPENCLAW_GATEWAY_PASSWORDsolo de shell no relaja los requisitos de token de instalación; usa configuración duradera (gateway.auth.passwordoenvde configuración) al instalar un servicio administrado. - Si tanto
gateway.auth.tokencomogateway.auth.passwordestán configurados ygateway.auth.modeno está definido, la instalación se bloquea hasta que el modo se establezca explícitamente.
Descubrir gateways (Bonjour)
gateway discover busca anuncios de Gateway (_openclaw-gw._tcp).
- DNS-SD de multidifusión:
local. - DNS-SD de unidifusión (Bonjour de área amplia): elige un dominio (ejemplo:
openclaw.internal.) y configura DNS dividido + un servidor DNS; consulta Bonjour.
Solo los gateways con descubrimiento Bonjour habilitado (valor predeterminado) anuncian el beacon.
Los registros de descubrimiento de área amplia incluyen (TXT):
role(indicación del rol del gateway)transport(indicación del transporte, p. ej.,gateway)gatewayPort(puerto WebSocket, normalmente18789)sshPort(opcional; los clientes usan22de forma predeterminada para los destinos SSH cuando no está presente)tailnetDns(nombre de host MagicDNS, cuando está disponible)gatewayTls/gatewayTlsSha256(TLS habilitado + huella digital del certificado)cliPath(indicación de instalación remota escrita en la zona de área amplia)
gateway discover
openclaw gateway discover
"--timeout--jsonbooleanSalida legible por máquina (también deshabilita el estilo/spinner).
Ejemplos:
openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'