> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Door de Gateway beheerde koppeling

# 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** (rol `node`) 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

1. Een node maakt verbinding met de Gateway-WS en vraagt om koppeling.
2. De Gateway slaat een **openstaande aanvraag** op en verzendt `node.pair.requested`.
3. Je keurt de aanvraag goed of wijst deze af (CLI of UI).
4. Bij goedkeuring geeft de Gateway een **nieuw token** uit (tokens worden geroteerd bij herkoppeling).
5. De node maakt opnieuw verbinding met het token en is nu “gekoppeld”.

Openstaande aanvragen verlopen automatisch na **5 minuten**.

## CLI-workflow (headless-vriendelijk)

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes reject <requestId>
openclaw nodes status
openclaw nodes rename --node <id|name|ip> --name "Living Room iPad"
```

`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.

Methoden:

* `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.

Notities:

* `node.pair.request` is 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: true` bevatten 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.

Als stille goedkeuring mislukt, valt deze terug op de normale “Goedkeuren/Afwijzen”-prompt.

## Opslag (lokaal, privé)

De koppelingsstatus wordt opgeslagen onder de Gateway-statusdirectory (standaard `~/.openclaw`):

* `~/.openclaw/nodes/paired.json`
* `~/.openclaw/nodes/pending.json`

Als je `OPENCLAW_STATE_DIR` overschrijft, verhuist de map `nodes/` mee.

Beveiligingsnotities:

* Tokens zijn geheimen; behandel `paired.json` als 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.
