Waarom deze bestond
- Beveiligingsgrens: stelde een kleine toelatingslijst beschikbaar in plaats van het volledige API-oppervlak van de Gateway.
- Koppeling + node-identiteit: toelating van nodes werd beheerd door de Gateway en was gekoppeld aan een token per node.
- Detectie-UX: nodes konden Gateways via Bonjour op het LAN detecteren of rechtstreeks via een tailnet verbinding maken.
- Loopback-WS: het volledige WS-besturingsvlak bleef lokaal, tenzij het via SSH werd getunneld.
Transport
- TCP, één JSON-object per regel (JSONL).
- Optionele TLS (
bridge.tls.enabled: true). - De standaardlistenerpoort was
18790.
bridgeTls=1 plus bridgeTlsSha256 als niet-geheime aanwijzing. Bonjour-/mDNS-TXT-records zijn niet geauthenticeerd; clients konden de geadverteerde vingerafdruk zonder andere verificatie buiten het communicatiekanaal niet als gezaghebbende pin beschouwen.
Handshake en koppeling
- De client verzendt
hellomet nodemetadata plus een token (indien al gekoppeld). - Indien niet gekoppeld, antwoordt de Gateway met
error(NOT_PAIRED/UNAUTHORIZED). - De client verzendt
pair-request. - De Gateway wacht op goedkeuring en verzendt vervolgens
pair-okenhello-ok.
hello-ok retourneerde voorheen serverName; gehoste Plugin-oppervlakken worden nu via pluginSurfaceUrls in het huidige Gateway-protocol aangekondigd (Canvas/A2UI gebruikt pluginSurfaceUrls.canvas).
Frames
Van client naar Gateway:req/res: afgebakende Gateway-RPC (chat, sessies, configuratie, status, voicewake, skills.bins).event: nodesignalen (spraaktranscript, agentverzoek, chatabonnement, uitvoeringslevenscyclus).
invoke/invoke-res: nodeopdrachten (canvas.*,camera.*,screen.record,location.get,sms.send).event: chatupdates voor sessies waarop een abonnement bestond.ping/pong: keepalive.
src/gateway/server-bridge.ts (verwijderd).
Gebeurtenissen in de uitvoeringslevenscyclus
Nodes verzondenexec.finished om voltooide system.run-activiteit beschikbaar te stellen, die door de Gateway aan systeemgebeurtenissen werd gekoppeld (verouderde nodes konden ook exec.started verzenden). exec.denied markeerde een geweigerde system.run-poging als definitieve weigering zonder een systeemgebeurtenis in de wachtrij te plaatsen of agentwerk te activeren.
Payloadvelden (allemaal optioneel, tenzij anders vermeld):
Historisch tailnet-gebruik
- Koppel de bridge aan een tailnet-IP:
bridge.bind: "tailnet"in~/.openclaw/openclaw.json(alleen historisch;bridge.*is niet langer een geldige configuratie). - Clients maakten verbinding via een MagicDNS-naam of tailnet-IP.
- Bonjour werkt niet over verschillende netwerken; anders was wide-area DNS-SD of een handmatig opgegeven host/poort vereist.