Skip to main content

नोड्स

Nodes peripherals होते हैं, gateways नहीं। वे gateway service नहीं चलाते। लीगेसी ट्रांसपोर्ट: Bridge protocol (TCP JSONL; अप्रचलित/वर्तमान नोड्स के लिए हटाया गया)। macOS node mode में भी चल सकता है: मेन्यूबार ऐप Gateway के WS सर्वर से कनेक्ट होता है और अपने स्थानीय canvas/camera कमांड्स को एक नोड के रूप में एक्सपोज़ करता है (ताकि openclaw nodes … इस Mac के विरुद्ध काम करे)। नोट्स:
  • WS nodes device pairing का उपयोग करते हैं। Nodes connect के दौरान एक device identity प्रस्तुत करते हैं; Gateway role: node के लिए एक device pairing request बनाता है। devices CLI (या UI) के माध्यम से approve करें।
  • Telegram/WhatsApp आदि संदेश gateway पर आते हैं, नोड्स पर नहीं।
  • समस्या-निवारण रनबुक: /nodes/troubleshooting

पेयरिंग + स्थिति

जब आपका Gateway एक मशीन पर चलता हो और आप चाहते हों कि कमांड्स किसी दूसरी मशीन पर execute हों, तब node host का उपयोग करें। Approve via the devices CLI (or UI). त्वरित CLI:
नोट्स:
  • nodes status किसी नोड को paired के रूप में चिह्नित करता है जब उसकी डिवाइस पेयरिंग भूमिका में node शामिल हो।
  • node.pair.* (CLI: openclaw nodes pending/approve/reject) एक अलग gateway-स्वामित्व वाला नोड पेयरिंग स्टोर है; यह WS connect हैंडशेक को गेट नहीं करता।

रिमोट नोड होस्ट (system.run)

Use a node host when your Gateway runs on one machine and you want commands to execute on another. यदि Gateway लूपबैक से बाइंड करता है (gateway.bind=loopback, लोकल मोड में डिफ़ॉल्ट), तो रिमोट node hosts सीधे कनेक्ट नहीं कर सकते।

क्या कहाँ चलता है

  • Gateway होस्ट: संदेश प्राप्त करता है, मॉडल चलाता है, टूल कॉल्स रूट करता है।
  • Node host: नोड मशीन पर system.run/system.which निष्पादित करता है।
  • Approvals: ~/.openclaw/exec-approvals.json के माध्यम से node host पर लागू होते हैं।

नोड होस्ट शुरू करें (foreground)

नोड मशीन पर:

SSH टनल के माध्यम से रिमोट gateway (loopback bind)

एक SSH टनल बनाएँ और node host को टनल के लोकल सिरे की ओर पॉइंट करें। Exec अनुमोदन प्रति node host होते हैं। उदाहरण (node host -> gateway host):
नोट्स:
  • टोकन gateway config से gateway.auth.token है (gateway होस्ट पर ~/.openclaw/openclaw.json)।
  • openclaw node run प्रमाणीकरण के लिए OPENCLAW_GATEWAY_TOKEN पढ़ता है।

नोड होस्ट शुरू करें (service)

पेयर + नाम

gateway होस्ट पर:
नामकरण विकल्प:
  • openclaw node run / openclaw node install पर --display-name (नोड पर ~/.openclaw/node.json में स्थायी रहता है)।
  • openclaw nodes rename --node <id|name|ip> --name "Build Node" (gateway ओवरराइड)।

कमांड्स को allowlist करें

gateway से allowlist एंट्रीज़ जोड़ें: Nodes screen.record (mp4) एक्सपोज़ करते हैं।
Approvals node host पर ~/.openclaw/exec-approvals.json में रहती हैं।

exec को नोड की ओर इंगित करें

डिफ़ॉल्ट्स कॉन्फ़िगर करें (gateway config):
या प्रति सत्र:
एक बार सेट होने पर, किसी भी exec कॉल में host=node के साथ निष्पादन node host पर होता है (node allowlist/approvals के अधीन)। संबंधित:

