Nodes
Een node is een begeleidend apparaat (macOS/iOS/Android/headless) dat verbinding maakt met de Gateway WebSocket (dezelfde poort als operators) metrole: "node" en een opdrachtoppervlak blootstelt (bijv. canvas.*, camera.*, system.*) via node.invoke. Protocoldetails: Gateway-protocol.
Legacy-transport: Bridge-protocol (TCP JSONL; verouderd/verwijderd voor huidige nodes).
macOS kan ook in node-modus draaien: de menubalk-app maakt verbinding met de WS-server van de Gateway en stelt zijn lokale canvas-/camera-opdrachten bloot als een node (zodat openclaw nodes … tegen deze Mac werkt).
Notities:
- Nodes zijn randapparaten, geen gateways. Ze draaien de gatewayservice niet.
- Telegram/WhatsApp/etc.-berichten komen aan op de gateway, niet op nodes.
- Runbook voor probleemoplossing: /nodes/troubleshooting
Koppelen + status
WS-nodes gebruiken apparaatkoppeling. Nodes presenteren een apparaatidentiteit tijdensconnect; de Gateway
maakt een apparaatkoppelingsverzoek aan voor role: node. Keur goed via de apparaten-CLI (of UI).
Snelle CLI:
nodes statusmarkeert een node als gekoppeld wanneer zijn apparaatkoppelingsrolnodebevat.node.pair.*(CLI:openclaw nodes pending/approve/reject) is een aparte, door de gateway beheerde node-koppelingsopslag; deze blokkeert de WS-connect-handshake niet.
Externe node-host (system.run)
Gebruik een node-host wanneer je Gateway op één machine draait en je opdrachten op een andere wilt uitvoeren. Het model praat nog steeds met de gateway; de gateway stuurtexec-aanroepen door naar de node-host wanneer host=node is geselecteerd.
Wat draait waar
- Gateway-host: ontvangt berichten, draait het model, routeert tool-aanroepen.
- Node-host: voert
system.run/system.whichuit op de node-machine. - Goedkeuringen: afgedwongen op de node-host via
~/.openclaw/exec-approvals.json.
Start een node-host (voorgrond)
Op de node-machine:Externe gateway via SSH-tunnel (loopback-binding)
Als de Gateway aan loopback bindt (gateway.bind=loopback, standaard in lokale modus),
kunnen externe node-hosts niet direct verbinden. Maak een SSH-tunnel en richt de
node-host op het lokale uiteinde van de tunnel.
Voorbeeld (node-host -> gateway-host):
- Het token is
gateway.auth.tokenuit de gatewayconfig (~/.openclaw/openclaw.jsonop de gateway-host). openclaw node runleestOPENCLAW_GATEWAY_TOKENvoor authenticatie.
Start een node-host (service)
Koppelen + naam geven
Op de gateway-host:--display-nameopopenclaw node run/openclaw node install(blijft bewaard in~/.openclaw/node.jsonop de node).openclaw nodes rename --node <id|name|ip> --name "Build Node"(gateway-override).
Sta de opdrachten toe (allowlist)
Uitvoeringsgoedkeuringen zijn per node-host. Voeg allowlist-vermeldingen toe vanaf de gateway:~/.openclaw/exec-approvals.json.
Richt exec naar de node
Configureer standaardwaarden (gatewayconfig):exec-aanroep met host=node uitgevoerd op de node-host (onder voorbehoud van de
node-allowlist/goedkeuringen).
Gerelateerd:
Opdrachten inademen
Low-level (ruwe RPC):Schermafbeeldingen (canvas-snapshots)
Als de node de Canvas toont (WebView), retourneertcanvas.snapshot { format, base64 }.
CLI-hulpprogramma (schrijft naar een tijdelijk bestand en print MEDIA:<path>):
Canvas-bediening
canvas presentaccepteert URL’s of lokale bestandspaden (--target), plus optionele--x/--y/--width/--heightvoor positionering.canvas evalaccepteert inline JS (--js) of een positioneel argument.
A2UI (Canvas)
- Alleen A2UI v0.8 JSONL wordt ondersteund (v0.9/createSurface wordt geweigerd).
Foto’s + video’s (node-camera)
Foto’s (jpg):
mp4):
- De node moet op de voorgrond staan voor
canvas.*encamera.*(achtergrondaanroepen retournerenNODE_BACKGROUND_UNAVAILABLE). - Clipduur is begrensd (momenteel
<= 60s) om te grote base64-payloads te voorkomen. - Android vraagt waar mogelijk om
CAMERA/RECORD_AUDIO-rechten; geweigerde rechten mislukken met*_PERMISSION_REQUIRED.
Schermopnamen (nodes)
Nodes stellenscreen.record bloot (mp4). Voorbeeld:
screen.recordvereist dat de node-app op de voorgrond staat.- Android toont de systeemmelding voor schermopname vóór het opnemen.
- Schermopnamen zijn begrensd tot
<= 60s. --no-audioschakelt microfoonopname uit (ondersteund op iOS/Android; macOS gebruikt systeemopname-audio).- Gebruik
--screen <index>om een display te selecteren wanneer meerdere schermen beschikbaar zijn.
Locatie (nodes)
Nodes stellenlocation.get bloot wanneer Locatie is ingeschakeld in de instellingen.
CLI-hulpprogramma:
- Locatie staat standaard uit.
- “Altijd” vereist systeemtoestemming; ophalen op de achtergrond is best-effort.
- Het antwoord bevat lat/lon, nauwkeurigheid (meters) en tijdstempel.
SMS (Android-nodes)
Android-nodes kunnensms.send blootstellen wanneer de gebruiker SMS-toestemming verleent en het apparaat telefonie ondersteunt.
Low-level aanroep:
- De toestemmingsprompt moet op het Android-apparaat worden geaccepteerd voordat de mogelijkheid wordt geadverteerd.
- Apparaten zonder telefonie (alleen wifi) zullen
sms.sendniet adverteren.
Systeemopdrachten (node-host / mac-node)
De macOS-node steltsystem.run, system.notify en system.execApprovals.get/set bloot.
De headless node-host stelt system.run, system.which en system.execApprovals.get/set bloot.
Voorbeelden:
system.runretourneert stdout/stderr/exitcode in de payload.system.notifyrespecteert de status van meldingsrechten in de macOS-app.system.runondersteunt--cwd,--env KEY=VAL,--command-timeouten--needs-screen-recording.system.notifyondersteunt--priority <passive|active|timeSensitive>en--delivery <system|overlay|auto>.- Node-hosts negeren
PATH-overschrijvingen. Als je extra PATH-vermeldingen nodig hebt, configureer dan de service-omgeving van de node-host (of installeer tools op standaardlocaties) in plaats vanPATHdoor te geven via--env. - In macOS node-modus wordt
system.runafgedwongen door exec-goedkeuringen in de macOS-app (Instellingen → Exec-goedkeuringen). Vragen/toegestane lijst/volledig gedragen zich hetzelfde als bij de headless node-host; geweigerde prompts retournerenSYSTEM_RUN_DENIED. - Op de headless node-host wordt
system.runafgedwongen door exec-goedkeuringen (~/.openclaw/exec-approvals.json).
Exec node-binding
Wanneer meerdere nodes beschikbaar zijn, kun je exec aan een specifieke node binden. Dit stelt de standaardnode in voorexec host=node (en kan per agent worden overschreven).
Globale standaard:
Machtigingen kaart
Nodes kunnen eenpermissions-kaart opnemen in node.list / node.describe, gesleuteld op permissienaam (bijv. screenRecording, accessibility) met booleaanse waarden (true = verleend).
Headless node-host (cross-platform)
OpenClaw kan een headless node-host (zonder UI) draaien die verbinding maakt met de Gateway WebSocket ensystem.run / system.which blootstelt. Dit is nuttig op Linux/Windows
of voor het draaien van een minimale node naast een server.
Starten:
- Koppeling is nog steeds vereist (de Gateway toont een node-goedkeuringsprompt).
- De node-host slaat zijn node-id, token, weergavenaam en gatewayverbindingsinfo op in
~/.openclaw/node.json. - Exec-goedkeuringen worden lokaal afgedwongen via
~/.openclaw/exec-approvals.json(zie Exec-goedkeuringen). - Op macOS geeft de headless node-host de voorkeur aan de exec-host van de companion-app wanneer bereikbaar en
valt terug op lokale uitvoering als de app niet beschikbaar is. Stel
OPENCLAW_NODE_EXEC_HOST=appin om de app te vereisen, ofOPENCLAW_NODE_EXEC_FALLBACK=0om fallback uit te schakelen. - Voeg
--tls/--tls-fingerprinttoe wanneer de Gateway-WS TLS gebruikt.
Mac node-modus
- De macOS-menubalk-app maakt verbinding met de Gateway-WS-server als een node (zodat
openclaw nodes …tegen deze Mac werkt). - In externe modus opent de app een SSH-tunnel voor de Gateway-poort en verbindt met
localhost.