CLI commands
Gateway
El Gateway es el servidor WebSocket de OpenClaw (canales, nodos, sesiones, hooks). Los subcomandos de esta página se encuentran bajo openclaw gateway ….
Configuración de mDNS local + DNS-SD de área amplia.
Cómo OpenClaw anuncia y encuentra gateways.
Claves de configuración de gateway de nivel superior.
Ejecutar el Gateway
Ejecuta un proceso local de Gateway:
openclaw gatewayAlias en primer plano:
openclaw gateway runComportamiento de inicio
- De forma predeterminada, el Gateway se niega a iniciarse a menos que
gateway.mode=localesté establecido 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, trata eso 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 lo trata como un daño sospechoso de 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 aplicar/actualizar la herramienta/configuración del gateway sigue permitido).- Los manejadores
SIGINT/SIGTERMdetienen el proceso del gateway, pero no restauran ningún estado personalizado del terminal. Si envuelves la CLI con una TUI o entrada en modo raw, restaura el terminal antes de salir.
Opciones
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Puerto WebSocket (el valor predeterminado proviene de config/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-exitbooleanRestablecer la configuración de serve/funnel de Tailscale al apagar.
--allow-unconfiguredbooleanPermitir que el gateway se inicie 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.
--devbooleanCrear una configuración de desarrollo + workspace si falta (omite BOOTSTRAP.md).
--resetbooleanRestablecer configuración de desarrollo + credenciales + sesiones + workspace (requiere --dev).
--forcebooleanMatar cualquier listener existente en el puerto seleccionado antes de iniciar.
--verbosebooleanRegistros detallados.
--cli-backend-logsbooleanMostrar solo registros del backend de la CLI en la consola (y habilitar stdout/stderr).
"--ws-log--compactbooleanAlias de --ws-log compact.
--raw-streambooleanRegistrar eventos de stream del modelo sin procesar en jsonl.
Reiniciar el Gateway
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --safe solicita al Gateway en ejecución que haga una verificació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 las solicitudes duplicadas de reinicio seguro y reinicia una vez que el trabajo activo se drena. restart simple conserva el comportamiento existente del gestor de servicios por compatibilidad. Usa --force solo cuando quieras explícitamente la ruta de sobrescritura inmediata.
openclaw gateway restart --safe --skip-deferral ejecuta el mismo reinicio coordinado consciente de OpenClaw que --safe, pero omite la compuerta de aplazamiento por trabajo activo para que el Gateway emita el reinicio inmediatamente incluso cuando se informan bloqueadores. Úsalo como vía de escape del operador cuando un aplazamiento se haya quedado fijado por una ejecución de tarea atascada y --safe por sí solo esperaría indefinidamente. --skip-deferral requiere --safe.
Perfilado de inicio
- Establece
OPENCLAW_GATEWAY_STARTUP_TRACE=1para registrar tiempos de fases durante el inicio del Gateway, incluido el retrasoeventLoopMaxpor fase y los tiempos de tablas de búsqueda de plugins para el índice instalado, el registro de manifiestos, la planificación de inicio y el trabajo de mapa de propietarios. - Establece
OPENCLAW_DIAGNOSTICS=timelineconOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>para escribir una línea temporal 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 por env. AgregaOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1para incluir muestras del event loop. - Ejecuta
pnpm test:startup:gateway -- --runs 5 --warmup 1para medir el inicio del Gateway. El benchmark registra la primera salida del proceso,/healthz,/readyz, los tiempos de traza de inicio, el retraso del event loop y los detalles de tiempos de tablas de búsqueda de plugins.
Consultar un Gateway en ejecución
Todos los comandos de consulta usan RPC por 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): deshabilitar ANSI manteniendo 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>: timeout/presupuesto (varía según el comando).--expect-final: esperar una respuesta "final" (llamadas de agente).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789El endpoint HTTP /healthz es una sonda de actividad: devuelve una respuesta una vez que el servidor puede responder HTTP. El endpoint HTTP /readyz es más estricto y permanece en rojo mientras los sidecars de plugins de inicio, los canales o los hooks configurados aún se están estabilizando. Las respuestas detalladas locales o autenticadas de disponibilidad incluyen un bloque de diagnóstico eventLoop con retraso del event loop, utilización del event loop, proporción de núcleos de CPU y una bandera degraded.
gateway usage-cost
Obtiene resúmenes de costo de uso desde registros de sesión.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --json"--daysgateway stability
Obtiene el registrador reciente de estabilidad diagnóstica desde un Gateway en ejecución.
openclaw gateway stabilityopenclaw gateway stability --type payload.largeopenclaw gateway stability --bundle latestopenclaw gateway stability --bundle latest --exportopenclaw gateway stability --jsonOPENCLAW_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">
Filtrar por tipo de evento diagnóstico, como payload.large o diagnostic.memory.pressure.
"--since-seq--bundle [path]stringLeer un bundle de estabilidad persistido en lugar de llamar al Gateway en ejecución. Usa --bundle latest (o solo --bundle) para el bundle más nuevo bajo el directorio de estado, o pasa directamente una ruta JSON de bundle.
--exportbooleanEscribir 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 bundles
- 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 sesión redactados. No conservan texto de chat, cuerpos de webhook, salidas de herramientas, cuerpos sin procesar de solicitudes o respuestas, tokens, cookies, valores secretos, hostnames ni ids de sesión sin procesar. Establece
diagnostics.enabled: falsepara deshabilitar por completo el registrador. - En salidas fatales del Gateway, timeouts de apagado y fallos de inicio tras reinicio, OpenClaw escribe la misma instantánea diagnóstica en
~/.openclaw/logs/stability/openclaw-stability-*.jsoncuando el registrador tiene eventos. Inspecciona el bundle más nuevo conopenclaw gateway stability --bundle latest;--limit,--typey--since-seqtambién se aplican a la salida de bundle.
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 bundle, consulta Exportación de diagnósticos.
openclaw gateway diagnostics exportopenclaw gateway diagnostics export --output openclaw-diagnostics.zipopenclaw gateway diagnostics export --json"--log-lines"--log-bytes"--url"--token"--password"--timeout--no-stability-bundlebooleanOmitir la búsqueda de bundles de estabilidad persistidos.
--jsonbooleanImprimir 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 bundle 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 de registro operativos redactados. Omite o redacta texto de chat, cuerpos de webhook, salidas de herramientas, credenciales, cookies, identificadores de cuenta/mensaje, texto de prompts/instrucciones, hostnames y valores secretos. Cuando un mensaje estilo LogTape parece texto de payload 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 del Gateway (launchd/systemd/schtasks) más una sonda opcional de capacidad de conectividad/autenticación.
openclaw gateway statusopenclaw gateway status --jsonopenclaw 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 de 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.
Status semantics
gateway statussigue disponible para diagnósticos incluso cuando la configuración local de la CLI falta o no es válida.gateway statuspredeterminado comprueba el estado del servicio, la conexión WebSocket y la capacidad de autenticación visible durante el handshake. No comprueba operaciones de lectura/escritura/administración.- Los sondeos de diagnóstico no mutan la autenticación de dispositivos por primera vez: reutilizan un token de dispositivo en caché existente 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 los SecretRefs de autenticación configurados para la autenticación del sondeo cuando es posible.- Si un SecretRef de autenticación requerido no se resuelve en esta ruta de comando,
gateway status --jsoninformarpc.authWarningcuando la conectividad/autenticación del sondeo falla; pasa--token/--passwordexplícitamente o resuelve primero el origen del secreto. - Si el sondeo tiene éxito, las advertencias de referencia de autenticación sin resolver 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 de alcance de lectura estén sanas. --deepagrega un escaneo de mejor esfuerzo para instalaciones adicionales de launchd/systemd/schtasks. Cuando se detectan varios servicios similares a Gateway, la salida humana 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 de Gateway cuando el proceso del servicio salió limpiamente para un reinicio de supervisor externo.--deepejecuta la validación de configuración en modo compatible con plugins (pluginValidation: "full") y muestra advertencias de manifiestos de plugins configurados (por ejemplo, metadatos faltantes de configuración de canal) para que las comprobaciones smoke de instalación y actualización las detecten.gateway statuspredeterminado mantiene la ruta rápida de solo lectura que omite la validación de plugins.- La salida humana incluye la ruta resuelta del log en archivo más la instantánea de rutas/validez de configuración CLI-vs-servicio para ayudar a diagnosticar desviaciones de perfil o de directorio de estado.
Linux systemd auth-drift checks
- En instalaciones Linux systemd, las comprobaciones de desviación de autenticación del servicio leen tanto los valores
Environment=comoEnvironmentFile=de la unidad (incluidos%h, rutas entre comillas, varios archivos y archivos-opcionales). - Las comprobaciones de desviación resuelven los SecretRefs de
gateway.auth.tokenusando el entorno de ejecución combinado (primero el entorno del comando de servicio, luego el entorno del proceso como alternativa). - Si la autenticación por token no está activa efectivamente (
gateway.auth.modeexplícito depassword/none/trusted-proxy, o modo sin definir donde la contraseña puede ganar y ningún candidato de token puede ganar), las comprobaciones de desviación de token omiten la resolución del token de configuración.
gateway probe
gateway probe es el comando para "depurar 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 agrega antes de ambos. La salida humana etiqueta los destinos como:
URL (explicit)Remote (configured)oRemote (configured, inactive)Local loopback
openclaw gateway probeopenclaw gateway probe --jsonInterpretation
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 comprobar 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 tuvieron éxito.Read probe: limited - missing scope: operator.readsignifica que la conexión tuvo éxito, 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 o fallaron. Esto también es accesibilidad degradada, no un Gateway inaccesible.- Al igual que
gateway status, el sondeo reutiliza la autenticación de dispositivo en caché existente, pero no crea una identidad de dispositivo por primera vez ni estado de emparejamiento. - El código de salida es distinto de cero solo cuando no se puede acceder a ningún destino sondeado.
JSON output
Nivel superior:
ok: se puede acceder al menos a un destino.degraded: al menos un destino aceptó una conexión pero no completó todos los diagnósticos RPC de detalle.capability: mejor capacidad vista 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,messageytargetIdsopcional.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 connect + clasificación degradada.rpcOk: éxito completo del RPC de detalle.scopeLimited: el RPC de detalle falló por falta de 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: la clasificación expuesta de capacidad de autenticación para ese destino.
Common warning codes
ssh_tunnel_failed: falló la configuración del túnel SSH; el comando recurrió a sondeos directos.multiple_gateways: se pudo acceder a más de un destino; esto es inusual salvo que ejecutes perfiles aislados intencionalmente, como un bot de rescate.auth_secretref_unresolved: no se pudo resolver un SecretRef de autenticación configurado para un destino fallido.probe_scope_limited: la conexión WebSocket tuvo éxito, pero el sondeo de lectura estuvo limitado por falta deoperator.read.
Remoto por SSH (paridad de la app de Mac)
El modo "Remote over SSH" de la app de macOS usa un reenvío de puerto local para que el Gateway remoto (que puede estar enlazado solo a loopback) sea accesible en ws://127.0.0.1:<port>.
Equivalente de la CLI:
openclaw gateway probe --ssh user@gateway-hostOPENCLAW_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 statusopenclaw 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 installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallInstalar 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 run-as. El wrapper recibe los argumentos normales de Gateway y es
responsable de finalmente hacer exec de openclaw o Node con esos argumentos.
cat > ~/.local/bin/openclaw-doppler <<'EOF'#!/usr/bin/env bashset -euo pipefailexec doppler run --project my-project --config production -- openclaw "$@"EOFchmod +x ~/.local/bin/openclaw-doppler openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --forceopenclaw gateway restartTambién puedes definir 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 --forceopenclaw doctorPara eliminar un wrapper persistido, borra OPENCLAW_WRAPPER al reinstalar:
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw gateway restartCommand options
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--wrapper <path>,--force,--jsongateway restart:--safe,--skip-deferral,--force,--wait <duration>,--jsongateway uninstall|start:--jsongateway stop:--disable,--json
Comportamiento del ciclo de vida
- Usa
gateway restartpara reiniciar un servicio administrado. No encadenesgateway stopygateway startcomo sustituto de reinicio. - En macOS,
gateway stopusalaunchctl bootoutde forma predeterminada, lo que elimina el LaunchAgent de la sesión de arranque actual sin conservar una desactivación persistente: la recuperación automática de KeepAlive sigue activa para bloqueos futuros ygateway startvuelve a habilitarlo limpiamente sin unlaunchctl enablemanual. Pasa--disablepara suprimir de forma persistente KeepAlive y RunAtLoad, de modo que el gateway no reaparezca hasta el siguientegateway startexplícito; úsalo cuando una detención manual deba sobrevivir a reinicios del equipo o del sistema. gateway restart --safepide al Gateway en ejecución que compruebe previamente el trabajo activo de OpenClaw y aplace el reinicio hasta que se vacíen la entrega de respuestas, las ejecuciones incrustadas y las ejecuciones de tareas.--safeno se puede combinar con--forceni--wait.gateway restart --wait 30sanula el presupuesto de vaciado de reinicio configurado para ese reinicio. Los números sin unidad son milisegundos; se aceptan unidades comos,myh.--wait 0espera indefinidamente.gateway restart --safe --skip-deferralejecuta el reinicio seguro con conocimiento de OpenClaw, pero omite la compuerta de aplazamiento para que el Gateway emita el reinicio inmediatamente incluso cuando se informen bloqueadores. Vía de escape para operadores ante aplazamientos de ejecuciones de tareas atascadas; requiere--safe.gateway restart --forceomite el vaciado 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 con token requiere un token y
gateway.auth.tokenestá administrado por SecretRef,gateway installvalida que el SecretRef se pueda resolver, pero no conserva el token resuelto en los metadatos de entorno del servicio. - Si la autenticación con token requiere un token y el SecretRef de token configurado no se puede resolver, la instalación falla de forma cerrada en lugar de conservar texto sin formato alternativo.
- Para autenticación con contraseña en
gateway run, prefiereOPENCLAW_GATEWAY_PASSWORD,--password-fileo ungateway.auth.passwordrespaldado por SecretRef antes que--passworden línea. - En modo de autenticación inferida,
OPENCLAW_GATEWAY_PASSWORDsolo de shell no relaja los requisitos de token de instalación; usa configuración duradera (gateway.auth.passwordo configenv) 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 balizas de Gateway (_openclaw-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (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 (predeterminado) anuncian la baliza.
Los registros de descubrimiento de área amplia pueden incluir estas pistas TXT:
role(pista de rol del gateway)transport(pista de transporte, p. ej.gateway)gatewayPort(puerto WebSocket, normalmente18789)sshPort(solo modo de descubrimiento completo; los clientes usan22como destino SSH predeterminado cuando está ausente)tailnetDns(nombre de host MagicDNS, cuando está disponible)gatewayTls/gatewayTlsSha256(TLS habilitado + huella digital del certificado)cliPath(solo modo de descubrimiento completo)
gateway discover
openclaw gateway discover"--timeout--jsonbooleanSalida legible por máquina (también desactiva estilo/indicador giratorio).
Ejemplos:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'