Discovery & Transporte
OpenClaw hat zwei unterschiedliche Probleme, die auf den ersten Blick ähnlich aussehen:- Operator-Fernsteuerung: die macOS-Menüleisten-App steuert ein Gateway, das anderswo läuft.
- Node-Pairing: iOS/Android (und zukünftige Nodes) finden ein Gateway und koppeln sich sicher.
openclaw gateway) zu halten und Clients (macOS-App, iOS) als Konsumenten zu behandeln.
Begriffe
- Gateway: ein einzelner, lang laufender Gateway-Prozess, der den Zustand besitzt (Sitzungen, Pairing, Node-Registry) und Kanäle ausführt. Die meisten Setups verwenden einen pro Host; isolierte Multi-Gateway-Setups sind möglich.
- Gateway WS (Control Plane): der WebSocket-Endpunkt auf
127.0.0.1:18789standardmäßig; kann über LAN/Tailnet viagateway.bindgebunden werden. - Direkter WS-Transport: ein LAN-/Tailnet-seitiger Gateway-WS-Endpunkt (ohne SSH).
- SSH-Transport (Fallback): Fernsteuerung durch Weiterleitung von
127.0.0.1:18789über SSH. - Legacy TCP Bridge (veraltet/entfernt): älterer Node-Transport (siehe Bridge protocol); wird nicht mehr zur Erkennung angekündigt.
Warum wir sowohl „direkt“ als auch SSH beibehalten
- Direkter WS bietet die beste UX im selben Netzwerk und innerhalb eines Tailnets:
- Auto-Erkennung im LAN via Bonjour
- Pairing-Tokens + ACLs werden vom Gateway verwaltet
- kein Shell-Zugriff erforderlich; die Protokolloberfläche bleibt schlank und auditierbar
- SSH bleibt der universelle Fallback:
- funktioniert überall dort, wo Sie SSH-Zugriff haben (auch über nicht zusammenhängende Netzwerke hinweg)
- übersteht Multicast-/mDNS-Probleme
- erfordert keine neuen eingehenden Ports außer SSH
Discovery-Eingaben (wie Clients erfahren, wo das Gateway ist)
1. Bonjour / mDNS (nur LAN)
Bonjour ist Best-Effort und überquert keine Netzwerke. Es wird nur für „gleiches LAN“-Bequemlichkeit verwendet. Zielrichtung:- Das Gateway kündigt seinen WS-Endpunkt via Bonjour an.
- Clients durchsuchen und zeigen eine „Gateway auswählen“-Liste an und speichern anschließend den gewählten Endpunkt.
Service-Beacon-Details
- Service-Typen:
_openclaw-gw._tcp(Gateway-Transport-Beacon)
- TXT-Schlüssel (nicht geheim):
role=gatewaylanHost=<hostname>.localsshPort=22(oder was auch immer angekündigt wird)gatewayPort=18789(Gateway WS + HTTP)gatewayTls=1(nur wenn TLS aktiviert ist)gatewayTlsSha256=<sha256>(nur wenn TLS aktiviert ist und ein Fingerprint verfügbar ist)canvasPort=18793(Standard-Canvas-Host-Port; bedient/__openclaw__/canvas/)cliPath=<path>(optional; absoluter Pfad zu einem ausführbarenopenclaw-Entrypoint oder Binary)tailnetDns=<magicdns>(optional; Hinweis, automatisch erkannt, wenn Tailscale verfügbar ist)
- Bonjour/mDNS-TXT-Records sind nicht authentifiziert. Clients dürfen TXT-Werte nur als UX-Hinweise behandeln.
- Beim Routing (Host/Port) sollte der aufgelöste Service-Endpunkt (SRV + A/AAAA) gegenüber in TXT angegebenen
lanHost,tailnetDnsodergatewayPortbevorzugt werden. - TLS-Pinning darf niemals zulassen, dass ein angekündigtes
gatewayTlsSha256einen zuvor gespeicherten Pin überschreibt. - iOS/Android-Knoten sollten direkt über Discovery hergestellte Verbindungen ausschließlich als TLS-only behandeln und vor dem Speichern eines erstmaligen Pins eine explizite „Diesem Fingerabdruck vertrauen“-Bestätigung (Out-of-Band-Verifizierung) verlangen.
OPENCLAW_DISABLE_BONJOUR=1deaktiviert die Ankündigung.gateway.bindin~/.openclaw/openclaw.jsonsteuert den Gateway-Bind-Modus.OPENCLAW_SSH_PORTüberschreibt den in TXT angekündigten SSH-Port (Standard: 22).OPENCLAW_TAILNET_DNSveröffentlicht einentailnetDns-Hinweis (MagicDNS).OPENCLAW_CLI_PATHüberschreibt den angekündigten CLI-Pfad.
2. Tailnet (netzwerkübergreifend)
Für Setups im Stil London/Wien hilft Bonjour nicht. Das empfohlene „direkte“ Ziel ist:- Tailscale-MagicDNS-Name (bevorzugt) oder eine stabile Tailnet-IP.
tailnetDns als optionalen Hinweis für Clients (einschließlich Weitbereichs-Beacons).
3. Manuelles / SSH-Ziel
Wenn es keine direkte Route gibt (oder direkt deaktiviert ist), können Clients jederzeit über SSH verbinden, indem sie den Loopback-Gateway-Port weiterleiten. Siehe Remote access.Transportauswahl (Client-Richtlinie)
Empfohlenes Client-Verhalten:- Wenn ein gekoppelter direkter Endpunkt konfiguriert und erreichbar ist, verwenden Sie ihn.
- Andernfalls: Wenn Bonjour ein Gateway im LAN findet, bieten Sie eine Ein-Tipp-Option „Dieses Gateway verwenden“ an und speichern Sie es als direkten Endpunkt.
- Andernfalls: Wenn eine Tailnet-DNS/IP konfiguriert ist, versuchen Sie direkt.
- Andernfalls: Fallback auf SSH.
Pairing + Auth (direkter Transport)
Das Gateway ist die maßgebliche Quelle für die Zulassung von Nodes/Clients.- Pairing-Anfragen werden im Gateway erstellt/genehmigt/abgelehnt (siehe Gateway pairing).
- Das Gateway erzwingt:
- Authentifizierung (Token / Schlüsselpaar)
- Scopes/ACLs (das Gateway ist kein roher Proxy zu jeder Methode)
- Rate-Limits
Verantwortlichkeiten nach Komponente
- Gateway: kündigt Discovery-Beacons an, trifft Pairing-Entscheidungen und hostet den WS-Endpunkt.
- macOS-App: hilft Ihnen bei der Auswahl eines Gateways, zeigt Pairing-Aufforderungen an und verwendet SSH nur als Fallback.
- iOS/Android-Nodes: durchsuchen Bonjour als Komfortfunktion und verbinden sich mit dem gekoppelten Gateway WS.