कमांड्स का आह्वान

लो-लेवल (raw RPC):
सामान्य “एजेंट को MEDIA अटैचमेंट देना” वर्कफ़्लो के लिए उच्च-स्तरीय हेल्पर्स उपलब्ध हैं।

स्क्रीनशॉट्स (canvas snapshots)

यदि नोड Canvas (WebView) दिखा रहा है, तो canvas.snapshot { format, base64 } लौटाता है। CLI हेल्पर (एक temp फ़ाइल में लिखता है और MEDIA:<path> प्रिंट करता है):

Canvas नियंत्रण

नोट्स:
  • canvas present URLs या लोकल फ़ाइल पाथ्स (--target) स्वीकार करता है, साथ ही पोज़िशनिंग के लिए वैकल्पिक --x/--y/--width/--height
  • canvas eval inline JS (--js) या एक positional arg स्वीकार करता है।

A2UI (Canvas)

नोट्स:
  • केवल A2UI v0.8 JSONL समर्थित है (v0.9/createSurface अस्वीकार किया जाता है)।

फ़ोटो + वीडियो (नोड कैमरा)

फ़ोटो (jpg):
वीडियो क्लिप्स (mp4):
नोट्स:
  • canvas.* और camera.* के लिए नोड का foregrounded होना आवश्यक है (background कॉल्स NODE_BACKGROUND_UNAVAILABLE लौटाते हैं)।
  • बेस64 payloads के अत्यधिक बड़े होने से बचाने के लिए क्लिप अवधि सीमित है (वर्तमान में <= 60s)।
  • Android जहाँ संभव हो CAMERA/RECORD_AUDIO अनुमतियों के लिए प्रॉम्प्ट करेगा; अस्वीकृत अनुमतियाँ *_PERMISSION_REQUIRED के साथ विफल होंगी।

स्क्रीन रिकॉर्डिंग्स (नोड्स)

macOS node system.run, system.notify, और system.execApprovals.get/set एक्सपोज़ करता है। उदाहरण:
नोट्स:
  • screen.record के लिए नोड ऐप का foregrounded होना आवश्यक है।
  • Android रिकॉर्डिंग से पहले सिस्टम स्क्रीन-कैप्चर प्रॉम्प्ट दिखाएगा।
  • स्क्रीन रिकॉर्डिंग्स <= 60s तक सीमित होती हैं।
  • --no-audio माइक्रोफ़ोन कैप्चर को अक्षम करता है (iOS/Android पर समर्थित; macOS सिस्टम कैप्चर ऑडियो का उपयोग करता है)।
  • कई स्क्रीन उपलब्ध होने पर डिस्प्ले चुनने के लिए --screen <index> का उपयोग करें।

लोकेशन (नोड्स)

सेटिंग्स में Location सक्षम होने पर नोड्स location.get एक्सपोज़ करते हैं। CLI हेल्पर:
नोट्स:
  • Location डिफ़ॉल्ट रूप से बंद रहती है।
  • “Always” के लिए सिस्टम अनुमति आवश्यक है; background fetch best-effort होता है।
  • प्रतिक्रिया में lat/lon, accuracy (मीटर), और timestamp शामिल होते हैं।

SMS (Android नोड्स)

Android नोड्स तब sms.send एक्सपोज़ कर सकते हैं जब उपयोगकर्ता SMS अनुमति देता है और डिवाइस टेलीफ़ोनी का समर्थन करता है। लो-लेवल invoke:
नोट्स:
  • क्षमता विज्ञापित होने से पहले Android डिवाइस पर अनुमति प्रॉम्प्ट स्वीकार करना आवश्यक है।
  • टेलीफ़ोनी के बिना Wi‑Fi‑only डिवाइस sms.send विज्ञापित नहीं करेंगे।

सिस्टम कमांड्स (node host / mac node)

