Noder¶
A node er en følgesvend enhed (macOS/iOS/Android/headles), der forbinder til Gateway WebSocket (samme port som operatører) med rolle: "node" og udsætter en kommando overflade (f. eks. . canvas.*, kamera.*, system.*) via node.invoke. Protocol details: Gateway protocol.
Legacy-transport: Bridge-protokol (TCP JSONL; forældet/fjernet for aktuelle noder).
macOS kan også køre i node-tilstand: menulinje-appen forbinder til Gateway’ens WS-server og eksponerer sine lokale canvas-/kamera-kommandoer som en node (så openclaw nodes … virker mod denne Mac).
Noter:
- Knuder er perifere enheder, ikke gateways. De kører ikke gateway service.
- Telegram/WhatsApp/etc.-beskeder lander på gatewayen, ikke på noder.
- Fejlsøgnings-runbook: /nodes/troubleshooting
Parring + status¶
WS noder bruger enhedsparring. Nodes viser en enhedsidentitet under connect; Gateway
skaber en enheds parringsanmodning om rolle: node. Godkend via enhederne CLI (eller UI).
Hurtig CLI:
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>
Noter:
nodes statusmarkerer en node som parret, når dens enhedsparringsrolle inkluderernode.node.pair.*(CLI:openclaw nodes pending/approve/reject) er et separat gateway-ejet node-parringslager; det styrer ikke WS-connect-handshaken.
Fjern node-vært (system.run)¶
Brug en ** node vært ** når din Gateway kører på en maskine og du vil have kommandoer
til at udføre på en anden. Modellen taler stadig til gateway; gateway
fremad exec opkald til node vært når host=node er valgt.
Hvad kører hvor¶
- Gateway-vært: modtager beskeder, kører modellen, router værktøjskald.
- Node-vært: udfører
system.run/system.whichpå node-maskinen. - Godkendelser: håndhæves på node-værten via
~/.openclaw/exec-approvals.json.
Start en node-vært (forgrund)¶
På node-maskinen:
openclaw node run --host <gateway-host> --port 18789 --display-name "Build Node"
Fjern gateway via SSH-tunnel (loopback-bind)¶
Hvis Gateway binder til loopback (gateway.bind=loopback, standard i lokal tilstand), kan
remote node værter ikke forbinde direkte. Opret en SSH-tunnel og peg
-knudeværten i den lokale ende af tunnelen.
Eksempel (node-vært -> gateway-vært):
# Terminal A (keep running): forward local 18790 -> gateway 127.0.0.1:18789
ssh -N -L 18790:127.0.0.1:18789 user@gateway-host
# Terminal B: export the gateway token and connect through the tunnel
export OPENCLAW_GATEWAY_TOKEN="<gateway-token>"
openclaw node run --host 127.0.0.1 --port 18790 --display-name "Build Node"
Noter:
- Tokenet er
gateway.auth.tokenfra gateway-konfigurationen (~/.openclaw/openclaw.jsonpå gateway-værten). openclaw node runlæserOPENCLAW_GATEWAY_TOKENtil autentificering.
Start en node-vært (tjeneste)¶
openclaw node install --host <gateway-host> --port 18789 --display-name "Build Node"
openclaw node restart
Par + navngiv¶
På gateway-værten:
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes list
Navngivningsmuligheder:
--display-namepåopenclaw node run/openclaw node install(bevares i~/.openclaw/node.jsonpå noden).openclaw nodes rename --node <id|name|ip> --name "Build Node"(gateway-override).
Tilladelsesliste for kommandoer¶
Exec godkendelser er per node vært. Tilføj tilladte indgange fra gateway:
openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
Godkendelser gemmes på node-værten i ~/.openclaw/exec-approvals.json.
Peg exec mod noden¶
Konfigurér standarder (gateway-konfiguration):
openclaw config set tools.exec.host node
openclaw config set tools.exec.security allowlist
openclaw config set tools.exec.node "<id-or-name>"
Eller pr. session:
/exec host=node security=allowlist node=<id-or-name>
Når det er sat, kører ethvert exec-kald med host=node på node-værten (underlagt
node-tilladelseslisten/godkendelser).
Relateret:
Kald af kommandoer¶
Lav-niveau (rå RPC):
openclaw nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'
Der findes højere-niveau hjælpere til de almindelige arbejdsgange “giv agenten et MEDIE-vedhæft”.
Skærmbilleder (canvas-snapshots)¶
Hvis noden viser Canvas (WebView), returnerer canvas.snapshot { format, base64 }.
CLI-hjælper (skriver til en midlertidig fil og udskriver MEDIA:<path>):
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format png
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
Canvas-kontroller¶
openclaw nodes canvas present --node <idOrNameOrIp> --target https://example.com
openclaw nodes canvas hide --node <idOrNameOrIp>
openclaw nodes canvas navigate https://example.com --node <idOrNameOrIp>
openclaw nodes canvas eval --node <idOrNameOrIp> --js "document.title"
Noter:
canvas presentaccepterer URL’er eller lokale filstier (--target) samt valgfri--x/--y/--width/--heighttil positionering.canvas evalaccepterer inline JS (--js) eller et positionsargument.
A2UI (Canvas)¶
openclaw nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"
openclaw nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonl
openclaw nodes canvas a2ui reset --node <idOrNameOrIp>
Noter:
- Kun A2UI v0.8 JSONL understøttes (v0.9/createSurface afvises).
Fotos + videoer (node-kamera)¶
Fotos (jpg):
openclaw nodes camera list --node <idOrNameOrIp>
openclaw nodes camera snap --node <idOrNameOrIp> # default: both facings (2 MEDIA lines)
openclaw nodes camera snap --node <idOrNameOrIp> --facing front
Videoklip (mp4):
openclaw nodes camera clip --node <idOrNameOrIp> --duration 10s
openclaw nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
Noter:
- Noden skal være i forgrunden for
canvas.*ogcamera.*(baggrundskald returnererNODE_BACKGROUND_UNAVAILABLE). - Kliplængde er begrænset (pt.
<= 60s) for at undgå for store base64-payloads. - Android vil bede om
CAMERA/RECORD_AUDIO-tilladelser, når muligt; afviste tilladelser fejler med*_PERMISSION_REQUIRED.
Skærmoptagelser (noder)¶
Knuder udsætter 'screen.record' (mp4). Eksempel:
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio
Noter:
screen.recordkræver, at node-appen er i forgrunden.- Android viser systemets prompt for skærmoptagelse før optagning.
- Skærmoptagelser er begrænset til
<= 60s. --no-audiodeaktiverer mikrofonoptagelse (understøttet på iOS/Android; macOS bruger systemets optagelseslyd).- Brug
--screen <index>til at vælge en skærm, når flere skærme er tilgængelige.
Placering (noder)¶
Noder eksponerer location.get, når Placering er aktiveret i indstillingerne.
CLI-hjælper:
openclaw nodes location get --node <idOrNameOrIp>
openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
Noter:
- Placering er slået fra som standard.
- “Altid” kræver systemtilladelse; baggrundshentning er best-effort.
- Svaret inkluderer lat/lon, nøjagtighed (meter) og tidsstempel.
SMS (Android-noder)¶
Android-noder kan eksponere sms.send, når brugeren giver SMS-tilladelse, og enheden understøtter telefoni.
Lav-niveau kald:
openclaw nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from OpenClaw"}'
Noter:
- Tilladelses-prompten skal accepteres på Android-enheden, før kapabiliteten annonceres.
- Wi‑Fi‑only enheder uden telefoni vil ikke annoncere
sms.send.
Systemkommandoer (node-vært / mac-node)¶
Den macOS node udsætter system.run, system.notify, og system.execApprovals.get/set.
Den hovedløse node vært udsætter system.run, system.which, og system.execApprovals.get/set.
Eksempler:
openclaw nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
openclaw nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
Noter:
system.runreturnerer stdout/stderr/exit-kode i payloaden.system.notifyrespekterer notifikationstilladelsens tilstand i macOS-appen.system.rununderstøtter--cwd,--env KEY=VAL,--command-timeoutog--needs-screen-recording.system.notifyunderstøtter--priority <passive|active|timeSensitive>og--delivery <system|overlay|auto>.- macOS-noder ignorerer
PATH-overrides; headless node-værter accepterer kunPATH, når det præfikser node-værtens PATH. - På macOS node mode er
system.rungated ved exec godkendelser i macOS app (Settings → Exec godkendelser). Ask/allowlist/full opfører sig på samme måde som den hovedløse node vært; nægtede beder returnereSYSTEM_RUN_DENIED. - På headless node-vært er
system.runstyret af exec-godkendelser (~/.openclaw/exec-approvals.json).
Exec node-binding¶
Når flere noder er tilgængelige, kan du binde exec til en bestemt node. Dette sætter standardindholdselementet for 'exec host=node' (og kan tilsidesættes pr. agent).
Global standard:
openclaw config set tools.exec.node "node-id-or-name"
Pr.-agent override:
openclaw config get agents.list
openclaw config set agents.list[0].tools.exec.node "node-id-or-name"
Fjern binding for at tillade enhver node:
openclaw config unset tools.exec.node
openclaw config unset agents.list[0].tools.exec.node
Tilladelseskort¶
Noder kan inkludere et permissions-kort i node.list / node.describe, nøglet efter tilladelsesnavn (fx screenRecording, accessibility) med boolske værdier (true = givet).
Headless node-vært (på tværs af platforme)¶
OpenClaw kan køre en headless node host (no UI), der forbinder til Gateway
WebSocket og udsætter system.run / system.which. Dette er nyttigt på Linux/Windows
eller til at køre en minimal node sammen med en server.
Start den:
openclaw node run --host <gateway-host> --port 18789
Noter:
- Parring er stadig påkrævet (Gateway vil vise en node-godkendelsesprompt).
- Node-værten gemmer sit node-id, token, visningsnavn og gateway-forbindelsesinfo i
~/.openclaw/node.json. - Exec-godkendelser håndhæves lokalt via
~/.openclaw/exec-approvals.json(se Exec-godkendelser). - På macOS den hovedløse node vært foretrækker følgesvend app exec vært, når tilgængelig og falder
tilbage til lokal udførelse, hvis app er utilgængelig. Sæt
OPENCLAW_NODE_EXEC_HOST=appfor at kræve appen, ellerOPENCLAW_NODE_EXEC_FALLBACK=0for at deaktivere fallback. - Tilføj
--tls/--tls-fingerprint, når Gateway WS bruger TLS.
Mac node-tilstand¶
- macOS-menulinje-appen forbinder til Gateway WS-serveren som en node (så
openclaw nodes …virker mod denne Mac). - I fjern-tilstand åbner appen en SSH-tunnel til Gateway-porten og forbinder til
localhost.