Bridge-Protokoll (Legacy-Node-Transport)
Das Bridge-Protokoll ist ein Legacy-Node-Transport (TCP JSONL). Neue Node-Clients sollten stattdessen das einheitliche Gateway-WebSocket-Protokoll verwenden. Wenn Sie einen Operator oder Node-Client entwickeln, verwenden Sie das Gateway-Protokoll. Hinweis: Aktuelle OpenClaw-Builds liefern den TCP-Bridge-Listener nicht mehr aus; dieses Dokument dient der historischen Referenz. Legacy-bridge.*-Konfigurationsschlüssel sind nicht mehr Teil des Konfigurationsschemas.
Warum es beides gibt
- Sicherheitsgrenze: Die Bridge stellt eine kleine Allowlist bereit statt der vollständigen Gateway-API-Oberfläche.
- Pairing + Node-Identität: Die Aufnahme von Nodes wird vom Gateway gesteuert und ist an ein Node-spezifisches Token gebunden.
- Discovery-UX: Nodes können Gateways per Bonjour im LAN entdecken oder sich direkt über ein Tailnet verbinden.
- Loopback-WS: Die vollständige WS-Kontrollebene bleibt lokal, sofern sie nicht per SSH getunnelt wird.
Transport
- TCP, ein JSON-Objekt pro Zeile (JSONL).
- Optionales TLS (wenn
bridge.tls.enabledtrue ist). - Der Legacy-Standard-Listener-Port war
18790(aktuelle Builds starten keine TCP-Bridge).
bridgeTls=1 plus
bridgeTlsSha256, damit Nodes das Zertifikat pinnen können. Beachten Sie, dass Bonjour/mDNS-TXT-Records
nicht authentifiziert sind; Clients dürfen den beworbenen Fingerabdruck nicht als
autoritativen Pin ohne ausdrückliche Benutzerabsicht oder andere Out-of-Band-Verifizierung behandeln.
Handshake + Pairing
- Der Client sendet
hellomit Node-Metadaten + Token (falls bereits gepairt). - Falls nicht gepairt, antwortet das Gateway mit
error(NOT_PAIRED/UNAUTHORIZED). - Der Client sendet
pair-request. - Das Gateway wartet auf die Freigabe und sendet dann
pair-okundhello-ok.
hello-ok liefert serverName zurück und kann canvasHostUrl enthalten.
Frames
Client → Gateway:req/res: Scoped Gateway-RPC (Chat, Sitzungen, Konfiguration, Health, Voicewake, skills.bins)event: Node-Signale (Sprachtranskript, Agent-Anfrage, Chat-Abonnement, Exec-Lifecycle)
invoke/invoke-res: Node-Befehle (canvas.*,camera.*,screen.record,location.get,sms.send)event: Chat-Updates für abonnierte Sitzungenping/pong: Keepalive
src/gateway/server-bridge.ts (entfernt).
Exec-Lifecycle-Ereignisse
Nodes könnenexec.finished- oder exec.denied-Ereignisse senden, um system.run-Aktivitäten offenzulegen.
Diese werden im Gateway auf Systemereignisse abgebildet. (Legacy-Nodes können weiterhin exec.started senden.)
Payload-Felder (alle optional, sofern nicht anders angegeben):
sessionKey(erforderlich): Agent-Sitzung, die das Systemereignis empfangen soll.runId: eindeutige Exec-ID zur Gruppierung.command: roher oder formatierter Befehlsstring.exitCode,timedOut,success,output: Abschlussdetails (nur bei „finished“).reason: Ablehnungsgrund (nur bei „denied“).
Tailnet-Nutzung
- Binden Sie die Bridge an eine Tailnet-IP:
bridge.bind: "tailnet"in~/.openclaw/openclaw.json. - Clients verbinden sich über den MagicDNS-Namen oder die Tailnet-IP.
- Bonjour überquert keine Netzwerke; verwenden Sie bei Bedarf manuelle Host/Port-Angaben oder Wide-Area DNS‑SD.