Knoten
Ein Node ist ein Begleitgerät (macOS/iOS/Android/headless), das sich mit dem Gateway WebSocket (gleicher Port wie Operatoren) mitrole: "node" verbindet und eine Befehlsoberfläche (z. B. canvas.*, camera.*, system.*) über node.invoke bereitstellt. Protokolldetails: Gateway protocol.
Legacy-Transport: Bridge protocol (TCP JSONL; veraltet/entfernt für aktuelle Nodes).
macOS kann auch im Node-Modus laufen: Die Menüleisten-App verbindet sich mit dem WS-Server des Gateways und stellt ihre lokalen Canvas-/Kamera-Befehle als Node bereit (sodass openclaw nodes … auf diesem Mac funktioniert).
Hinweise:
- Nodes sind Peripheriegeräte, keine Gateways. Sie betreiben keinen Gateway-Dienst.
- Telegram-/WhatsApp-/etc.-Nachrichten landen auf dem Gateway, nicht auf Nodes.
- Runbook zur Fehlerbehebung: /nodes/troubleshooting
Kopplung + Status
WS-Nodes verwenden Gerätekopplung. Nodes präsentieren währendconnect eine Geräteidentität; das Gateway
erstellt eine Gerätekopplungsanfrage für role: node. Genehmigen Sie diese über die Geräte-CLI (oder UI).
Schnellstart per CLI:
nodes statusmarkiert einen Node als gekoppelt, wenn seine Gerätekopplungsrollenodeumfasst.node.pair.*(CLI:openclaw nodes pending/approve/reject) ist ein separates, Gateway-eigenes Node-Kopplungsspeicher; er steuert nicht den WS-connect-Handshake.
Remote-Node-Host (system.run)
Verwenden Sie einen Node-Host, wenn Ihr Gateway auf einer Maschine läuft und Sie Befehle auf einer anderen ausführen möchten. Das Modell spricht weiterhin mit dem Gateway; das Gateway leitetexec-Aufrufe an den Node-Host weiter, wenn host=node ausgewählt ist.
Was läuft wo
- Gateway-Host: empfängt Nachrichten, führt das Modell aus, routet Werkzeugaufrufe.
- Node-Host: führt
system.run/system.whichauf der Node-Maschine aus. - Genehmigungen: werden auf dem Node-Host über
~/.openclaw/exec-approvals.jsonerzwungen.
Node-Host starten (Vordergrund)
Auf der Node-Maschine:Remote-Gateway über SSH-Tunnel (Loopback-Bind)
Wenn das Gateway an Loopback bindet (gateway.bind=loopback, Standard im lokalen Modus),
können entfernte Node-Hosts keine direkte Verbindung herstellen. Erstellen Sie einen SSH-Tunnel und verweisen Sie den
Node-Host auf das lokale Ende des Tunnels.
Beispiel (Node-Host -> Gateway-Host):
- Das Token ist
gateway.auth.tokenaus der Gateway-Konfiguration (~/.openclaw/openclaw.jsonauf dem Gateway-Host). openclaw node runliestOPENCLAW_GATEWAY_TOKENzur Authentifizierung.
Node-Host starten (Dienst)
Koppeln + benennen
Auf dem Gateway-Host:--display-nameaufopenclaw node run/openclaw node install(persistiert in~/.openclaw/node.jsonauf dem Node).openclaw nodes rename --node <id|name|ip> --name "Build Node"(Gateway-Override).
Befehle auf die Allowlist setzen
Exec-Genehmigungen sind pro Node-Host. Fügen Sie Allowlist-Einträge vom Gateway aus hinzu:~/.openclaw/exec-approvals.json.
Punkt exec auf den Knoten
Standard konfigurieren (Gateway-Konfiguration):exec-Aufruf mit host=node auf dem Node-Host ausgeführt (vorbehaltlich der
Node-Allowlist/Genehmigungen).
Verwandt:
Befehle aufrufen
Low-Level (raw RPC):Screenshots (Canvas-Snapshots)
Wenn der Node das Canvas (WebView) anzeigt, liefertcanvas.snapshot { format, base64 } zurück.
CLI-Hilfsprogramm (schreibt in eine temporäre Datei und gibt MEDIA:<path> aus):
Canvas-Steuerungen
canvas presentakzeptiert URLs oder lokale Dateipfade (--target) sowie optional--x/--y/--width/--heightzur Positionierung.canvas evalakzeptiert Inline-JS (--js) oder ein positionsbezogenes Argument.
A2UI (Canvas)
- Es wird nur A2UI v0.8 JSONL unterstützt (v0.9/createSurface wird abgelehnt).
Fotos + Videos (Node-Kamera)
Fotos (jpg):
mp4):
- Der Node muss für
canvas.*undcamera.*im Vordergrund sein (Hintergrundaufrufe gebenNODE_BACKGROUND_UNAVAILABLEzurück). - Die Clip-Dauer ist begrenzt (derzeit
<= 60s), um übergroße Base64-Payloads zu vermeiden. - Android fordert nach Möglichkeit Berechtigungen für
CAMERA/RECORD_AUDIOan; verweigerte Berechtigungen schlagen mit*_PERMISSION_REQUIREDfehl.
Bildschirmaufnahmen (Nodes)
Nodes stellenscreen.record (mp4) bereit. Beispiel:
screen.recorderfordert, dass die Node-App im Vordergrund ist.- Android zeigt vor der Aufnahme die systemweite Bildschirmaufnahme-Aufforderung.
- Bildschirmaufnahmen sind auf
<= 60sbegrenzt. --no-audiodeaktiviert die Mikrofonaufnahme (unterstützt auf iOS/Android; macOS verwendet Systemaufnahme-Audio).- Verwenden Sie
--screen <index>, um bei mehreren verfügbaren Bildschirmen eine Anzeige auszuwählen.
Standort (Nodes)
Nodes stellenlocation.get bereit, wenn Standort in den Einstellungen aktiviert ist.
CLI-Hilfsprogramm:
- Standort ist standardmäßig deaktiviert.
- „Immer“ erfordert Systemberechtigungen; Abruf im Hintergrund ist Best-Effort.
- Die Antwort enthält Breite/Länge, Genauigkeit (Meter) und Zeitstempel.
SMS (Android-Nodes)
Android-Nodes könnensms.send bereitstellen, wenn der Benutzer die SMS-Berechtigung erteilt und das Gerät Telefonie unterstützt.
Low-Level-Aufruf:
- Die Berechtigungsaufforderung muss auf dem Android-Gerät akzeptiert werden, bevor die Fähigkeit beworben wird.
- Reine WLAN-Geräte ohne Telefonie bewerben
sms.sendnicht.
Systembefehle (Node-Host / Mac-Node)
Der macOS-Node stelltsystem.run, system.notify und system.execApprovals.get/set bereit.
Der headless Node-Host stellt system.run, system.which und system.execApprovals.get/set bereit.
Beispiele:
system.rungibt stdout/stderr/Exit-Code im Payload zurück.system.notifyberücksichtigt den Benachrichtigungs-Berechtigungsstatus der macOS-App.system.rununterstützt--cwd,--env KEY=VAL,--command-timeoutund--needs-screen-recording.system.notifyunterstützt--priority <passive|active|timeSensitive>und--delivery <system|overlay|auto>.- macOS-Nodes verwerfen
PATH-Overrides; headless Node-Hosts akzeptierenPATHnur, wenn es dem Node-Host-PATH vorangestellt ist. Wenn Sie zusätzliche PATH-Einträge benötigen, konfigurieren Sie die Umgebung des Node-Host-Dienstes (oder installieren Sie Tools an Standardorten), anstattPATHüber--envzu übergeben. - Im macOS-Node-Modus ist
system.rundurch Exec-Genehmigungen in der macOS-App geschützt (Einstellungen → Exec-Genehmigungen). Ask/Allowlist/Full verhalten sich wie beim headless Node-Host; abgelehnte Aufforderungen gebenSYSTEM_RUN_DENIEDzurück. - Beim headless Node-Host ist
system.rundurch Exec-Genehmigungen geschützt (~/.openclaw/exec-approvals.json).
Exec-Node-Bindung
Wenn mehrere Nodes verfügbar sind, können Sie Exec an einen bestimmten Node binden. Dies setzt den Standard-Node fürexec host=node (und kann pro Agent überschrieben werden).
Globaler Standard:
Berechtigungszuordnung
Nodes können einepermissions-Zuordnung in node.list / node.describe enthalten, indiziert nach Berechtigungsnamen (z. B. screenRecording, accessibility) mit booleschen Werten (true = erteilt).
Headless Node-Host (plattformübergreifend)
OpenClaw kann einen headless Node-Host (ohne UI) ausführen, der sich mit dem Gateway WebSocket verbindet undsystem.run / system.which bereitstellt. Dies ist nützlich unter Linux/Windows
oder zum Betrieb eines minimalen Nodes neben einem Server.
Starten:
- Kopplung ist weiterhin erforderlich (das Gateway zeigt eine Node-Genehmigungsaufforderung).
- Der Node-Host speichert seine Node-ID, sein Token, den Anzeigenamen und die Gateway-Verbindungsinformationen in
~/.openclaw/node.json. - Exec-Genehmigungen werden lokal über
~/.openclaw/exec-approvals.jsonerzwungen (siehe Exec-Genehmigungen). - Unter macOS bevorzugt der headless Node-Host den Exec-Host der Companion-App, wenn erreichbar, und fällt
andernfalls auf lokale Ausführung zurück, wenn die App nicht verfügbar ist. Setzen Sie
OPENCLAW_NODE_EXEC_HOST=app, um die App zu erzwingen, oderOPENCLAW_NODE_EXEC_FALLBACK=0, um den Fallback zu deaktivieren. - Fügen Sie
--tls/--tls-fingerprinthinzu, wenn der Gateway-WS TLS verwendet.
Mac-Node-Modus
- Die macOS-Menüleisten-App verbindet sich als Node mit dem Gateway-WS-Server (sodass
openclaw nodes …auf diesem Mac funktioniert). - Im Remote-Modus öffnet die App einen SSH-Tunnel für den Gateway-Port und verbindet sich mit
localhost.