Configura OpenClaw Gateway: Guía de comandos y CLI
Descripción general de Gateway CLI
Sección titulada «Descripción general de Gateway CLI»El Gateway es el servidor WebSocket de OpenClaw, diseñado para gestionar canales, nodos, sesiones y hooks de manera eficiente. Esta herramienta es fundamental para que puedas mantener una comunicación fluida en tu infraestructura utilizando OpenClaw para la gestión de Gateway.
Los subcomandos que verás a continuación se ejecutan bajo el comando principal openclaw gateway.
Documentación relacionada:
Instalación de Gateway CLI
Sección titulada «Instalación de Gateway CLI»Para comenzar a utilizar las funciones de Gateway, primero debes asegurarte de tener instalado el entorno de Node.js en tu sistema. Puedes instalar la herramienta globalmente mediante npm o pnpm para acceder a ella desde cualquier lugar de tu terminal.
- Ejecuta el siguiente comando en tu terminal para instalar el paquete:
npm install -g @openclaw/gateway- Si prefieres utilizar pnpm, puedes ejecutar este comando:
pnpm add -g @openclaw/gatewayVerificación de la versión de Gateway
Sección titulada «Verificación de la versión de Gateway»Es importante que siempre compruebes que estás ejecutando la versión más reciente de la CLI para evitar problemas de compatibilidad. Esto te asegura que todas las funciones de Gateway operen según lo esperado en tu entorno de Docker o local.
- Verifica la instalación ejecutando el comando de versión:
openclaw gateway --version- Si necesitas obtener más detalles sobre el estado actual de tu Gateway, puedes usar el comando de ayuda:
openclaw gateway --helpEjecución del servidor Gateway
Sección titulada «Ejecución del servidor Gateway»Una vez que hayas configurado tu entorno, puedes iniciar el servidor para procesar tus conexiones y webhook de forma inmediata. Asegúrate de que tu archivo de configuración en formato JSON esté correctamente ubicado antes de lanzar el proceso.
- Inicia el servidor de Gateway con el siguiente comando:
openclaw gateway start --config config.json- Si deseas ejecutarlo en modo de depuración para ver los logs en tiempo real, utiliza el flag correspondiente:
openclaw gateway start --debugConfiguración de hooks en Gateway
Sección titulada «Configuración de hooks en Gateway»Los hooks te permiten extender la funcionalidad de OpenClaw al reaccionar ante eventos específicos dentro de tus canales. Configurar estos puntos de entrada es sencillo y te permite integrar servicios externos a través de GitHub o cualquier otro proveedor de servicios.
- Define tus hooks en el archivo de configuración para que el Gateway pueda reconocerlos:
{ "hooks": { "onConnect": "http://localhost:3000/webhook", "onDisconnect": "http://localhost:3000/webhook" }}- Reinicia el servicio para aplicar los cambios en la configuración de tus hooks:
openclaw gateway restartEjecutar el Gateway
Sección titulada «Ejecutar el Gateway»Para poner en marcha un proceso local de Gateway, simplemente ejecuta el siguiente comando en tu terminal:
openclaw gatewaySi prefieres utilizar el alias para ejecutarlo en primer plano, usa este comando:
openclaw gateway runTen en cuenta los siguientes puntos importantes sobre el comportamiento del proceso:
- Por defecto, el Gateway se niega a iniciar a menos que
gateway.mode=localesté configurado en~/.openclaw/openclaw.json. Puedes usar--allow-unconfiguredpara ejecuciones rápidas o de desarrollo. - Se espera que
openclaw onboard --mode localyopenclaw setupescribangateway.mode=local. Si el archivo existe pero faltagateway.mode, el sistema lo trata como una configuración dañada o alterada y la repara en lugar de asumir el modo local implícitamente. - Si el archivo existe y
gateway.modeno está presente, el Gateway considera que la configuración es sospechosa y se niega a “adivinar” el modo local por ti. - La vinculación fuera del loopback sin autenticación está bloqueada como medida de seguridad.
SIGUSR1activa un reinicio dentro del proceso cuando está autorizado (commands.restartestá habilitado por defecto; puedes establecercommands.restart: falsepara bloquear el reinicio manual, aunque las herramientas del gateway, la aplicación de configuración y las actualizaciones seguirán permitidas).- Los manejadores
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 raw, asegúrate de restaurar la terminal antes de salir.
Opciones
Sección titulada «Opciones»Puedes personalizar el comportamiento del proceso utilizando las siguientes banderas y parámetros al ejecutar el comando:
--port <port>: Puerto WebSocket (el valor por defecto proviene de la configuración o variables de entorno; usualmente18789).--bind <loopback|lan|tailnet|auto|custom>: Modo de enlace del listener.--auth <token|password>: Sobrescribe el modo de autenticación.--token <token>: Sobrescribe el token (también estableceOPENCLAW_GATEWAY_TOKENpara el proceso).--password <password>: Sobrescribe la contraseña. Advertencia: las contraseñas en línea pueden quedar expuestas en los listados de procesos locales.--password-file <path>: Lee la contraseña del Gateway desde un archivo.--tailscale <off|serve|funnel>: Expone el Gateway a través de Tailscale.--tailscale-reset-on-exit: Restablece la configuración de serve/funnel de Tailscale al apagar.--allow-unconfigured: Permite iniciar el Gateway singateway.mode=localen la configuración. Esto omite la protección de inicio solo para arranques rápidos o de desarrollo; no escribe ni repara el archivo de configuración.--dev: Crea una configuración de desarrollo y un espacio de trabajo si faltan (omite BOOTSTRAP.md).--reset: Restablece la configuración de desarrollo, credenciales, sesiones y espacio de trabajo (requiere--dev).--force: Elimina cualquier listener existente en el puerto seleccionado antes de iniciar.--verbose: Muestra registros detallados.--cli-backend-logs: Muestra solo los registros del backend de la CLI en la consola (y habilita stdout/stderr).--ws-log <auto|full|compact>: Estilo de registro de WebSocket (por defectoauto).--compact: Alias para--ws-log compact.--raw-stream: Registra eventos de flujo del modelo sin procesar en formato JSONL.--raw-stream-path <path>: Ruta para el archivo JSONL de flujo sin procesar.
Para realizar el perfilado durante el inicio, puedes seguir estas instrucciones:
- Establece
OPENCLAW_GATEWAY_STARTUP_TRACE=1para registrar los tiempos de fase durante el inicio del Gateway. - Ejecuta
pnpm test:startup:gateway -- --runs 5 --warmup 1para realizar un benchmark del inicio del Gateway. El benchmark registra la salida del primer proceso,/healthz,/readyzy los tiempos de traza de inicio.
Consultar un Gateway en ejecución
Sección titulada «Consultar un Gateway en ejecución»Todos los comandos de consulta utilizan WebSocket RPC para comunicarse con el servicio.
Modos de salida:
- Predeterminado: legible para humanos (con colores en la TTY).
--json: JSON legible por máquina (sin estilos ni animaciones).--no-color(oNO_COLOR=1): deshabilita ANSI manteniendo el diseño legible.
Opciones compartidas (donde sean compatibles):
--url <url>: URL de WebSocket del Gateway.--token <token>: Token del Gateway.--password <password>: Contraseña del Gateway.--timeout <ms>: tiempo de espera o presupuesto (varía según el comando).--expect-final: espera una respuesta “final” (llamadas de agente).
Nota: cuando configuras --url, la CLI no recurre a las credenciales de configuración o del entorno. Debes pasar --token o --password explícitamente. La falta de credenciales explícitas resultará en un error.
gateway health
Sección titulada «gateway health»El comando gateway health verifica el estado de salud del servicio.
openclaw gateway health --url ws://127.0.0.1:18789El endpoint HTTP /healthz es una prueba de vivacidad: responde una vez que el servidor puede contestar peticiones HTTP. El endpoint HTTP /readyz es más estricto y permanece en estado rojo mientras los sidecars de inicio, canales o webhook configurados aún se están estableciendo.
gateway usage-cost
Sección titulada «gateway usage-cost»Este comando permite obtener resúmenes de los costos de uso a partir de los registros de sesión.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --jsonOpciones:
--days <days>: número de días a incluir (predeterminado30).
gateway status
Sección titulada «gateway status»gateway status muestra el estado del servicio Gateway (launchd/systemd/schtasks) junto con una prueba opcional de conectividad y capacidad de autenticación.
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpcOpciones:
--url <url>: añade un objetivo de prueba explícito. El remoto configurado + localhost también se prueban.--token <token>: autenticación mediante token para la prueba.--password <password>: autenticación mediante contraseña para la prueba.--timeout <ms>: tiempo de espera de la prueba (predeterminado10000).--no-probe: omite la prueba de conectividad (vista solo de servicio).--deep: escanea también los servicios a nivel de sistema.--require-rpc: actualiza la prueba de conectividad predeterminada a una prueba de lectura y sale con un código distinto de cero si falla. No se puede combinar con--no-probe.
Notas:
gateway statuspermanece disponible para diagnósticos incluso cuando la configuración local de la CLI falta o es inválida.- El
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. gateway statusresuelve los SecretRefs de autenticación configurados para la prueba cuando es posible.- Si un SecretRef de autenticación requerido no se resuelve en esta ruta de comando,
gateway status --jsoninformarpc.authWarningcuando falla la conectividad o la autenticación; pasa--token/--passwordexplícitamente o resuelve primero la fuente del secreto. - Si la prueba tiene éxito, 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 necesites que las llamadas RPC de alcance de lectura también estén saludables. --deepañade un escaneo de mejor esfuerzo para instalaciones adicionales de launchd/systemd/schtasks. Cuando se detectan múltiples servicios tipo gateway, la salida humana imprime sugerencias de limpieza y advierte que la mayoría de las configuraciones deben ejecutar un solo gateway por máquina.- La salida humana incluye la ruta del archivo de registro resuelta más las rutas de configuración de la CLI frente al servicio para ayudar a diagnosticar desviaciones en el perfil o directorio de estado.
- En instalaciones de Linux con systemd, las comprobaciones de desviación de autenticación del servicio leen tanto los valores
Environment=comoEnvironmentFile=de la unidad (incluyendo%h, rutas entre comillas, múltiples 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 respaldo del entorno del proceso). - Si la autenticación por token no está efectivamente activa (modo
gateway.auth.modeexplícito depassword/none/trusted-proxy, o modo no establecido donde la contraseña puede ganar y no hay candidato a token), las comprobaciones de desviación de token omiten la resolución del token de configuración.
gateway probe
Sección titulada «gateway probe»gateway probe es el comando para “depurar todo”. Siempre prueba:
- tu gateway remoto configurado (si está establecido), y
- localhost (loopback) incluso si el remoto está configurado.
Si pasas --url, ese objetivo explícito se añade antes que ambos. La salida humana etiqueta los objetivos como:
URL (explicit)Remote (configured)oRemote (configured, inactive)Local loopback
Si hay múltiples gateways alcanzables, los imprime todos. Se admiten múltiples gateways cuando usas perfiles/puertos aislados (por ejemplo, un bot de rescate), pero la mayoría de las instalaciones ejecutan un solo gateway.
openclaw gateway probeopenclaw gateway probe --jsonInterpretación:
Reachable: yessignifica que al menos un objetivo aceptó una conexión WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyinforma lo que la prueba pudo verificar sobre la autenticación. Es independiente de la alcanzabilidad.Read probe: oksignifica que las llamadas RPC de detalle de 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 de alcance de lectura es limitado. Esto se reporta como alcanzabilidad degradada, no como fallo total.- El código de salida es distinto de cero solo cuando ningún objetivo probado es alcanzable.
Notas sobre JSON (--json):
- Nivel superior:
ok: al menos un objetivo es alcanzable.degraded: al menos un objetivo tuvo un RPC de detalle con alcance limitado.capability: mejor capacidad vista entre los objetivos alcanzables (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scope, ounknown).primaryTargetId: mejor objetivo a tratar como el ganador activo en este orden: URL explícita, túnel SSH, remoto configurado, luego loopback local.warnings[]: registros de advertencia de mejor esfuerzo concode,message, ytargetIdsopcionales.network: sugerencias de URL de loopback local/tailnet derivadas de la configuración actual y la red del host.discovery.timeoutMsydiscovery.count: el presupuesto de descubrimiento/conteo de resultados usado para esta pasada de prueba.
- Por objetivo (
targets[].connect):ok: alcanzabilidad después de conectar + clasificación degradada.rpcOk: éxito total del RPC de detalle.scopeLimited: el RPC de detalle falló debido a la falta de alcance de operador.
- Por objetivo (
targets[].auth):role: rol de autenticación reportado enhello-okcuando está disponible.scopes: alcances concedidos reportados enhello-okcuando están disponibles.capability: la clasificación de capacidad de autenticación mostrada para ese objetivo.
Códigos de advertencia comunes:
ssh_tunnel_failed: la configuración del túnel SSH falló; el comando recurrió a pruebas directas.multiple_gateways: más de un objetivo fue alcanzable; esto es inusual a menos que ejecutes intencionalmente perfiles aislados, como un bot de rescate.auth_secretref_unresolved: un SecretRef de autenticación configurado no pudo resolverse para un objetivo fallido.probe_scope_limited: la conexión WebSocket tuvo éxito, pero la prueba de lectura fue limitada por la falta deoperator.read.
Remoto sobre SSH (paridad de la aplicación Mac)
Sección titulada «Remoto sobre SSH (paridad de la aplicación Mac)»El modo “Remote over SSH” de la aplicación de macOS utiliza un reenvío de puerto local para que el gateway remoto (que puede estar vinculado solo a loopback) sea alcanzable en ws://127.0.0.1:<port>.
Equivalente en CLI:
openclaw gateway probe --ssh user@gateway-hostOpciones:
--ssh <target>:user@hostouser@host:port(el puerto predeterminado es22).--ssh-identity <path>: archivo de identidad.--ssh-auto: elige el primer gateway descubierto como objetivo SSH desde el endpoint de descubrimiento resuelto (local.más el dominio de área amplia configurado, si existe). Las sugerencias solo de TXT se ignoran.
Configuración (opcional, usada como valores predeterminados):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Sección titulada «gateway call <method>»Ayudante de RPC de bajo nivel.
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"sinceMs": 60000}'Opciones:
--params <json>: cadena de objeto JSON para parámetros (predeterminado{})--url <url>--token <token>--password <password>--timeout <ms>--expect-final--json
Notas:
--paramsdebe ser un JSON válido.--expect-finales principalmente para RPCs estilo agente que transmiten eventos intermedios antes de una carga útil final.
Gestionar el servicio Gateway
Sección titulada «Gestionar el servicio Gateway»Para mantener tu infraestructura funcionando correctamente, puedes usar los comandos de la CLI de OpenClaw para controlar el ciclo de vida del servicio. Aquí tienes las operaciones básicas que necesitas para administrar tu Gateway:
- Ejecuta
openclaw gateway installpara configurar el servicio. - Usa
openclaw gateway startpara poner en marcha el Gateway. - Utiliza
openclaw gateway stoppara detener el servicio de forma segura. - Aplica
openclaw gateway restartcuando necesites reiniciar el proceso. - Ejecuta
openclaw gateway uninstallpara eliminar el servicio de tu sistema.
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallOpciones de comandos
Sección titulada «Opciones de comandos»Cada comando de la CLI admite parámetros específicos que te permiten ajustar el comportamiento de tu Gateway según tus necesidades. Puedes consultar las opciones disponibles para cada acción a continuación:
- Para
gateway status, cuentas con:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--json. - Para
gateway install, puedes usar:--port,--runtime <node|bun>,--token,--force,--json. - Para
gateway uninstall|start|stop|restart, el único parámetro disponible es--json.
Notas técnicas
Sección titulada «Notas técnicas»Es importante tener en cuenta cómo se gestionan las configuraciones y la seguridad durante la instalación y ejecución del servicio. Sigue estas recomendaciones para asegurar una configuración correcta de tu OpenClaw Gateway:
- El comando
gateway installes compatible con las opciones--port,--runtime,--token,--forcey--json. - Cuando la autenticación mediante token requiere un valor y
gateway.auth.tokenes gestionado por SecretRef,gateway installvalida que el SecretRef sea resoluble, pero no guarda el token resuelto en los metadatos del entorno del servicio. - Si la autenticación por token requiere uno y el SecretRef configurado no se puede resolver, la instalación fallará en lugar de guardar un texto plano como respaldo.
- Para la autenticación con contraseña en
gateway run, es preferible usarOPENCLAW_GATEWAY_PASSWORD,--password-fileo ungateway.auth.passwordrespaldado por SecretRef en lugar de incluir--passworddirectamente en la línea de comandos. - En el modo de autenticación inferida, la variable
OPENCLAW_GATEWAY_PASSWORDsolo de shell no elimina los requisitos de token de instalación; utiliza una configuración duradera (gateway.auth.passwordo configuraciónenv) al instalar un servicio gestionado. - Si tanto
gateway.auth.tokencomogateway.auth.passwordestán configurados ygateway.auth.modeno está definido, la instalación se bloqueará hasta que el modo se establezca explícitamente. - Los comandos de ciclo de vida aceptan
--jsonpara facilitar la integración en scripts.
Descubrir Gateways (Bonjour)
Sección titulada «Descubrir Gateways (Bonjour)»El comando gateway discover analiza la red en busca de balizas de Gateway (_openclaw-gw._tcp) para que puedas conectar tus servicios de forma sencilla. OpenClaw utiliza este mecanismo para facilitar la detección automática de dispositivos en tu red local o mediante configuraciones de red más avanzadas.
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): elige un dominio (por ejemplo,
openclaw.internal.) y configura un DNS dividido junto con un servidor DNS; consulta /gateway/bonjour.
Solo los Gateway que tienen habilitada la detección Bonjour (activada por defecto) anuncian su baliza.
Los registros de detección de área amplia (Wide-Area) incluyen (TXT):
role(sugerencia de rol del Gateway)transport(sugerencia de transporte, por ejemplo,gateway)gatewayPort(puerto WebSocket, generalmente18789)sshPort(opcional; los clientes usan22por defecto si no está presente)tailnetDns(nombre de host de MagicDNS, cuando está disponible)gatewayTls/gatewayTlsSha256(TLS habilitado + huella digital del certificado)cliPath(sugerencia de instalación remota escrita en la zona de área amplia)
gateway discover
Sección titulada «gateway discover»Puedes ejecutar este comando directamente desde tu terminal para listar los dispositivos disponibles en tu entorno. Asegúrate de tener el CLI instalado para interactuar con tu OpenClaw Gateway.
openclaw gateway discoverOpciones:
--timeout <ms>: tiempo de espera por comando (exploración/resolución); el valor predeterminado es2000.--json: salida legible por máquina (también deshabilita el estilo y el indicador de carga).
Ejemplos:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'Notas:
- El CLI escanea
local.además del dominio de área amplia configurado cuando hay uno habilitado. - La
wsUrlen la salida JSON se deriva del punto final del servicio resuelto, no de sugerencias basadas solo en TXT comolanHostotailnetDns. - En mDNS
local.,sshPortycliPathsolo se transmiten cuandodiscovery.mdns.modeesfull. El DNS-SD de área amplia sigue escribiendocliPath;sshPorttambién permanece opcional allí.
OpenClaw Expert
Sigues atascado?
Si esta pagina no resolvio tu caso, pregunta a OpenClaw Expert para pasos concretos.