CLI commands
Gateway
El Gateway es el servidor WebSocket de OpenClaw (canales, nodos, sesiones, hooks). Todos los subcomandos que aparecen a continuación se encuentran bajo openclaw gateway ....
Configuración de mDNS local y DNS-SD de área amplia.
Cómo OpenClaw anuncia y encuentra gateways.
Claves de configuración de nivel superior del Gateway.
Ejecutar el Gateway
openclaw gatewayopenclaw gateway run # forma equivalente y explícitaComportamiento de inicio
- Se niega a iniciarse a menos que
gateway.mode=localesté establecido en~/.openclaw/openclaw.json. Use--allow-unconfiguredpara ejecuciones ad hoc o de desarrollo; omite la protección sin escribir ni reparar la configuración. - Cuando al iniciarse encuentra una configuración no válida que se puede reparar, un terminal interactivo ofrece ejecutar
openclaw doctor --fixy, tras obtener el consentimiento, vuelve a intentar el inicio una vez. Las ejecuciones no interactivas nunca realizan reparaciones automáticamente; en su lugar, muestran el comando. Si la configuración reparada sigue sin ser válida, el inicio permanece detenido. openclaw onboard --mode localyopenclaw setupescribengateway.mode=local. Si el archivo de configuración existe pero faltagateway.mode, se considera que la configuración está dañada o sobrescrita, y el Gateway se niega a deducirlocal— vuelva a ejecutar la incorporación, establezca la clave manualmente o pase--allow-unconfigured.- Se bloquea la vinculación más allá de la interfaz de bucle invertido sin autenticación.
- Actualmente, los valores
lan,tailnetycustomde--bindse resuelven mediante rutas que solo usan IPv4; las configuraciones con host propio que solo admiten IPv6 necesitan un proceso auxiliar IPv4 o un proxy delante del Gateway. SIGUSR1activa un reinicio dentro del proceso cuando está autorizado.commands.restart(valor predeterminado: habilitado) controla losSIGUSR1enviados externamente; establézcalo enfalsepara bloquear los reinicios manuales mediante señales del sistema operativo. La herramientagatewayorientada a agentes es de solo lectura; los agentes solicitan el reinicio mediante la herramienta de delegaciónopenclawaprobada por una persona.SIGINT/SIGTERMdetienen el proceso, pero no restauran el estado personalizado del terminal; si encapsula la CLI en una TUI o una entrada en modo sin procesar, restaure el terminal antes de salir.
Opciones
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Puerto WebSocket (valor predeterminado procedente de la configuración o del entorno; normalmente 18789).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYmluZCA8bW9kZQ
" type="string">
Modo de vinculación: loopback (predeterminado), lan, tailnet, auto, custom.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
Token compartido para connect.params.auth.token. El valor predeterminado es OPENCLAW_GATEWAY_TOKEN cuando está establecido.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYXV0aCA8bW9kZQ
" type="string">
Modo de autenticación: none, token, password, trusted-proxy.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcGFzc3dvcmQgPHBhc3N3b3Jk
" type="string">
Contraseña para --auth password.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdGFpbHNjYWxlIDxtb2Rl
" type="string">
Exposición mediante Tailscale: off, serve, funnel.
--tailscale-reset-on-exitbooleanRestablecer la configuración de serve/funnel de Tailscale al apagarse.
--allow-unconfiguredbooleanIniciar sin exigir gateway.mode=local. Solo para el arranque ad hoc o de desarrollo; no conserva ni repara la configuración.
--devbooleanCrear una configuración y un espacio de trabajo de desarrollo si no existen (omite BOOTSTRAP.md).
--dev-ambient-channelsbooleanPermitir que un Gateway de desarrollo configure automáticamente los canales a partir de variables de entorno disponibles. Requiere --dev.
--resetbooleanRestablecer la configuración de desarrollo, las credenciales, las sesiones y el espacio de trabajo. Requiere --dev.
--forcebooleanFinalizar cualquier proceso que esté escuchando en el puerto de destino antes de iniciar. En un shell no interactivo, esta opción se niega a finalizar un proceso de escucha verificado del Gateway; use --dev o un --profile aislado con un puerto libre.
--verbosebooleanRegistro detallado en stdout/stderr.
--cli-backend-logsbooleanMostrar únicamente los registros del backend de la CLI en la consola (también habilita stdout/stderr).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0td3MtbG9nIDxzdHlsZQ
" type="string" default="auto">
Estilo de registro de WebSocket: auto, full, compact.
--compactbooleanAlias de --ws-log compact.
--raw-streambooleanRegistrar en JSONL los eventos sin procesar del flujo del modelo.
--claude-cli-logs es un alias obsoleto de --cli-backend-logs.
Para --bind custom, establezca gateway.customBindHost en una dirección IPv4. Cualquier dirección distinta de 127.0.0.1 o 0.0.0.0 también requiere 127.0.0.1 en el mismo puerto para los clientes del mismo host; el inicio falla si alguno de los procesos de escucha no puede vincularse. El comodín 0.0.0.0 no añade un alias obligatorio independiente. Las configuraciones con host propio que solo admiten IPv6 necesitan un proceso auxiliar IPv4 o un proxy delante del Gateway.
Reiniciar el Gateway
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --wait 30s--safe solicita al Gateway en ejecución que compruebe previamente el trabajo activo y programe un único reinicio consolidado después de que termine ese trabajo. La espera está limitada a 5 minutos; cuando se agota el tiempo asignado, se fuerza el reinicio. --safe no se puede combinar con --force ni --wait.
--skip-deferral omite la protección de aplazamiento por trabajo activo durante un reinicio seguro, por lo que el Gateway se reinicia inmediatamente incluso si se notifican bloqueos. Requiere --safe; úselo cuando un aplazamiento quede atascado debido a una tarea descontrolada.
--wait <duration> sustituye el tiempo asignado al vaciado para un reinicio normal (no seguro). Acepta milisegundos sin unidad o los sufijos de unidad ms, s, m, h, d (por ejemplo, 30s, 5m, 1h30m); --wait 0 espera indefinidamente. No es compatible con --force ni --safe.
--force omite el vaciado del trabajo activo y reinicia inmediatamente. restart sin opciones mantiene el comportamiento de reinicio existente del gestor de servicios.
Supervisores externos
Establezca OPENCLAW_SUPERVISOR_MODE=external únicamente cuando otro gestor de procesos controle el ciclo de vida del Gateway. En este modo:
openclaw gateway restartconserva el comportamiento existente de espera segura, forzada y limitada, pero actúa sobre el Gateway en ejecución verificado en lugar de launchd, systemd o el Programador de tareas.- Las operaciones nativas de instalación, inicio, detención y desinstalación del servicio se rechazan y se indica que se debe usar el supervisor externo.
- La actualización automática de OpenClaw se rechaza para que el supervisor pueda detener el Gateway, sustituir y finalizar el entorno de ejecución y reiniciarlo de forma segura.
- Un reinicio en un proceso nuevo escribe una transferencia limitada en SQLite antes de una salida limpia. Si falla la persistencia, el Gateway recurre a un reinicio dentro del proceso en lugar de salir sin una transferencia utilizable.
OPENCLAW_SERVICE_REPAIR_POLICY=external sigue siendo una política de reparación independiente de Doctor. No declara la propiedad del entorno de ejecución; los supervisores que necesiten ambos comportamientos deben establecer ambas variables.
Los supervisores externos pueden negociar y consumir transferencias de reinicio mediante el contrato interno para máquinas:
openclaw gateway restart-handoff capabilities --jsonopenclaw gateway restart-handoff consume --expected-pid <pid> --jsonLa versión de protocolo 1 admite la operación consume. El consumo valida el PID esperado y los campos limitados de la transferencia dentro de una única transacción inmediata de SQLite. Una transferencia aceptada se elimina antes de devolver el resultado satisfactorio, por lo que dos consumidores simultáneos o repetidos no pueden aceptarla. Una discrepancia del PID se conserva para el propietario correspondiente; las filas ausentes, caducadas o no válidas no autorizan un reinicio.
Las solicitudes válidas para máquinas devuelven JSON con el código de salida 0, incluidos los resultados que no provocan un reinicio. Los argumentos no válidos devuelven reason: "invalid-expected-pid" con el código de salida 2; los errores del almacén de estado devuelven reason: "store-unavailable" con el código de salida 1. Los supervisores deben consultar capabilities en el entorno de ejecución o iniciador exacto que vayan a usar, en lugar de deducir la compatibilidad a partir de una cadena de versión de OpenClaw o leer directamente el esquema privado de SQLite.
Perfilado del Gateway
OPENCLAW_GATEWAY_STARTUP_TRACE=1registra los tiempos de las fases durante el inicio, incluidos el retrasoeventLoopMaxpor fase y los tiempos de las tablas de consulta de plugins (índice de instalaciones, registro de manifiestos, planificación del inicio y trabajo del mapa de propietarios).OPENCLAW_GATEWAY_RESTART_TRACE=1registra líneasrestart trace:correspondientes al reinicio: gestión de señales, vaciado del trabajo activo, fases de apagado, siguiente inicio, tiempo hasta estar listo y métricas de memoria.OPENCLAW_DIAGNOSTICS=timelineconOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>escribe, con el máximo esfuerzo posible, una cronología JSONL de diagnósticos de inicio para sistemas externos de QA (equivale a la configuracióndiagnostics.flags: ["timeline"]; la ruta sigue estando disponible únicamente mediante el entorno). AñadaOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1para incluir muestras del bucle de eventos.pnpm buildy, a continuación,pnpm test:startup:gateway -- --runs 5 --warmup 1realizan una prueba de rendimiento del inicio del Gateway comparándolo con el punto de entrada compilado de la CLI: primera salida del proceso,/healthz,/readyz, tiempos del seguimiento de inicio, retraso del bucle de eventos y tiempo de la tabla de consulta de plugins.pnpm buildy, a continuación,pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5realizan una prueba de rendimiento del reinicio dentro del proceso en macOS o Linux (no se admite en Windows; el reinicio requiereSIGUSR1). UsaSIGUSR1, habilita ambos seguimientos en el proceso secundario y registra el siguiente/healthz, el siguiente/readyz, el tiempo de inactividad, el tiempo hasta estar listo, la CPU, la RSS y las métricas de seguimiento del reinicio./healthzindica actividad;/readyzindica que está listo para usarse. Trate las líneas de seguimiento y la salida de las pruebas de rendimiento como una señal para atribuir la responsabilidad, no como una conclusión completa sobre el rendimiento basada en un único intervalo o una única muestra.
Consultar un Gateway en ejecución
Todos los comandos de consulta usan RPC mediante WebSocket.
Modos de salida
- Predeterminado: legible para personas (con colores en una TTY).
--json: JSON legible por máquinas (sin estilos ni indicador de progreso).--no-color(oNO_COLOR=1): deshabilita ANSI, pero conserva el diseño legible para personas.
Opciones compartidas
--url <url>: URL WebSocket del Gateway.--token <token>: token del Gateway.--password <password>: contraseña del Gateway.--timeout <ms>: tiempo de espera o límite (el valor predeterminado varía según el comando; consulte cada comando a continuación).--expect-final: esperar una respuesta «final» (llamadas de agentes).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789openclaw gateway health --port 18789/healthz es una sonda de actividad: responde en cuanto el servidor puede atender solicitudes HTTP. /readyz es más estricta y permanece en rojo mientras los procesos auxiliares de plugins, los canales o los hooks configurados durante el inicio aún se están estabilizando. Las respuestas detalladas locales o autenticadas de /readyz incluyen un bloque de diagnóstico eventLoop (retraso, utilización, proporción de núcleos de CPU, indicador degraded).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Apunta a un Gateway de bucle invertido local en este puerto. Anula OPENCLAW_GATEWAY_URL y OPENCLAW_GATEWAY_PORT para esta llamada.
gateway usage-cost
Obtiene resúmenes de costes de uso a partir de los registros de sesión.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --agent work --jsonopenclaw gateway usage-cost --all-agentsopenclaw gateway usage-cost --json"--days"--agent--all-agentsbooleanAgrega todos los agentes configurados. No se puede combinar con --agent.
gateway stability
Obtiene el registro reciente de estabilidad de diagnóstico de 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 se incluirán (máx. 1000).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
Filtra por tipo de evento de diagnóstico, por ejemplo, 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. --bundle latest (o simplemente --bundle) selecciona el paquete más reciente del directorio de estado; también se puede proporcionar directamente la ruta de un paquete JSON.
--exportbooleanEscribe un archivo zip compartible con diagnósticos de soporte en lugar de mostrar los detalles de estabilidad.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
Ruta de salida para --export.
Privacidad y comportamiento de los paquetes
- Los registros conservan metadatos operativos: nombres de eventos, recuentos, tamaños en bytes, lecturas de memoria, estado de colas y sesiones, ids de aprobación, nombres de canales y plugins, y resúmenes de sesión censurados. Excluyen texto de chat, cuerpos de webhooks, salidas de herramientas, cuerpos de solicitudes y respuestas sin procesar, tokens, cookies, valores secretos, nombres de host e ids de sesión sin procesar. Establezca
diagnostics.enabled: falsepara desactivar por completo el registro. - Las salidas fatales del Gateway, los tiempos de espera de apagado y los fallos de inicio tras un reinicio escriben la misma instantánea de diagnóstico en
~/.openclaw/logs/stability/openclaw-stability-*.jsoncuando el registro contiene eventos. Inspeccione el paquete más reciente conopenclaw gateway stability --bundle latest;--limit,--typey--since-seqtambién se aplican a la salida de los paquetes.
gateway diagnostics export
Escribe un archivo zip local de diagnósticos diseñado para informes de errores. Para consultar el modelo de privacidad y el contenido de los paquetes, véase 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-bundlebooleanOmite la búsqueda de paquetes de estabilidad persistidos.
--jsonbooleanMuestra como JSON la ruta escrita, el tamaño y el manifiesto.
La exportación agrupa: manifest.json (inventario de archivos), summary.md (resumen en Markdown), diagnostics.json (resumen de nivel superior de configuración, registros, detección, estabilidad, estado y salud), config/sanitized.json, status/gateway-status.json, health/gateway-health.json, logs/openclaw-sanitized.jsonl y stability/latest.json cuando existe un paquete.
Está diseñada para compartirse. Conserva detalles operativos útiles para la depuración —campos de registro seguros, nombres de subsistemas, códigos de estado, duraciones, modos configurados, puertos, ids de plugins y proveedores, ajustes de funciones no secretos y mensajes operativos de registro censurados— y omite o censura texto de chat, cuerpos de webhooks, salidas de herramientas, credenciales, cookies, identificadores de cuentas y mensajes, texto de instrucciones y prompts, nombres de host y valores secretos. Cuando un mensaje de registro parece contener texto de carga útil de usuario, chat o herramienta (por ejemplo, "el usuario dijo", "texto del chat", "salida de la herramienta" o "cuerpo del webhook"), la exportación conserva únicamente el hecho de que se omitió un mensaje y su recuento de bytes.
gateway status
Muestra el servicio del Gateway (launchd/systemd/schtasks), además de una sonda opcional de conectividad y autenticación.
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpc"--url"--token"--password"--timeout--no-probebooleanOmite la sonda de conectividad (vista exclusiva del servicio).
--deepbooleanExamina también los servicios del sistema.
--require-rpcbooleanAmplía la sonda de conectividad a una sonda de lectura y finaliza con un código distinto de cero si falla. No se puede combinar con --no-probe.
Semántica del estado
- Permanece disponible para realizar diagnósticos aunque falte la configuración local de la CLI o esta no sea válida.
- La salida predeterminada demuestra el estado del servicio, la conexión WebSocket y la capacidad de autenticación visible durante el protocolo de enlace, pero no las operaciones de lectura, escritura o administración.
- Las sondas no realizan cambios para la autenticación inicial de dispositivos: reutilizan un token de dispositivo almacenado en caché cuando existe, pero nunca crean una nueva identidad de dispositivo de la CLI ni un registro de emparejamiento de solo lectura únicamente para comprobar el estado.
- Resuelve las SecretRefs de autenticación configuradas para autenticar la sonda cuando es posible. Si una SecretRef obligatoria no se puede resolver,
--jsoninforma derpc.authWarningcuando falla la conectividad o autenticación de la sonda; proporcione--token/--passwordexplícitamente o corrija el origen del secreto. Las advertencias sobre autenticación sin resolver se suprimen cuando la sonda funciona correctamente. - La salida JSON incluye
gateway.versioncuando el Gateway en ejecución lo proporciona;--require-rpcpuede recurrir a la carga útil RPC destatus.runtimeVersionsi la sonda del protocolo de enlace no puede proporcionar metadatos de versión. - Utilice
--require-rpcen scripts y automatizaciones cuando no baste con que el servicio esté escuchando y también sea necesario que RPC con ámbito de lectura funcione correctamente. --deepbusca instalaciones adicionales de launchd/systemd/schtasks; cuando se encuentran varios servicios similares a un gateway, la salida para personas muestra sugerencias de limpieza (normalmente, ejecutar un gateway por máquina) e informa de una transferencia de reinicio reciente del supervisor cuando corresponde.--deeptambién ejecuta la validación de la configuración en modo compatible con plugins (pluginValidation: "full") y muestra advertencias del manifiesto de plugins (por ejemplo, la ausencia de metadatos de configuración del canal). El valor predeterminadogateway statusconserva la ruta rápida de solo lectura que omite la validación de plugins.- La salida para personas incluye la ruta resuelta del archivo de registro, además de las rutas y la validez de la configuración de la CLI y del servicio, para ayudar a diagnosticar divergencias del perfil o del directorio de estado.
- La salida para personas incluye
Gateway heap:con el límite aplicado y su cálculo adaptativo. La salida JSON presenta el mismo informe comoservice.gatewayHeap.
Comprobaciones de divergencia de autenticación de systemd en Linux
- Las comprobaciones de divergencia de autenticación del servicio leen tanto
Environment=comoEnvironmentFile=de la unidad (incluidos%h, rutas entre comillas, varios archivos y archivos-opcionales). - Resuelve las SecretRefs de
gateway.auth.tokenmediante el entorno de ejecución combinado (primero el entorno del comando del servicio y después el entorno del proceso como alternativa). - Las comprobaciones de divergencia de tokens omiten la resolución del token de configuración cuando la autenticación mediante token no está activa de forma efectiva (
gateway.auth.modeestablecido explícitamente enpassword/none/trusted-proxy, o modo sin establecer cuando la contraseña puede prevalecer y ningún token candidato puede hacerlo).
gateway probe
El comando para «depurarlo todo». Siempre sondea:
- el gateway remoto configurado (si se ha establecido), y
- localhost (bucle invertido), aunque haya un destino remoto configurado.
Al proporcionar --url, ese destino explícito se añade antes de ambos. La salida para personas etiqueta los destinos como URL (explicit), Remote (configured) / Remote (configured, inactive) y Local loopback.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --port 18789OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Utiliza este puerto para el destino de la sonda de bucle invertido local y el puerto remoto del túnel SSH. Sin --url, selecciona únicamente el destino de bucle invertido local en lugar de la URL del entorno del gateway configurado, el puerto del entorno o los destinos remotos.
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 de lo que la sonda pudo demostrar sobre la autenticación, por separado de la accesibilidad.Read probe: oksignifica que las llamadas RPC detalladas con ámbito 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 realizó correctamente, pero RPC con ámbito de lectura está limitado. Se informa como accesibilidad degradada, no como fallo total.Read probe: faileddespués deConnect: oksignifica que se estableció la conexión WebSocket, pero los diagnósticos de lectura posteriores agotaron el tiempo de espera o fallaron; también se considera un estado degradado, no inaccesible.- Al igual que
gateway status, la sonda reutiliza la autenticación de dispositivo existente en caché, pero no crea una identidad de dispositivo ni un estado de emparejamiento iniciales. - El código de salida solo es distinto de cero cuando no se puede acceder a ninguno de los destinos sondeados.
Salida JSON
Nivel superior:
ok: al menos un destino es accesible.degraded: al menos un destino aceptó una conexión, pero no completó los diagnósticos RPC detallados completos.capability: mejor capacidad observada entre los destinos accesibles (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeounknown).primaryTargetId: mejor destino para tratarlo como el ganador activo, en este orden: URL explícita, túnel SSH, remoto configurado, bucle local.warnings[]: registros de advertencia de mejor esfuerzo concode,messageytargetIdsopcional.network: sugerencias de URL de bucle local/tailnet derivadas de la configuración actual y la red del host.discovery.timeoutMs/discovery.count: el presupuesto de descubrimiento y el recuento de resultados reales utilizados para esta pasada de sondeo.
Por destino (targets[].connect): ok (accesibilidad + clasificación degradada), rpcOk (éxito del RPC detallado completo), scopeLimited (el RPC detallado falló por falta del ámbito de operador).
Por destino (targets[].auth): role y scopes se indican en hello-ok cuando están disponibles, junto con la clasificación capability mostrada.
Códigos de advertencia habituales
ssh_tunnel_failed: falló la configuración del túnel SSH; el comando recurrió a sondeos directos.multiple_gateways: se pudo acceder a identidades de Gateway distintas, o OpenClaw no pudo demostrar que los destinos accesibles correspondieran al mismo Gateway. Un túnel SSH, una URL de proxy o una URL remota configurada hacia el mismo Gateway no activa esta advertencia.auth_secretref_unresolved: no se pudo resolver una SecretRef de autenticación configurada para un destino con errores.probe_scope_limited: la conexión WebSocket se realizó correctamente, pero el sondeo de lectura estuvo limitado por la falta deoperator.read.local_tls_runtime_unavailable: TLS está habilitado en el Gateway local, pero OpenClaw no pudo cargar la huella digital del certificado local.
Acceso remoto mediante SSH (paridad con la aplicación para Mac)
El modo "Remote over SSH" de la aplicación para macOS utiliza un reenvío de puerto local para que un Gateway remoto limitado al bucle local sea accesible en ws://127.0.0.1:<port>.
Equivalente en 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-autobooleanSelecciona el primer host de Gateway descubierto como destino SSH a partir del punto de conexión de descubrimiento resuelto (local. más el dominio de área amplia configurado, si existe). Se ignoran las sugerencias procedentes únicamente de TXT.
Valores predeterminados de configuración (opcionales): gateway.remote.sshTarget, gateway.remote.sshIdentity.
gateway call <method>
Herramienta auxiliar RPC de bajo nivel.
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"limit": 200}'"--params"--url"--token"--password"--timeout--expect-finalbooleanPrincipalmente para RPC de tipo agente que transmiten eventos intermedios antes de una carga final.
--jsonbooleanSalida JSON legible por máquinas.
Gestionar el servicio del Gateway
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallInstalar con un contenedor ejecutable
Utilice --wrapper cuando el servicio gestionado deba iniciarse mediante otro ejecutable, por ejemplo, una capa de compatibilidad de gestor de secretos o una herramienta auxiliar para ejecutarlo como otro usuario. El contenedor recibe los argumentos normales del Gateway y es responsable de ejecutar finalmente mediante exec 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 puede establecer el contenedor mediante el entorno. gateway install valida que la ruta sea un archivo ejecutable, escribe el contenedor en el ProgramArguments del servicio y conserva OPENCLAW_WRAPPER en el entorno del servicio para posteriores reinstalaciones forzadas, actualizaciones y reparaciones del doctor.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --forceopenclaw doctorPara eliminar un contenedor conservado, borre OPENCLAW_WRAPPER durante la reinstalación:
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw gateway restartOpciones del comando
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node>(valor predeterminado:node),--token,--wrapper <path>,--force,--jsongateway restart:--safe,--skip-deferral,--force,--wait <duration>,--jsongateway uninstall|start:--jsongateway stop:--disable,--force,--json
Comportamiento del ciclo de vida
gateway startes idempotente: cuando el servicio gestionado ya está en ejecución, informa del proceso en ejecución y no lo modifica. Un servicio cargado pero detenido se inicia como antes.- Utilice
gateway restartpara reiniciar un servicio gestionado. No encadenegateway stopygateway startcomo sustituto del reinicio. - En un shell no interactivo,
gateway stoprequiere--force. Los terminales interactivos mantienen el comportamiento existente sin solicitudes. Para automatización y pruebas, es preferible utilizargateway run --devo un--profileaislado con un puerto libre. - En macOS,
gateway stoputilizalaunchctl bootoutde forma predeterminada, lo que elimina el LaunchAgent de la sesión de arranque actual sin conservar una desactivación: la recuperación automática de KeepAlive permanece activa para futuros fallos ygateway startlo vuelve a habilitar correctamente sin necesidad de ejecutar manualmentelaunchctl enable. Pase--disablepara suprimir de forma persistente KeepAlive y RunAtLoad, de modo que el Gateway no vuelva a generarse hasta el siguientegateway startexplícito; utilice esta opción cuando una detención manual deba persistir tras los reinicios. - Las modificaciones del ciclo de vida del Gateway añaden registros de auditoría de clave-valor de mejor esfuerzo a
<state-dir>/logs/gateway-restart.log, incluidas las operaciones de inicio, detención y reinicio de la CLI, las solicitudes de reinicio seguro, los reinicios del supervisor y las transferencias desvinculadas. - Los comandos del ciclo de vida aceptan
--jsonpara la creación de scripts.
Dimensionamiento del montón del Gateway gestionado
gateway installescribe un valorNODE_OPTIONSexclusivo para el montón del servicio Gateway gestionado. Su objetivo es el 50 % de la memoria restringida cuando Node informa de un límite de contenedor o servicio; en caso contrario, el 50 % de la memoria física.- El intervalo objetivo nominal es de 2048–8192 MiB, con un límite adicional del 75 % para reservar espacio para la memoria nativa. En hosts pequeños, ese límite de espacio reservado puede situar el límite aplicado por debajo del mínimo nominal de 2048 MiB.
- Un valor
--max-old-space-sizeexplícito y válido ya almacenado en el servicio instalado se conserva durante las reinstalaciones forzadas y las reparaciones del doctor. Otros indicadores deNODE_OPTIONSno se transfieren al servicio gestionado. - El valor
NODE_OPTIONSdel shell del entorno no anula esta política. Utilicegateway statusodoctorpara inspeccionar el valor instalado; ejecuteopenclaw gateway install --forcepara regenerar metadatos de servicios antiguos que no tengan una configuración de montón gestionado. - La política solo se aplica al servicio Gateway gestionado.
gateway runen primer plano, los servicios de Node y las unidades del supervisor escritas manualmente conservan su propia configuración de tiempo de ejecución.
Autenticación y SecretRefs durante la instalación
- Cuando la autenticación mediante token requiere un token y
gateway.auth.tokense gestiona mediante SecretRef,gateway installvalida que la SecretRef se pueda resolver, pero no conserva el token resuelto en los metadatos del entorno del servicio. - Si la autenticación mediante token requiere un token y la SecretRef del token configurada no se puede resolver, la instalación se cierra de forma segura en lugar de conservar texto sin formato de respaldo.
- Para la autenticación mediante contraseña en
gateway run, es preferible utilizarOPENCLAW_GATEWAY_PASSWORD,--password-fileo ungateway.auth.passwordrespaldado por SecretRef en lugar de--passwordinsertado. - En el modo de autenticación inferido,
OPENCLAW_GATEWAY_PASSWORDexclusivo del shell no relaja los requisitos de token de la instalación; utilice una configuración duradera (gateway.auth.passwordo la configuraciónenv) al instalar un servicio gestionado. - Si tanto
gateway.auth.tokencomogateway.auth.passwordestán configurados ygateway.auth.modeno está establecido, la instalación queda bloqueada hasta que se establezca explícitamente el modo.
Descubrir gateways (Bonjour)
gateway discover busca balizas del Gateway (_openclaw-gw._tcp).
- DNS-SD multidifusión:
local. - DNS-SD unidifusión (Bonjour de área amplia): elija un dominio (por ejemplo,
openclaw.internal.) y configure DNS dividido y un servidor DNS; consulte Bonjour.
Solo anuncian la baliza los gateways que tienen habilitado el descubrimiento mediante Bonjour (valor predeterminado).
Sugerencias TXT en cada baliza: role (sugerencia de función del Gateway), transport (sugerencia de transporte, p. ej., gateway), gatewayPort (puerto WebSocket, normalmente 18789), tailnetDns (nombre de host de MagicDNS, cuando está disponible), gatewayTls / gatewayTlsSha256 (TLS habilitado + huella digital del certificado). sshPort y cliPath se publican únicamente en el modo de descubrimiento completo (discovery.mdns.mode: "full"; el valor predeterminado es "minimal", que los omite; en ese caso, los clientes utilizan de forma predeterminada el puerto 22 para los destinos SSH).
gateway discover
openclaw gateway discover"--timeout--jsonbooleanSalida legible por máquinas (también deshabilita los estilos y el indicador de carga).
Ejemplos:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'