Descoberta Bonjour / mDNS
O OpenClaw usa Bonjour (mDNS / DNS‑SD) para descobrir um Gateway ativo (endpoint WebSocket). A navegação multicastlocal. é uma conveniência apenas para LAN. Para descoberta entre redes, o
mesmo beacon também pode ser publicado por meio de um domínio DNS-SD de ampla área configurado. A descoberta
ainda é best-effort e não substitui conectividade baseada em SSH ou Tailnet.
Bonjour de ampla área (Unicast DNS-SD) sobre Tailscale
Se o nó e o gateway estiverem em redes diferentes, o mDNS multicast não atravessará o limite. Você pode manter a mesma UX de descoberta mudando para unicast DNS‑SD (“Wide‑Area Bonjour”) sobre Tailscale. Etapas em alto nível:- Execute um servidor DNS no host do gateway (acessível pela Tailnet).
- Publique registros DNS‑SD para
_openclaw-gw._tcpem uma zona dedicada (exemplo:openclaw.internal.). - Configure split DNS no Tailscale para que o domínio escolhido resolva por meio desse servidor DNS para os clientes (incluindo iOS).
openclaw.internal. é apenas um exemplo.
Nós iOS/Android navegam tanto em local. quanto no seu domínio de ampla área configurado.
Configuração do gateway (recomendada)
Configuração única do servidor DNS (host do gateway)
- escutar na porta 53 apenas nas interfaces Tailscale do gateway
- servir o domínio escolhido (exemplo:
openclaw.internal.) a partir de~/.openclaw/dns/<domain>.db
Configurações de DNS do Tailscale
No console de administração do Tailscale:- Adicione um nameserver apontando para o IP tailnet do gateway (UDP/TCP 53).
- Adicione split DNS para que seu domínio de descoberta use esse nameserver.
_openclaw-gw._tcp no seu domínio de descoberta sem multicast.
Segurança do listener do gateway (recomendada)
A porta WS do Gateway (padrão18789) se vincula ao loopback por padrão. Para acesso por LAN/tailnet,
vincule explicitamente e mantenha a autenticação ativada.
Para configurações somente de tailnet:
- Defina
gateway.bind: "tailnet"em~/.openclaw/openclaw.json. - Reinicie o Gateway (ou reinicie o app da barra de menus do macOS).
O que anuncia
Somente o Gateway anuncia_openclaw-gw._tcp.
Tipos de serviço
_openclaw-gw._tcp— beacon de transporte do gateway (usado por nós macOS/iOS/Android).
Chaves TXT (dicas não sigilosas)
O Gateway anuncia pequenas dicas não sigilosas para tornar os fluxos de UI convenientes:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(somente quando TLS está ativado)gatewayTlsSha256=<sha256>(somente quando TLS está ativado e a impressão digital está disponível)canvasPort=<port>(somente quando o host do canvas está ativado; atualmente igual agatewayPort)transport=gatewaytailnetDns=<magicdns>(dica opcional quando a Tailnet está disponível)sshPort=<port>(somente no modo mDNS full; o DNS-SD de ampla área pode omiti-lo)cliPath=<path>(somente no modo mDNS full; o DNS-SD de ampla área ainda o grava como dica de instalação remota)
- Registros TXT de Bonjour/mDNS são não autenticados. Os clientes não devem tratar TXT como roteamento autoritativo.
- Os clientes devem rotear usando o endpoint do serviço resolvido (SRV + A/AAAA). Trate
lanHost,tailnetDns,gatewayPortegatewayTlsSha256apenas como dicas. - O direcionamento automático de SSH também deve usar o host do serviço resolvido, e não dicas somente de TXT.
- O pinning de TLS nunca deve permitir que um
gatewayTlsSha256anunciado substitua um pin armazenado anteriormente. - Nós iOS/Android devem tratar conexões diretas baseadas em descoberta como somente TLS e exigir confirmação explícita do usuário antes de confiar em uma impressão digital vista pela primeira vez.
Depuração no macOS
Ferramentas integradas úteis:-
Navegar por instâncias:
-
Resolver uma instância (substitua
<instance>):
Depuração nos logs do Gateway
O Gateway grava um arquivo de log rotativo (impresso na inicialização comogateway log file: ...). Procure por linhas bonjour:, especialmente:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Depuração no nó iOS
O nó iOS usaNWBrowser para descobrir _openclaw-gw._tcp.
Para capturar logs:
- Settings → Gateway → Advanced → Discovery Debug Logs
- Settings → Gateway → Advanced → Discovery Logs → reproduza → Copy
Modos de falha comuns
- Bonjour não atravessa redes: use Tailnet ou SSH.
- Multicast bloqueado: algumas redes Wi‑Fi desativam mDNS.
- Suspensão / mudança de interface: o macOS pode descartar temporariamente resultados mDNS; tente novamente.
- A navegação funciona, mas a resolução falha: mantenha os nomes das máquinas simples (evite emojis ou pontuação) e então reinicie o Gateway. O nome da instância do serviço deriva do nome do host, então nomes excessivamente complexos podem confundir alguns resolvedores.
Nomes de instância escapados (\032)
Bonjour/DNS‑SD frequentemente escapa bytes em nomes de instância de serviço como sequências decimais \DDD
(por exemplo, espaços se tornam \032).
- Isso é normal no nível de protocolo.
- As UIs devem decodificar para exibição (o iOS usa
BonjourEscapes.decode).
Desativação / configuração
OPENCLAW_DISABLE_BONJOUR=1desativa o anúncio (legado:OPENCLAW_DISABLE_BONJOUR).gateway.bindem~/.openclaw/openclaw.jsoncontrola o modo de bind do Gateway.OPENCLAW_SSH_PORTsubstitui a porta SSH quandosshPorté anunciado (legado:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpublica uma dica MagicDNS em TXT (legado:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHsubstitui o caminho da CLI anunciado (legado:OPENCLAW_CLI_PATH).
Documentação relacionada
- Política de descoberta e seleção de transporte: Discovery
- Pairing e aprovações de nós: Gateway pairing