Een node is een begeleidend apparaat (macOS/iOS/Android/headless) dat verbinding maakt met de Gateway WebSocket (dezelfde poort als operators) metDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
role: "node" en een opdrachtoppervlak beschikbaar maakt (bijv. canvas.*, camera.*, device.*, notifications.*, system.*) via node.invoke. Protocoldetails: Gateway-protocol.
Verouderd transport: Bridge-protocol (TCP JSONL;
alleen historisch voor huidige nodes).
macOS kan ook draaien in nodemodus: de menubalk-app maakt verbinding met de
WS-server van de Gateway en stelt zijn lokale canvas-/cameraopdrachten beschikbaar als node (zodat
openclaw nodes … werkt tegen deze Mac). In externe-gatewaymodus wordt browserautomatisering afgehandeld door de CLI-nodehost (openclaw node run of de
geïnstalleerde nodeservice), niet door de native app-node.
Opmerkingen:
- Nodes zijn randapparaten, geen gateways. Ze draaien de gatewayservice niet.
- Telegram/WhatsApp/etc.-berichten komen binnen 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 dit goed via de apparaten-CLI (of UI).
Snelle CLI:
requestId aangemaakt. Voer
openclaw devices list opnieuw uit voordat je goedkeurt.
Opmerkingen:
nodes statusmarkeert een node als gekoppeld wanneer de rol voor apparaatkoppelingnodebevat.- Het apparaatkoppelingsrecord is het duurzame contract voor goedgekeurde rollen. Tokenrotatie blijft binnen dat contract; het kan een gekoppelde node niet upgraden naar een andere rol waarvoor koppelingsgoedkeuring nooit is verleend.
node.pair.*(CLI:openclaw nodes pending/approve/reject/remove/rename) is een afzonderlijke gateway-beheerde opslag voor nodekoppelingen; deze bewaakt de WS-connect-handshake niet.openclaw nodes remove --node <id|name|ip>verwijdert verouderde vermeldingen uit die afzonderlijke gateway-beheerde opslag voor nodekoppelingen.- Goedkeuringsscope volgt de gedeclareerde opdrachten van het openstaande verzoek:
- verzoek zonder opdrachten:
operator.pairing - nodeopdrachten zonder exec:
operator.pairing+operator.write system.run/system.run.prepare/system.which:operator.pairing+operator.admin
- verzoek zonder opdrachten:
Externe nodehost (system.run)
Gebruik een nodehost wanneer je Gateway op de ene 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 nodehost wanneer host=node is geselecteerd.
Wat draait waar
- Gateway-host: ontvangt berichten, draait het model, routeert toolaanroepen.
- Nodehost: voert
system.run/system.whichuit op de nodemachine. - Goedkeuringen: afgedwongen op de nodehost via
~/.openclaw/exec-approvals.json.
- Node-uitvoeringen met goedkeuring binden exacte verzoekcontext.
- Voor directe shell-/runtimebestandsuitvoeringen bindt OpenClaw ook naar beste vermogen één concreet lokaal bestandsoperand en weigert de uitvoering als dat bestand vóór uitvoering wijzigt.
- Als OpenClaw niet exact één concreet lokaal bestand kan identificeren voor een interpreter-/runtimeopdracht, wordt uitvoering met goedkeuring geweigerd in plaats van volledige runtimedekking te veinzen. Gebruik sandboxing, afzonderlijke hosts of een expliciete vertrouwde allowlist/volledige workflow voor bredere interpretersemantiek.
Start een nodehost (voorgrond)
Op de nodemachine:Externe gateway via SSH-tunnel (loopback-bind)
Als de Gateway aan loopback bindt (gateway.bind=loopback, standaard in lokale modus),
kunnen externe nodehosts niet rechtstreeks verbinden. Maak een SSH-tunnel en wijs de
nodehost naar het lokale uiteinde van de tunnel.
Voorbeeld (nodehost -> gatewayhost):
openclaw node runondersteunt token- of wachtwoordauthenticatie.- Omgevingsvariabelen hebben de voorkeur:
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD. - Configuratiefallback is
gateway.auth.token/gateway.auth.password. - In lokale modus negeert de nodehost bewust
gateway.remote.token/gateway.remote.password. - In externe modus komen
gateway.remote.token/gateway.remote.passwordin aanmerking volgens externe precedentieregels. - Als actieve lokale
gateway.auth.*SecretRefs zijn geconfigureerd maar niet kunnen worden opgelost, faalt nodehostauthenticatie gesloten. - Nodehost-authenticatieoplossing respecteert alleen
OPENCLAW_GATEWAY_*-omgevingsvariabelen.
Start een nodehost (service)
Koppel + geef naam
Op de gatewayhost:openclaw devices list
opnieuw uit en keur de huidige requestId goed.
Naamgevingsopties:
--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).
Zet de opdrachten op de allowlist
Exec-goedkeuringen zijn per nodehost. Voeg allowlist-vermeldingen toe vanaf de gateway:~/.openclaw/exec-approvals.json.
Richt exec op de node
Configureer standaardwaarden (gatewayconfiguratie):exec-aanroep met host=node op de nodehost (onderhevig aan de
node-allowlist/-goedkeuringen).
host=auto kiest de node niet vanzelf impliciet, maar een expliciet per-aanroepverzoek host=node is toegestaan vanuit auto. Als je node-exec de standaard voor de sessie wilt maken, stel dan expliciet tools.exec.host=node of /exec host=node ... in.
Gerelateerd:
Opdrachten aanroepen
Laag niveau (ruwe RPC):Opdrachtbeleid
Nodeopdrachten moeten twee poorten passeren voordat ze kunnen worden aangeroepen:- De node moet de opdracht declareren in zijn WebSocket-lijst
connect.commands. - Het platformbeleid van de gateway moet de gedeclareerde opdracht toestaan.
canvas.*, camera.list, location.get en screen.snapshot.
Gevaarlijke of privacygevoelige opdrachten zoals camera.snap, camera.clip en
screen.record vereisen nog steeds expliciete opt-in met
gateway.nodes.allowCommands. gateway.nodes.denyCommands heeft altijd voorrang op
standaardwaarden en extra allowlist-vermeldingen.
Nadat een node zijn gedeclareerde opdrachtenlijst wijzigt, wijs je de oude apparaatkoppeling af
en keur je het nieuwe verzoek goed zodat de gateway de bijgewerkte opdrachtsnapshot opslaat.
Schermafbeeldingen (canvassnapshots)
Als de node de Canvas (WebView) toont, retourneertcanvas.snapshot { format, base64 }.
CLI-helper (schrijft naar een tijdelijk bestand en print MEDIA:<path>):
Canvas-bediening
canvas presentaccepteert URL’s of lokale bestandspaden (--target), plus optioneel--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 (nodecamera)
Foto’s (jpg):
mp4):
- De node moet op de voorgrond staan voor
canvas.*encamera.*(achtergrondaanroepen retournerenNODE_BACKGROUND_UNAVAILABLE). - Clipduur wordt begrensd (momenteel
<= 60s) om te grote base64-payloads te voorkomen. - Android zal waar mogelijk vragen om
CAMERA/RECORD_AUDIO-rechten; geweigerde rechten falen met*_PERMISSION_REQUIRED.
Schermopnamen (nodes)
Ondersteunde nodes stellenscreen.record beschikbaar (mp4). Voorbeeld:
- Beschikbaarheid van
screen.recordhangt af van het nodeplatform. - Schermopnamen worden begrensd tot
<= 60s. --no-audioschakelt microfoonopname uit op ondersteunde platforms.- Gebruik
--screen <index>om een scherm te selecteren wanneer meerdere schermen beschikbaar zijn.
Locatie (nodes)
Nodes stellenlocation.get beschikbaar wanneer Locatie is ingeschakeld in de instellingen.
CLI-helper:
- Locatie is standaard uitgeschakeld.
- “Altijd” vereist systeemtoestemming; ophalen op de achtergrond gebeurt naar beste vermogen.
- Het antwoord bevat lat/lon, nauwkeurigheid (meters) en tijdstempel.
SMS (Android-nodes)
Android-nodes kunnensms.send beschikbaar maken wanneer de gebruiker SMS-toestemming verleent en het apparaat telefonie ondersteunt.
Aanroep op laag niveau:
- De toestemmingsprompt moet op het Android-apparaat worden geaccepteerd voordat de capability wordt geadverteerd.
- Apparaten met alleen Wi-Fi zonder telefonie zullen
sms.sendniet adverteren.
Android-apparaat + opdrachten voor persoonlijke gegevens
Android-nodes kunnen extra opdrachtfamilies adverteren wanneer de bijbehorende capabilities zijn ingeschakeld. Beschikbare families:device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
- Bewegingsopdrachten zijn capability-gated op basis van beschikbare sensoren.
Systeemopdrachten (Node-host / Mac-Node)
De macOS-Node steltsystem.run, system.notify en system.execApprovals.get/set beschikbaar.
De headless Node-host stelt system.run, system.which en system.execApprovals.get/set beschikbaar.
Voorbeelden:
system.runretourneert stdout/stderr/exitcode in de payload.- Shell-uitvoering loopt nu via de
exec-tool methost=node;nodesblijft het directe RPC-oppervlak voor expliciete Node-opdrachten. nodes invokesteltsystem.runofsystem.run.prepareniet beschikbaar; die blijven alleen op het exec-pad.- Het exec-pad bereidt vóór goedkeuring een canoniek
systemRunPlanvoor. Zodra een goedkeuring is verleend, stuurt de Gateway dat opgeslagen plan door, niet eventuele later door de aanroeper bewerkte velden voor command/cwd/session. system.notifyrespecteert de status van meldingsmachtigingen in de macOS-app.- Onbekende Node-
platform- /deviceFamily-metadata gebruikt een conservatieve standaard-allowlist diesystem.runensystem.whichuitsluit. Als je die opdrachten bewust nodig hebt voor een onbekend platform, voeg ze dan expliciet toe viagateway.nodes.allowCommands. system.runondersteunt--cwd,--env KEY=VAL,--command-timeouten--needs-screen-recording.- Voor shell-wrappers (
bash|sh|zsh ... -c/-lc) worden aanvraaggebonden--env-waarden beperkt tot een expliciete allowlist (TERM,LANG,LC_*,COLORTERM,NO_COLOR,FORCE_COLOR). - Voor altijd-toestaan-beslissingen in allowlist-modus blijven bij bekende dispatch-wrappers (
env,nice,nohup,stdbuf,timeout) de paden van de interne executables behouden in plaats van wrapperpaden. Als uitpakken niet veilig is, wordt er niet automatisch een allowlist-vermelding opgeslagen. - Op Windows-Node-hosts in allowlist-modus vereisen shell-wrapper-runs via
cmd.exe /cgoedkeuring (alleen een allowlist-vermelding staat de wrapper-vorm niet automatisch toe). system.notifyondersteunt--priority <passive|active|timeSensitive>en--delivery <system|overlay|auto>.- Node-hosts negeren
PATH-overschrijvingen en verwijderen gevaarlijke opstart-/shell-sleutels (DYLD_*,LD_*,NODE_OPTIONS,PYTHON*,PERL*,RUBYOPT,SHELLOPTS,PS4). Als je extra PATH-vermeldingen nodig hebt, configureer dan de serviceomgeving van de Node-host (of installeer tools op standaardlocaties) in plaats vanPATHvia--envdoor te geven. - In macOS-Node-modus wordt
system.runbeperkt door exec-goedkeuringen in de macOS-app (Instellingen → Exec-goedkeuringen). Vragen/allowlist/volledig werken hetzelfde als bij de headless Node-host; geweigerde prompts retournerenSYSTEM_RUN_DENIED. - Op de headless Node-host wordt
system.runbeperkt door exec-goedkeuringen (~/.openclaw/exec-approvals.json).
Exec-Node-binding
Wanneer er meerdere Nodes beschikbaar zijn, kun je exec aan een specifieke Node binden. Dit stelt de standaard-Node in voorexec host=node (en kan per agent worden overschreven).
Globale standaard:
Machtigingenkaart
Nodes kunnen eenpermissions-kaart opnemen in node.list / node.describe, met machtigingsnaam als sleutel (bijv. screenRecording, accessibility) en booleaanse waarden (true = verleend).
Headless Node-host (cross-platform)
OpenClaw kan een headless Node-host (geen UI) uitvoeren die verbinding maakt met de Gateway WebSocket ensystem.run / system.which beschikbaar stelt. Dit is handig op Linux/Windows
of voor het uitvoeren van een minimale Node naast een server.
Start deze:
- Koppelen is nog steeds vereist (de Gateway toont een prompt voor apparaatkoppeling).
- De Node-host slaat zijn Node-id, token, weergavenaam en Gateway-verbindingsinformatie op in
~/.openclaw/node.json. - Exec-goedkeuringen worden lokaal afgedwongen via
~/.openclaw/exec-approvals.json(zie Exec-goedkeuringen). - Op macOS voert de headless Node-host
system.runstandaard lokaal uit. StelOPENCLAW_NODE_EXEC_HOST=appin omsystem.runvia de exec-host van de begeleidende app te routeren; voegOPENCLAW_NODE_EXEC_FALLBACK=0toe om de app-host te vereisen en gesloten te falen als deze niet beschikbaar is. - Voeg
--tls/--tls-fingerprinttoe wanneer de Gateway-WS TLS gebruikt.
Mac-Node-modus
- De macOS-menubalk-app maakt als Node verbinding met de Gateway-WS-server (zodat
openclaw nodes …werkt voor deze Mac). - In externe modus opent de app een SSH-tunnel voor de Gateway-poort en maakt verbinding met
localhost.