headless node host system.run, system.which, और system.execApprovals.get/set एक्सपोज़ करता है। macOS node मोड में, system.run macOS ऐप में exec approvals द्वारा नियंत्रित होता है (Settings → Exec approvals)। उदाहरण:
नोट्स:
  • system.run payload में stdout/stderr/exit code लौटाता है।
  • system.notify macOS ऐप में notification permission स्थिति का सम्मान करता है।
  • system.run --cwd, --env KEY=VAL, --command-timeout, और --needs-screen-recording का समर्थन करता है।
  • system.notify --priority <passive|active|timeSensitive> और --delivery <system|overlay|auto> का समर्थन करता है।
  • Node होस्ट PATH ओवरराइड को अनदेखा करते हैं। यदि आपको अतिरिक्त PATH एंट्री की आवश्यकता है, तो --env के माध्यम से PATH पास करने के बजाय node host सेवा के environment को कॉन्फ़िगर करें (या टूल्स को मानक स्थानों पर इंस्टॉल करें)।
  • Ask/allowlist/full का व्यवहार headless node host जैसा ही है; अस्वीकृत प्रॉम्प्ट्स SYSTEM_RUN_DENIED लौटाते हैं। जब कई nodes उपलब्ध हों, आप exec को किसी विशिष्ट node से बाँध सकते हैं।
  • headless node host पर, system.run exec approvals (~/.openclaw/exec-approvals.json) द्वारा gated होता है।

Exec नोड बाइंडिंग

यह exec host=node के लिए डिफ़ॉल्ट node सेट करता है (और प्रति agent ओवरराइड किया जा सकता है)। OpenClaw एक headless node host (कोई UI नहीं) चला सकता है जो Gateway WebSocket से कनेक्ट होता है और system.run / system.which एक्सपोज़ करता है। ग्लोबल डिफ़ॉल्ट:
प्रति-एजेंट ओवरराइड:
किसी भी नोड की अनुमति देने के लिए unset करें:

अनुमतियाँ मानचित्र

नोड्स node.list / node.describe में एक permissions मानचित्र शामिल कर सकते हैं, जो अनुमति नाम (जैसे screenRecording, accessibility) द्वारा keyed होता है और boolean मान (true = granted) रखता है।

Headless node host (क्रॉस-प्लैटफ़ॉर्म)

यह Linux/Windows पर या किसी सर्वर के साथ एक न्यूनतम node चलाने के लिए उपयोगी है। macOS पर, headless node host जब उपलब्ध हो तो companion app exec host को प्राथमिकता देता है और ऐप अनुपलब्ध होने पर लोकल execution पर वापस चला जाता है। इसे शुरू करें:
नोट्स:
  • पेयरिंग अभी भी आवश्यक है (Gateway एक नोड अनुमोदन प्रॉम्प्ट दिखाएगा)।
  • node host अपना node id, token, display name, और gateway कनेक्शन जानकारी ~/.openclaw/node.json में संग्रहीत करता है।
  • Exec approvals स्थानीय रूप से ~/.openclaw/exec-approvals.json के माध्यम से लागू होते हैं (देखें Exec approvals)।
  • ऐप की आवश्यकता के लिए OPENCLAW_NODE_EXEC_HOST=app सेट करें, या fallback अक्षम करने के लिए OPENCLAW_NODE_EXEC_FALLBACK=0 सेट करें। OS अनुमतियाँ बहु‑स्तरीय होती हैं।
  • जब Gateway WS TLS का उपयोग करता हो, तब --tls / --tls-fingerprint जोड़ें।

Mac node mode

  • macOS मेन्यूबार ऐप Gateway WS सर्वर से एक नोड के रूप में कनेक्ट होता है (ताकि openclaw nodes … इस Mac के विरुद्ध काम करे)।
  • रिमोट मोड में, ऐप Gateway पोर्ट के लिए एक SSH टनल खोलता है और localhost से कनेक्ट होता है।