OpenClaw puede usar Bonjour (mDNS / DNS-SD) para descubrir un Gateway activo (endpoint WebSocket). La exploración multicast deDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
local. es una comodidad solo para LAN. El plugin bonjour
incluido es propietario de la publicación en LAN. Se inicia automáticamente en hosts macOS y es opcional en
Linux, Windows e implementaciones de Gateway en contenedores. Para descubrimiento entre redes, la misma
baliza también puede publicarse mediante un dominio DNS-SD de área amplia configurado. El descubrimiento
sigue siendo de mejor esfuerzo y no reemplaza la conectividad basada en SSH o Tailnet.
Bonjour de área amplia (DNS-SD unicast) sobre Tailscale
Si el nodo y el Gateway están en redes diferentes, mDNS multicast no cruzará el límite. Puedes conservar la misma experiencia de descubrimiento cambiando a DNS-SD unicast (“Bonjour de área amplia”) sobre Tailscale. Pasos de alto nivel:- Ejecuta un servidor DNS en el host del Gateway (alcanzable mediante Tailnet).
- Publica registros DNS-SD para
_openclaw-gw._tcpbajo una zona dedicada (ejemplo:openclaw.internal.). - Configura DNS dividido de Tailscale para que tu dominio elegido resuelva mediante ese servidor DNS para los clientes (incluido iOS).
openclaw.internal. es solo un ejemplo.
Los nodos iOS/Android exploran tanto local. como tu dominio de área amplia configurado.
Configuración del Gateway (recomendado)
Configuración única del servidor DNS (host del Gateway)
- escuchar en el puerto 53 solo en las interfaces Tailscale del Gateway
- servir tu dominio elegido (ejemplo:
openclaw.internal.) desde~/.openclaw/dns/<domain>.db
Configuración de DNS de Tailscale
En la consola de administración de Tailscale:- Agrega un servidor de nombres que apunte a la IP de tailnet del Gateway (UDP/TCP 53).
- Agrega DNS dividido para que tu dominio de descubrimiento use ese servidor de nombres.
_openclaw-gw._tcp en tu dominio de descubrimiento sin multicast.
Seguridad del listener del Gateway (recomendado)
El puerto WS del Gateway (predeterminado18789) se enlaza a loopback de forma predeterminada. Para acceso LAN/tailnet,
enlázalo explícitamente y mantén la autenticación habilitada.
Para configuraciones solo de tailnet:
- Establece
gateway.bind: "tailnet"en~/.openclaw/openclaw.json. - Reinicia el Gateway (o reinicia la app de la barra de menú de macOS).
Qué anuncia
Solo el Gateway anuncia_openclaw-gw._tcp. La publicidad multicast LAN la
proporciona el plugin bonjour incluido cuando el plugin está habilitado; la
publicación DNS-SD de área amplia sigue siendo propiedad del Gateway.
Tipos de servicio
_openclaw-gw._tcp- baliza de transporte del Gateway (usada por nodos macOS/iOS/Android).
Claves TXT (indicios no secretos)
El Gateway anuncia pequeños indicios no secretos para facilitar los flujos de interfaz:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(solo cuando TLS está habilitado)gatewayTlsSha256=<sha256>(solo cuando TLS está habilitado y la huella digital está disponible)canvasPort=<port>(solo cuando el host de canvas está habilitado; actualmente el mismo quegatewayPort)transport=gatewaytailnetDns=<magicdns>(solo modo completo de mDNS, indicio opcional cuando Tailnet está disponible)sshPort=<port>(solo modo completo; omitido en modos minimal y off)cliPath=<path>(solo modo completo; omitido en modos minimal y off)
- Los registros TXT de Bonjour/mDNS no están autenticados. Los clientes no deben tratar TXT como enrutamiento autoritativo.
- Los clientes deben enrutar usando el endpoint de servicio resuelto (SRV + A/AAAA). Trata
lanHost,tailnetDns,gatewayPortygatewayTlsSha256solo como indicios. - La selección automática de destino SSH también debe usar el host de servicio resuelto, no indicios solo de TXT.
- El pinning TLS nunca debe permitir que un
gatewayTlsSha256anunciado sobrescriba un pin almacenado previamente. - Los nodos iOS/Android deben tratar las conexiones directas basadas en descubrimiento como solo TLS y requerir confirmación explícita del usuario antes de confiar en una huella digital por primera vez.
Depuración en macOS
Herramientas integradas útiles:-
Explorar instancias:
-
Resolver una instancia (reemplaza
<instance>):
Depuración en logs del Gateway
El Gateway escribe un archivo de log rotativo (impreso al inicio comogateway log file: ...). Busca líneas bonjour:, especialmente:
bonjour: advertise failed ...bonjour: suppressing ciao cancellation ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...bonjour: disabling advertiser after ... failed restarts ...
probing, announcing activos y renombrados recientes por conflicto como
estados en progreso. Si el servicio nunca alcanza announced, OpenClaw finalmente
recrea el anunciador y, tras fallos repetidos, deshabilita Bonjour para ese
proceso de Gateway en lugar de volver a anunciar indefinidamente.
Bonjour usa el nombre de host del sistema para el host .local anunciado cuando es una
etiqueta DNS válida. Si el nombre de host del sistema contiene espacios, guiones bajos u otro
carácter inválido para etiquetas DNS, OpenClaw recurre a openclaw.local. Establece
OPENCLAW_MDNS_HOSTNAME=<name> antes de iniciar el Gateway cuando necesites una
etiqueta de host explícita.
Depuración en nodo iOS
El nodo iOS usaNWBrowser para descubrir _openclaw-gw._tcp.
Para capturar logs:
- Settings → Gateway → Advanced → Discovery Debug Logs
- Settings → Gateway → Advanced → Discovery Logs → reproduce → Copy
Cuándo habilitar Bonjour
Bonjour se inicia automáticamente para el arranque del Gateway con configuración vacía en hosts macOS porque la app local y los nodos iOS/Android cercanos suelen depender del descubrimiento en la misma LAN. Habilita Bonjour explícitamente cuando el descubrimiento automático en la misma LAN sea útil en Linux, Windows u otro host no macOS:discovery.mdns.mode para decidir cuántos metadatos TXT
publicar. El mismo modo controla indicios TXT opcionales en registros DNS-SD de área amplia.
El modo predeterminado es minimal; usa full solo cuando los clientes necesiten indicios cliPath o
sshPort. Usa off para suprimir multicast LAN sin cambiar la habilitación del plugin;
DNS-SD de área amplia aún puede publicar la baliza mínima del Gateway cuando
discovery.wideArea.enabled es true.
Cuándo deshabilitar Bonjour
Deja Bonjour deshabilitado cuando la publicidad multicast LAN sea innecesaria, no esté disponible o sea perjudicial. Los casos comunes son servidores no macOS, redes de puente Docker, WSL o una política de red que descarta multicast mDNS. En esos entornos, el Gateway sigue siendo alcanzable mediante su URL publicada, SSH, Tailnet o DNS-SD de área amplia, pero el descubrimiento automático LAN no es fiable. Prefiere la anulación de entorno existente cuando el problema tiene alcance de despliegue:Particularidades de Docker
El plugin Bonjour incluido deshabilita automáticamente la publicidad multicast LAN en contenedores detectados cuandoOPENCLAW_DISABLE_BONJOUR no está definido. Las redes de puente Docker
normalmente no reenvían multicast mDNS (224.0.0.251:5353) entre el contenedor
y la LAN, así que anunciar desde el contenedor rara vez hace que el descubrimiento funcione.
Particularidades importantes:
- Bonjour se inicia automáticamente en hosts macOS y es opcional en otros lugares. Dejarlo deshabilitado no detiene el Gateway; solo omite la publicidad multicast LAN.
- Deshabilitar Bonjour no cambia
gateway.bind; Docker aún usa de forma predeterminadaOPENCLAW_GATEWAY_BIND=lanpara que el puerto publicado del host pueda funcionar. - Deshabilitar Bonjour no deshabilita DNS-SD de área amplia. Usa descubrimiento de área amplia o Tailnet cuando el Gateway y el nodo no estén en la misma LAN.
- Reutilizar el mismo
OPENCLAW_CONFIG_DIRfuera de Docker no conserva la política de deshabilitación automática del contenedor. - Establece
OPENCLAW_DISABLE_BONJOUR=0solo para redes de host, macvlan u otra red donde se sepa que mDNS multicast pasa; establécelo en1para forzar la deshabilitación.
Solución de problemas de Bonjour deshabilitado
Si un nodo ya no descubre automáticamente el Gateway después de configurar Docker:-
Confirma si el Gateway se está ejecutando en modo automático, forzado activado o forzado desactivado:
-
Confirma que el propio Gateway sea alcanzable mediante el puerto publicado:
-
Usa un destino directo cuando Bonjour esté deshabilitado:
- UI de control o herramientas locales:
http://127.0.0.1:18789 - Clientes LAN:
http://<gateway-host>:18789 - Clientes entre redes: Tailnet MagicDNS, IP de Tailnet, túnel SSH o DNS-SD de área amplia
- UI de control o herramientas locales:
-
Si habilitaste deliberadamente el plugin Bonjour en Docker y forzaste la publicidad
con
OPENCLAW_DISABLE_BONJOUR=0, prueba multicast desde el host:Si la exploración está vacía o los logs del Gateway muestran cancelaciones repetidas del watchdog de ciao, restauraOPENCLAW_DISABLE_BONJOUR=1y usa una ruta directa o Tailnet.
Modos de fallo comunes
- Bonjour no cruza redes: usa Tailnet o SSH.
- Multicast bloqueado: algunas redes Wi-Fi deshabilitan mDNS.
- Anunciador atascado en probing/announcing: hosts con multicast bloqueado, puentes de contenedor, WSL o cambios de interfaz pueden dejar el anunciador ciao en un estado no anunciado. OpenClaw reintenta unas pocas veces y luego deshabilita Bonjour para el proceso de Gateway actual en lugar de reiniciar el anunciador indefinidamente.
- Red de puente Docker: Bonjour se deshabilita automáticamente en contenedores detectados.
Establece
OPENCLAW_DISABLE_BONJOUR=0solo para host, macvlan u otra red compatible con mDNS. - Suspensión / cambios de interfaz: macOS puede perder temporalmente resultados mDNS; reintenta.
- La exploración funciona pero la resolución falla: mantén los nombres de máquina simples (evita emojis o puntuación), luego reinicia el Gateway. El nombre de instancia del servicio deriva del nombre de host, por lo que nombres demasiado complejos pueden confundir algunos resolvedores.
Nombres de instancia escapados (\032)
Bonjour/DNS-SD a menudo escapa bytes en nombres de instancia de servicio como secuencias decimales \DDD
(p. ej., los espacios se convierten en \032).
- Esto es normal a nivel de protocolo.
- Las UI deben decodificar para la visualización (iOS usa
BonjourEscapes.decode).
Habilitación / deshabilitación / configuración
- Los hosts macOS inician automáticamente el Plugin de descubrimiento LAN incluido de forma predeterminada.
openclaw plugins enable bonjourhabilita el Plugin de descubrimiento LAN incluido en hosts donde no está habilitado de forma predeterminada.openclaw plugins disable bonjourdeshabilita el anuncio de multidifusión LAN al deshabilitar el Plugin incluido.OPENCLAW_DISABLE_BONJOUR=1deshabilita el anuncio de multidifusión LAN sin cambiar la configuración del Plugin; los valores verdaderos aceptados son1,true,yesyon(heredado:OPENCLAW_DISABLE_BONJOUR).OPENCLAW_DISABLE_BONJOUR=0fuerza la activación del anuncio de multidifusión LAN, incluso dentro de contenedores detectados; los valores falsos aceptados son0,false,noyoff.- Cuando el Plugin Bonjour está habilitado y
OPENCLAW_DISABLE_BONJOURno está definido, Bonjour anuncia en hosts normales y se deshabilita automáticamente dentro de contenedores detectados. gateway.binden~/.openclaw/openclaw.jsoncontrola el modo de enlace del Gateway.OPENCLAW_SSH_PORTanula el puerto SSH cuando se anunciasshPort(heredado:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpublica una sugerencia de MagicDNS en TXT cuando el modo completo de mDNS está habilitado (heredado:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHanula la ruta anunciada de la CLI (heredado:OPENCLAW_CLI_PATH).
Documentación relacionada
- Política de descubrimiento y selección de transporte: Descubrimiento
- Emparejamiento de Node + aprobaciones: Emparejamiento del Gateway