Gateway
Runbook de Gateway
Usa esta página para el arranque del día 1 y las operaciones del día 2 del servicio Gateway.
Diagnósticos orientados por síntomas con escaleras de comandos exactas y firmas de registro.
Guía de configuración orientada a tareas + referencia de configuración completa.
Contrato SecretRef, comportamiento de instantánea en tiempo de ejecución y operaciones de migración/recarga.
Reglas exactas de destino/ruta de secrets apply y comportamiento de perfiles de autenticación solo por referencia.
Arranque local en 5 minutos
Inicia el Gateway
openclaw gateway --port 18789# debug/trace mirrored to stdioopenclaw gateway --port 18789 --verbose# force-kill listener on selected port, then startopenclaw gateway --forceVerifica el estado del servicio
openclaw gateway statusopenclaw statusopenclaw logs --followLínea base saludable: Runtime: running, Connectivity probe: ok y Capability: ... que coincida con lo esperado. Usa openclaw gateway status --require-rpc cuando necesites prueba RPC con alcance de lectura, no solo alcanzabilidad.
Valida la preparación del canal
openclaw channels status --probeCon un Gateway alcanzable, esto ejecuta sondeos de canales en vivo por cuenta y auditorías opcionales. Si no se puede alcanzar el Gateway, la CLI recurre a resúmenes de canales solo de configuración en lugar de la salida del sondeo en vivo.
Modelo en tiempo de ejecución
- Un proceso siempre activo para enrutamiento, plano de control y conexiones de canales.
- Un único puerto multiplexado para:
- Control/RPC por WebSocket
- API HTTP (
/v1/models,/v1/embeddings,/v1/chat/completions,/v1/responses,/tools/invoke) - Rutas HTTP de Plugin, como la opcional
/api/v1/admin/rpc - Interfaz de control y hooks
- Modo de enlace predeterminado:
loopback. - La autenticación es obligatoria de forma predeterminada. Las configuraciones con secreto compartido usan
gateway.auth.token/gateway.auth.password(oOPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD), y las configuraciones de proxy inverso no loopback pueden usargateway.auth.mode: "trusted-proxy".
Endpoints compatibles con OpenAI
La superficie de compatibilidad de mayor impacto de OpenClaw ahora es:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completionsPOST /v1/responses
Por qué importa este conjunto:
- La mayoría de integraciones de Open WebUI, LobeChat y LibreChat sondean
/v1/modelsprimero. - Muchas canalizaciones RAG y de memoria esperan
/v1/embeddings. - Los clientes nativos para agentes prefieren cada vez más
/v1/responses.
Nota de planificación:
/v1/modelsprioriza agentes: devuelveopenclaw,openclaw/defaultyopenclaw/<agentId>.openclaw/defaultes el alias estable que siempre se asigna al agente predeterminado configurado.- Usa
x-openclaw-modelcuando quieras sobrescribir el proveedor/modelo de backend; de lo contrario, la configuración normal de modelo e incrustaciones del agente seleccionado mantiene el control.
Todo esto se ejecuta en el puerto principal del Gateway y usa el mismo límite de autenticación de operador de confianza que el resto de la API HTTP del Gateway.
Admin HTTP RPC (POST /api/v1/admin/rpc) es una ruta de Plugin separada, desactivada de forma predeterminada, para herramientas del host que no pueden usar RPC por WebSocket. Consulta Admin HTTP RPC.
Precedencia de puerto y enlace
| Configuración | Orden de resolución |
|---|---|
| Puerto del Gateway | --port → OPENCLAW_GATEWAY_PORT → gateway.port → 18789 |
| Modo de enlace | CLI/override → gateway.bind → loopback |
Los servicios Gateway instalados registran el --port resuelto en los metadatos del supervisor. Después de cambiar gateway.port, ejecuta openclaw doctor --fix o openclaw gateway install --force para que launchd/systemd/schtasks inicie el proceso en el nuevo puerto.
El arranque del Gateway usa el mismo puerto y enlace efectivos cuando inicializa los orígenes locales de la
interfaz de control para enlaces no loopback. Por ejemplo, --bind lan --port 3000
inicializa http://localhost:3000 y http://127.0.0.1:3000 antes de que se ejecute la
validación en tiempo de ejecución. Agrega explícitamente cualquier origen de navegador remoto, como URL de proxy HTTPS, a
gateway.controlUi.allowedOrigins.
Modos de recarga en caliente
gateway.reload.mode |
Comportamiento |
|---|---|
off |
Sin recarga de configuración |
hot |
Aplica solo cambios seguros en caliente |
restart |
Reinicia ante cambios que requieren recarga |
hybrid (predeterminado) |
Aplica en caliente cuando es seguro; reinicia cuando es necesario |
Conjunto de comandos del operador
openclaw gateway statusopenclaw gateway status --deep # adds a system-level service scanopenclaw gateway status --jsonopenclaw gateway installopenclaw gateway restartopenclaw gateway stopopenclaw secrets reloadopenclaw logs --followopenclaw doctorgateway status --deep es para descubrimiento adicional de servicios (LaunchDaemons/unidades systemd de sistema/schtasks), no para un sondeo de estado RPC más profundo.
Múltiples gateways (mismo host)
La mayoría de las instalaciones deberían ejecutar un Gateway por máquina. Un único Gateway puede alojar varios agentes y canales.
Solo necesitas varios gateways cuando quieres aislamiento intencionalmente o un bot de rescate.
Comprobaciones útiles:
openclaw gateway status --deepopenclaw gateway probeQué esperar:
gateway status --deeppuede informarOther gateway-like services detected (best effort)e imprimir sugerencias de limpieza cuando todavía queden instalaciones launchd/systemd/schtasks obsoletas.gateway probepuede advertir sobremultiple reachable gateway identitiescuando responden gateways distintos, o cuando OpenClaw no puede demostrar que los destinos alcanzables son el mismo Gateway. Un túnel SSH, una URL de proxy o una URL remota configurada hacia el mismo Gateway es un Gateway con varios transportes, incluso cuando los puertos de transporte difieren.- Si eso es intencional, aísla puertos, configuración/estado y raíces de espacios de trabajo por Gateway.
Lista de comprobación por instancia:
gateway.portúnicoOPENCLAW_CONFIG_PATHúnicoOPENCLAW_STATE_DIRúnicoagents.defaults.workspaceúnico
Ejemplo:
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json OPENCLAW_STATE_DIR=~/.openclaw-a openclaw gateway --port 19001OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b openclaw gateway --port 19002Configuración detallada: /gateway/multiple-gateways.
Acceso remoto
Preferido: Tailscale/VPN. Alternativa: túnel SSH.
ssh -N -L 18789:127.0.0.1:18789 user@hostLuego conecta clientes localmente a ws://127.0.0.1:18789.
Consulta: Gateway remoto, Autenticación, Tailscale.
Supervisión y ciclo de vida del servicio
Usa ejecuciones supervisadas para confiabilidad similar a producción.
macOS (launchd)
openclaw gateway installopenclaw gateway statusopenclaw gateway restartopenclaw gateway stopUsa openclaw gateway restart para reinicios. No encadenes openclaw gateway stop y openclaw gateway start como sustituto de reinicio.
En macOS, gateway stop usa launchctl bootout de forma predeterminada — esto elimina el LaunchAgent de la sesión de arranque actual sin persistir una desactivación, por lo que la recuperación automática de KeepAlive sigue funcionando después de bloqueos inesperados y gateway start lo vuelve a habilitar limpiamente. Para suprimir de forma persistente el reinicio automático entre reinicios del sistema, pasa --disable: openclaw gateway stop --disable.
Las etiquetas LaunchAgent son ai.openclaw.gateway (predeterminada) o ai.openclaw.<profile> (perfil con nombre). openclaw doctor audita y repara desvíos de configuración del servicio.
Linux (systemd de usuario)
openclaw gateway installsystemctl --user enable --now openclaw-gateway[-<profile>].serviceopenclaw gateway statusPara persistencia después de cerrar sesión, habilita lingering:
sudo loginctl enable-linger <user>Ejemplo manual de unidad de usuario cuando necesitas una ruta de instalación personalizada:
[Unit]Description=OpenClaw GatewayAfter=network-online.targetWants=network-online.target [Service]ExecStart=/usr/local/bin/openclaw gateway --port 18789Restart=alwaysRestartSec=5TimeoutStopSec=30TimeoutStartSec=30SuccessExitStatus=0 143OOMPolicy=continueKillMode=control-group [Install]WantedBy=default.targetWindows (nativo)
openclaw gateway installopenclaw gateway status --jsonopenclaw gateway restartopenclaw gateway stopEl arranque gestionado nativo de Windows usa una tarea programada llamada OpenClaw Gateway
(o OpenClaw Gateway (<profile>) para perfiles con nombre). Si se deniega la creación de la tarea programada,
OpenClaw recurre a un lanzador por usuario en la carpeta de Inicio
que apunta a gateway.cmd dentro del directorio de estado.
Linux (servicio de sistema)
Usa una unidad de sistema para hosts multiusuario/siempre activos.
sudo systemctl daemon-reloadsudo systemctl enable --now openclaw-gateway[-<profile>].serviceUsa el mismo cuerpo de servicio que la unidad de usuario, pero instálalo en
/etc/systemd/system/openclaw-gateway[-<profile>].service y ajusta
ExecStart= si tu binario openclaw vive en otra ubicación.
No permitas también que openclaw doctor --fix instale un servicio Gateway de nivel de usuario para el mismo perfil/puerto. Doctor rechaza esa instalación automática cuando encuentra un servicio Gateway de OpenClaw de nivel de sistema; usa OPENCLAW_SERVICE_REPAIR_POLICY=external cuando la unidad de sistema posee el ciclo de vida.
Ruta rápida de perfil de desarrollo
openclaw --dev setupopenclaw --dev gateway --allow-unconfiguredopenclaw --dev statusLos valores predeterminados incluyen estado/configuración aislados y puerto base del Gateway 19001.
Referencia rápida del protocolo (vista del operador)
- La primera trama del cliente debe ser
connect. - Gateway devuelve una instantánea
hello-ok(presence,health,stateVersion,uptimeMs, límites/política). hello-ok.features.methods/eventsson una lista de descubrimiento conservadora, no un volcado generado de cada ruta auxiliar invocable.- Solicitudes:
req(method, params)→res(ok/payload|error). - Los eventos comunes incluyen
connect.challenge,agent,chat,session.message,session.operation,session.tool,sessions.changed,presence,tick,health,heartbeat, eventos de ciclo de vida de emparejamiento/aprobación yshutdown.
Las ejecuciones de agente tienen dos etapas:
- Confirmación aceptada inmediata (
status:"accepted") - Respuesta final de finalización (
status:"ok"|"error"), con eventosagenttransmitidos entre medio.
Consulta la documentación completa del protocolo: Protocolo Gateway.
Comprobaciones operativas
Actividad
- Abre WS y envía
connect. - Espera una respuesta
hello-okcon instantánea.
Preparación
openclaw gateway statusopenclaw channels status --probeopenclaw healthRecuperación de brechas
Los eventos no se reproducen. Ante brechas de secuencia, actualiza el estado (health, system-presence) antes de continuar.
Firmas de fallos comunes
| Firma | Problema probable |
|---|---|
refusing to bind gateway ... without auth |
Enlace no loopback sin una ruta de autenticación de Gateway válida |
another gateway instance is already listening / EADDRINUSE |
Conflicto de puerto |
Gateway start blocked: set gateway.mode=local |
Configuración establecida en modo remoto, o falta el sello de modo local en una configuración dañada |
unauthorized during connect |
Discordancia de autenticación entre el cliente y Gateway |
Para ver escalas completas de diagnóstico, usa Solución de problemas de Gateway.
Garantías de seguridad
- Los clientes del protocolo Gateway fallan rápido cuando Gateway no está disponible (sin reserva implícita a canal directo).
- Los primeros frames inválidos o que no son de conexión se rechazan y se cierran.
- El apagado ordenado emite el evento
shutdownantes de cerrar el socket.
Relacionado: