Caricamento in corso...
Caricamento in corso...
Last synced: Today, 22:00
Technical reference for the OpenClaw framework. Real-time synchronization with the official documentation engine.
Use this file to discover all available pages before exploring further.
OpenClaw uses Bonjour (mDNS / DNS‑SD) to discover an active Gateway (WebSocket endpoint). Multicast
local.bonjourIf the node and gateway are on different networks, multicast mDNS won’t cross the boundary. You can keep the same discovery UX by switching to unicast DNS‑SD ("Wide‑Area Bonjour") over Tailscale.
High‑level steps:
_openclaw-gw._tcpopenclaw.internal.OpenClaw supports any discovery domain;
openclaw.internal.local.json5{ gateway: { bind: "tailnet" }, // tailnet-only (recommended) discovery: { wideArea: { enabled: true } }, // enables wide-area DNS-SD publishing }
bashopenclaw dns setup --apply
This installs CoreDNS and configures it to:
openclaw.internal.~/.openclaw/dns/<domain>.dbValidate from a tailnet‑connected machine:
bashdns-sd -B _openclaw-gw._tcp openclaw.internal. dig @<TAILNET_IPV4> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short
In the Tailscale admin console:
Once clients accept tailnet DNS, iOS nodes and CLI discovery can browse
_openclaw-gw._tcpThe Gateway WS port (default
18789For tailnet‑only setups:
gateway.bind: "tailnet"~/.openclaw/openclaw.jsonOnly the Gateway advertises
_openclaw-gw._tcpbonjour_openclaw-gw._tcpThe Gateway advertises small non‑secret hints to make UI flows convenient:
role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>gatewayTls=1gatewayTlsSha256=<sha256>canvasPort=<port>gatewayPorttransport=gatewaytailnetDns=<magicdns>sshPort=<port>cliPath=<path>Security notes:
lanHosttailnetDnsgatewayPortgatewayTlsSha256gatewayTlsSha256Useful built‑in tools:
Browse instances:
bashdns-sd -B _openclaw-gw._tcp local.
Resolve one instance (replace
<instance>bashdns-sd -L "<instance>" _openclaw-gw._tcp local.
If browsing works but resolving fails, you’re usually hitting a LAN policy or mDNS resolver issue.
The Gateway writes a rolling log file (printed on startup as
gateway log file: ...bonjour:bonjour: advertise failed ...bonjour: suppressing ciao cancellation ...bonjour: ... name conflict resolvedhostname conflict resolvedbonjour: watchdog detected non-announced service ...bonjour: disabling advertiser after ... failed restarts ...Bonjour uses the system hostname for the advertised
.localopenclaw.localOPENCLAW_MDNS_HOSTNAME=<name>The iOS node uses
NWBrowser_openclaw-gw._tcpTo capture logs:
The log includes browser state transitions and result‑set changes.
Disable Bonjour only when LAN multicast advertising is unavailable or harmful. The common case is a Gateway running behind Docker bridge networking, WSL, or a network policy that drops mDNS multicast. In those environments the Gateway is still reachable through its published URL, SSH, Tailnet, or wide-area DNS-SD, but LAN auto-discovery is not reliable.
Prefer the existing environment override when the problem is deployment-scoped:
bashOPENCLAW_DISABLE_BONJOUR=1
That disables LAN multicast advertising without changing plugin configuration. It is safe for Docker images, service files, launch scripts, and one-off debugging because the setting disappears when the environment does.
Use plugin configuration only when you intentionally want to turn off the bundled LAN discovery plugin for that OpenClaw config:
bashopenclaw plugins disable bonjour
The bundled Bonjour plugin auto-disables LAN multicast advertising in detected containers when
OPENCLAW_DISABLE_BONJOUR224.0.0.251:5353Important gotchas:
gateway.bindOPENCLAW_GATEWAY_BIND=lanOPENCLAW_CONFIG_DIROPENCLAW_DISABLE_BONJOUR=01If a node no longer auto-discovers the Gateway after Docker setup:
Confirm whether the Gateway is running in auto, forced-on, or forced-off mode:
bashdocker compose config | grep OPENCLAW_DISABLE_BONJOUR
Confirm the Gateway itself is reachable through the published port:
bashcurl -fsS http://127.0.0.1:18789/healthz
Use a direct target when Bonjour is disabled:
http://127.0.0.1:18789http://<gateway-host>:18789If you deliberately enabled Bonjour in Docker with
OPENCLAW_DISABLE_BONJOUR=0bashdns-sd -B _openclaw-gw._tcp local.
If browsing is empty or the Gateway logs show repeated ciao watchdog cancellations, restore
OPENCLAW_DISABLE_BONJOUR=1OPENCLAW_DISABLE_BONJOUR=0\032Bonjour/DNS‑SD often escapes bytes in service instance names as decimal
\DDD\032BonjourEscapes.decodeopenclaw plugins disable bonjouropenclaw plugins enable bonjourOPENCLAW_DISABLE_BONJOUR=11trueyesonOPENCLAW_DISABLE_BONJOUROPENCLAW_DISABLE_BONJOUR=00falsenooffOPENCLAW_DISABLE_BONJOURgateway.bind~/.openclaw/openclaw.jsonOPENCLAW_SSH_PORTsshPortOPENCLAW_SSH_PORTOPENCLAW_TAILNET_DNSOPENCLAW_TAILNET_DNSOPENCLAW_CLI_PATHOPENCLAW_CLI_PATH© 2024 TaskFlow Mirror
Powered by TaskFlow Sync Engine