Door de Gateway beheerde koppeling (Optie B)
Bij door de Gateway beheerde koppeling is de Gateway de bron van waarheid voor welke nodes mogen deelnemen. UI’s (macOS-app, toekomstige clients) zijn slechts front-ends die openstaande aanvragen goedkeuren of afwijzen. Belangrijk: WS-nodes gebruiken apparaatkoppeling (rolnode) tijdens connect.
node.pair.* is een aparte koppelingsopslag en blokkeert de WS-handshake niet.
Alleen clients die expliciet node.pair.* aanroepen gebruiken deze flow.
Concepten
- Openstaande aanvraag: een node die heeft gevraagd om toe te treden; vereist goedkeuring.
- Gekoppelde node: goedgekeurde node met een uitgegeven auth-token.
- Transport: het Gateway-WS-eindpunt stuurt aanvragen door maar beslist niet over lidmaatschap. (Ondersteuning voor legacy TCP-bridge is verouderd/verwijderd.)
Hoe koppeling werkt
- Een node maakt verbinding met de Gateway-WS en vraagt om koppeling.
- De Gateway slaat een openstaande aanvraag op en verzendt
node.pair.requested. - Je keurt de aanvraag goed of wijst deze af (CLI of UI).
- Bij goedkeuring geeft de Gateway een nieuw token uit (tokens worden geroteerd bij herkoppeling).
- De node maakt opnieuw verbinding met het token en is nu “gekoppeld”.
CLI-workflow (headless-vriendelijk)
nodes status toont gekoppelde/verbonden nodes en hun mogelijkheden.
API-oppervlak (gatewayprotocol)
Gebeurtenissen:node.pair.requested— verzonden wanneer een nieuwe openstaande aanvraag wordt aangemaakt.node.pair.resolved— verzonden wanneer een aanvraag is goedgekeurd/afgewezen/verlopen.
node.pair.request— een openstaande aanvraag aanmaken of hergebruiken.node.pair.list— openstaande + gekoppelde nodes weergeven.node.pair.approve— een openstaande aanvraag goedkeuren (geeft token uit).node.pair.reject— een openstaande aanvraag afwijzen.node.pair.verify—{ nodeId, token }verifiëren.
node.pair.requestis idempotent per node: herhaalde aanroepen retourneren dezelfde openstaande aanvraag.- Goedkeuring genereert altijd een nieuw token; er wordt nooit een token geretourneerd vanuit
node.pair.request. - Aanvragen kunnen
silent: truebevatten als hint voor automatische goedkeuringsflows.
Automatische goedkeuring (macOS-app)
De macOS-app kan optioneel een stille goedkeuring proberen wanneer:- de aanvraag is gemarkeerd als
silent, en - de app een SSH-verbinding naar de Gateway-host kan verifiëren met dezelfde gebruiker.
Opslag (lokaal, privé)
De koppelingsstatus wordt opgeslagen onder de Gateway-statusdirectory (standaard~/.openclaw):
~/.openclaw/nodes/paired.json~/.openclaw/nodes/pending.json
OPENCLAW_STATE_DIR overschrijft, verhuist de map nodes/ mee.
Beveiligingsnotities:
- Tokens zijn geheimen; behandel
paired.jsonals gevoelig. - Het roteren van een token vereist hergoedkeuring (of het verwijderen van de nodevermelding).
Transportgedrag
- Het transport is stateless; het slaat geen lidmaatschap op.
- Als de Gateway offline is of koppeling is uitgeschakeld, kunnen nodes niet koppelen.
- Als de Gateway in externe modus staat, vindt koppeling nog steeds plaats tegen de opslag van de externe Gateway.