Bridge-protocol (legacy node-transport)
Het Bridge-protocol is een legacy node-transport (TCP JSONL). Nieuwe node-clients moeten in plaats daarvan het uniforme Gateway WebSocket-protocol gebruiken. Als je een operator of node-client bouwt, gebruik het Gateway-protocol. Let op: Huidige OpenClaw-builds leveren de TCP-bridge-listener niet langer mee; dit document wordt bewaard ter historische referentie. Legacybridge.*-config-sleutels maken geen deel meer uit van het config-schema.
Waarom we beide hebben
- Beveiligingsgrens: de bridge stelt een kleine toegestane lijst bloot in plaats van het volledige gateway-API-oppervlak.
- Koppeling + node-identiteit: toelating van nodes is eigendom van de gateway en gekoppeld aan een per-node token.
- Discovery-UX: nodes kunnen gateways ontdekken via Bonjour op LAN, of direct verbinden via een tailnet.
- Loopback WS: het volledige WS-control plane blijft lokaal, tenzij getunneld via SSH.
Transport
- TCP, één JSON-object per regel (JSONL).
- Optionele TLS (wanneer
bridge.tls.enabledtrue is). - De legacy standaard listener-poort was
18790(huidige builds starten geen TCP-bridge).
bridgeTls=1 plus
bridgeTlsSha256, zodat nodes het certificaat kunnen pinnen. Houd er rekening mee dat Bonjour/mDNS TXT-records
niet geauthenticeerd zijn; clients mogen de geadverteerde fingerprint niet
als een gezaghebbende pin behandelen zonder expliciete gebruikersintentie of andere out-of-band-verificatie.
Handshake + koppeling
- Client verzendt
hellomet node-metadata + token (indien al gekoppeld). - Indien niet gekoppeld, antwoordt de gateway met
error(NOT_PAIRED/UNAUTHORIZED). - Client verzendt
pair-request. - De gateway wacht op goedkeuring en verzendt vervolgens
pair-okenhello-ok.
hello-ok retourneert serverName en kan canvasHostUrl bevatten.
Frames
Client → Gateway:req/res: scoped gateway RPC (chat, sessies, config, health, voicewake, skills.bins)event: node-signalen (spraaktranscript, agent-aanvraag, chat-abonnement, exec-levenscyclus)
invoke/invoke-res: node-opdrachten (canvas.*,camera.*,screen.record,location.get,sms.send)event: chat-updates voor geabonneerde sessiesping/pong: keepalive
src/gateway/server-bridge.ts (verwijderd).
Exec-levenscyclusgebeurtenissen
Nodes kunnenexec.finished- of exec.denied-gebeurtenissen uitsturen om system.run-activiteit zichtbaar te maken.
Deze worden in de gateway gemapt naar systeemgebeurtenissen. (Legacy nodes kunnen nog steeds exec.started uitsturen.)
Payload-velden (alle optioneel tenzij vermeld):
sessionKey(vereist): agent-sessie om de systeemgebeurtenis te ontvangen.runId: unieke exec-id voor groepering.command: ruwe of geformatteerde opdrachtstring.exitCode,timedOut,success,output: afrondingsdetails (alleen voltooid).reason: reden van weigering (alleen geweigerd).
Tailnet-gebruik
- Bind de bridge aan een tailnet-IP:
bridge.bind: "tailnet"in~/.openclaw/openclaw.json. - Clients verbinden via MagicDNS-naam of tailnet-IP.
- Bonjour overschrijdt geen netwerken; gebruik zo nodig handmatige host/poort of wide-area DNS‑SD.