Múltiples Gateways (mismo host)

La mayoría de las configuraciones deberían usar un solo Gateway, ya que un único Gateway puede manejar múltiples conexiones de mensajería y agentes. Si necesitas mayor aislamiento o redundancia (por ejemplo, un bot de rescate), ejecuta Gateways separados con perfiles y puertos aislados.

Lista de verificación de aislamiento (obligatoria)

  • OPENCLAW_CONFIG_PATH — archivo de configuración por instancia
  • OPENCLAW_STATE_DIR — sesiones, credenciales y cachés por instancia
  • agents.defaults.workspace — raíz del workspace por instancia
  • gateway.port (o --port) — único por instancia
  • Los puertos derivados (browser/canvas) no deben solaparse

Si se comparten, tendrás condiciones de carrera en la configuración y conflictos de puertos.

Recomendado: perfiles (--profile)

Los perfiles asignan automáticamente OPENCLAW_STATE_DIR + OPENCLAW_CONFIG_PATH y agregan un sufijo a los nombres de servicio.

# principal
openclaw --profile main setup
openclaw --profile main gateway --port 18789

# rescate
openclaw --profile rescue setup
openclaw --profile rescue gateway --port 19001

Servicios por perfil:

openclaw --profile main gateway install
openclaw --profile rescue gateway install

Guía del bot de rescate

Ejecuta un segundo Gateway en el mismo host con los siguientes elementos propios:

  • perfil/configuración
  • directorio de estado
  • workspace
  • puerto base (más los puertos derivados)

Esto mantiene al bot de rescate aislado del bot principal para que pueda depurar o aplicar cambios de configuración si el bot primario está caído.

Espaciado de puertos: deja al menos 20 puertos entre los puertos base para que los puertos derivados de browser/canvas/CDP nunca colisionen.

Cómo instalar (bot de rescate)

# Bot principal (existente o nuevo, sin el parámetro --profile)
# Se ejecuta en el puerto 18789 + puertos Chrome CDC/Canvas/...
openclaw onboard
openclaw gateway install

# Bot de rescate (perfil y puertos aislados)
openclaw --profile rescue onboard
# Notas:
# - El nombre del workspace se postfija con -rescue por defecto
# - El puerto debería ser al menos 18789 + 20 puertos,
#   mejor elegir un puerto base completamente diferente, como 19789
# - El resto del onboarding es igual que el normal

# Para instalar el servicio (si no ocurrió automáticamente durante el onboarding)
openclaw --profile rescue gateway install

Mapeo de puertos (derivados)

Puerto base = gateway.port (o OPENCLAW_GATEWAY_PORT / --port).

  • Puerto del servicio de control del navegador = base + 2 (solo loopback)
  • El canvas host se sirve en el servidor HTTP del Gateway (mismo puerto que gateway.port)
  • Los puertos CDP de los perfiles del navegador se asignan automáticamente desde browser.controlPort + 9 .. + 108

Si sobrescribes alguno de estos en la configuración o en variables de entorno, debes mantenerlos únicos por instancia.

Notas sobre Browser/CDP (error frecuente)

  • No fijes browser.cdpUrl a los mismos valores en múltiples instancias.
  • Cada instancia necesita su propio puerto de control del navegador y rango CDP (derivado de su puerto de gateway).
  • Si necesitas puertos CDP explícitos, configura browser.profiles.<name>.cdpPort por instancia.
  • Chrome remoto: usa browser.profiles.<name>.cdpUrl (por perfil, por instancia).

Ejemplo manual con variables de entorno

OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \
OPENCLAW_STATE_DIR=~/.openclaw-main \
openclaw gateway --port 18789

OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \
OPENCLAW_STATE_DIR=~/.openclaw-rescue \
openclaw gateway --port 19001

Verificaciones rápidas

openclaw --profile main status
openclaw --profile rescue status
openclaw --profile rescue browser status