نوڈز¶
A node ایک معاون ڈیوائس (macOS/iOS/Android/headless) ہے جو Gateway کے WebSocket (آپریٹرز کے اسی پورٹ پر) سے role: "node" کے ساتھ منسلک ہوتی ہے اور node.invoke کے ذریعے ایک کمانڈ سرفیس (مثلاً canvas.*, camera.*, system.*) فراہم کرتی ہے۔ پروٹوکول کی تفصیلات: Gateway پروٹوکول.
لیگیسی ٹرانسپورٹ: Bridge protocol (TCP JSONL؛ متروک/موجودہ نوڈز کے لیے ہٹا دیا گیا)۔
macOS node mode میں بھی چل سکتا ہے: مینو بار ایپ Gateway کے WS سرور سے جڑتی ہے اور اپنے مقامی کینوس/کیمرہ کمانڈز کو بطور نوڈ فراہم کرتی ہے (لہٰذا openclaw nodes … اس میک کے خلاف کام کرتا ہے)۔
نوٹس:
- Nodes peripherals ہیں، gateways نہیں۔ وہ gateway سروس نہیں چلاتے۔
- Telegram/WhatsApp وغیرہ کے پیغامات gateway پر آتے ہیں، نوڈز پر نہیں۔
- خرابیوں کے ازالے کی رہنمائی: /nodes/troubleshooting
پیئرنگ + حیثیت¶
WS nodes device pairing استعمال کرتے ہیں۔ Nodes connect کے دوران ایک ڈیوائس شناخت پیش کرتے ہیں؛ Gateway
creates a device pairing request for role: node. Approve via the devices CLI (or UI).
فوری CLI:
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>
نوٹس:
nodes statusکسی نوڈ کو paired نشان زد کرتا ہے جب اس کے ڈیوائس pairing رول میںnodeشامل ہو۔node.pair.*(CLI:openclaw nodes pending/approve/reject) ایک علیحدہ gateway-ملکیتی نوڈ pairing اسٹور ہے؛ یہ WSconnectہینڈشیک کو روکتا نہیں۔
Remote node host (system.run)¶
Use a node host when your Gateway runs on one machine and you want commands
to execute on another. The model still talks to the gateway; the gateway
forwards exec calls to the node host when host=node is selected.
کیا کہاں چلتا ہے¶
- Gateway host: پیغامات وصول کرتا ہے، ماڈل چلاتا ہے، ٹول کالز روٹ کرتا ہے۔
- Node host: نوڈ مشین پر
system.run/system.whichاجرا کرتا ہے۔ - Approvals: node host پر
~/.openclaw/exec-approvals.jsonکے ذریعے نافذ ہوتی ہیں۔
Start a node host (foreground)¶
نوڈ مشین پر:
openclaw node run --host <gateway-host> --port 18789 --display-name "Build Node"
Remote gateway via SSH tunnel (loopback bind)¶
If the Gateway binds to loopback (gateway.bind=loopback, default in local mode),
remote node hosts cannot connect directly. Create an SSH tunnel and point the
node host at the local end of the tunnel.
مثال (node host -> gateway host):
# 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"
نوٹس:
- ٹوکن gateway کنفیگ سے
gateway.auth.tokenہے (gateway host پر~/.openclaw/openclaw.json)۔ openclaw node runتصدیق کے لیےOPENCLAW_GATEWAY_TOKENپڑھتا ہے۔
Start a node host (service)¶
openclaw node install --host <gateway-host> --port 18789 --display-name "Build Node"
openclaw node restart
Pair + name¶
gateway host پر:
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes list
نام رکھنے کے اختیارات:
openclaw node run/openclaw node installپر--display-name(نوڈ پر~/.openclaw/node.jsonمیں محفوظ ہوتا ہے)۔openclaw nodes rename --node <id|name|ip> --name "Build Node"(gateway اووررائیڈ)۔
Allowlist the commands¶
Exec approvals are per node host. Add allowlist entries from the gateway:
openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
منظوریاں node host پر ~/.openclaw/exec-approvals.json میں محفوظ ہوتی ہیں۔
Point exec at the node¶
ڈیفالٹس کنفیگر کریں (gateway کنفیگ):
openclaw config set tools.exec.host node
openclaw config set tools.exec.security allowlist
openclaw config set tools.exec.node "<id-or-name>"
یا فی سیشن:
/exec host=node security=allowlist node=<id-or-name>
ایک بار سیٹ ہو جانے کے بعد، host=node کے ساتھ کوئی بھی exec کال node host پر چلتی ہے (نوڈ allowlist/approvals کے تابع)۔
متعلقہ:
Invoking commands¶
کم سطحی (raw RPC):
openclaw nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'
عام “ایجنٹ کو MEDIA اٹیچمنٹ دینا” ورک فلو کے لیے اعلیٰ سطحی مددگار موجود ہیں۔
Screenshots (canvas snapshots)¶
اگر نوڈ Canvas (WebView) دکھا رہا ہو تو canvas.snapshot، { format, base64 } واپس کرتا ہے۔
CLI مددگار (عارضی فائل میں لکھتا ہے اور 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 controls¶
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"
نوٹس:
canvas presentURLs یا لوکل فائل پاتھس (--target) قبول کرتا ہے، ساتھ اختیاری--x/--y/--width/--heightبرائے پوزیشننگ۔canvas evalinline JS (--js) یا ایک positional arg قبول کرتا ہے۔
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>
نوٹس:
- صرف A2UI v0.8 JSONL سپورٹڈ ہے (v0.9/createSurface مسترد کیا جاتا ہے)۔
Photos + videos (node camera)¶
تصاویر (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
ویڈیو کلپس (mp4):
openclaw nodes camera clip --node <idOrNameOrIp> --duration 10s
openclaw nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
نوٹس:
canvas.*اورcamera.*کے لیے نوڈ کا foregrounded ہونا ضروری ہے (background کالزNODE_BACKGROUND_UNAVAILABLEواپس کرتی ہیں)۔- کلپ کی مدت محدود کی جاتی ہے (فی الحال
<= 60s) تاکہ بہت بڑے base64 پےلوڈز سے بچا جا سکے۔ - Android ممکن ہونے پر
CAMERA/RECORD_AUDIOاجازتوں کے لیے پرامپٹ کرے گا؛ مسترد اجازتیں*_PERMISSION_REQUIREDکے ساتھ ناکام ہوں گی۔
Screen recordings (nodes)¶
Nodes expose screen.record (mp4). مثال:
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio
نوٹس:
screen.recordکے لیے نوڈ ایپ کا foregrounded ہونا ضروری ہے۔- Android ریکارڈنگ سے پہلے سسٹم اسکرین-کیپچر پرامپٹ دکھائے گا۔
- اسکرین ریکارڈنگز
<= 60sتک محدود کی جاتی ہیں۔ --no-audioمائیکروفون کیپچر غیر فعال کرتا ہے (iOS/Android پر سپورٹڈ؛ macOS سسٹم کیپچر آڈیو استعمال کرتا ہے)۔- متعدد اسکرینز دستیاب ہوں تو
--screen <index>کے ذریعے ڈسپلے منتخب کریں۔
Location (nodes)¶
جب سیٹنگز میں Location فعال ہو تو نوڈز location.get فراہم کرتے ہیں۔
CLI مددگار:
openclaw nodes location get --node <idOrNameOrIp>
openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
نوٹس:
- Location بطورِ طے شدہ بند ہے۔
- “Always” کے لیے سسٹم اجازت درکار ہے؛ background fetch بہترین کوشش (best‑effort) ہے۔
- رسپانس میں lat/lon، accuracy (میٹرز)، اور timestamp شامل ہوتے ہیں۔
SMS (Android nodes)¶
Android نوڈز sms.send فراہم کر سکتے ہیں جب صارف SMS اجازت دے اور ڈیوائس ٹیلی فونی کو سپورٹ کرے۔
کم سطحی invoke:
openclaw nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from OpenClaw"}'
نوٹس:
- صلاحیت مشتہر ہونے سے پہلے Android ڈیوائس پر اجازت پرامپٹ قبول کرنا ضروری ہے۔
- بغیر ٹیلی فونی کے Wi‑Fi‑only ڈیوائسز
sms.sendمشتہر نہیں کریں گی۔
System commands (node host / mac node)¶
The macOS node exposes system.run, system.notify, and system.execApprovals.get/set.
The headless node host exposes system.run, system.which, and system.execApprovals.get/set.
مثالیں:
openclaw nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
openclaw nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
نوٹس:
system.runپےلوڈ میں stdout/stderr/exit code واپس کرتا ہے۔system.notifymacOS ایپ میں نوٹیفکیشن اجازت کی حالت کا احترام کرتا ہے۔system.run--cwd،--env KEY=VAL،--command-timeout، اور--needs-screen-recordingکو سپورٹ کرتا ہے۔system.notify--priority <passive|active|timeSensitive>اور--delivery <system|overlay|auto>کو سپورٹ کرتا ہے۔- macOS نوڈز
PATHاووررائیڈز چھوڑ دیتے ہیں؛ headless node hosts صرفPATHقبول کرتے ہیں جب وہ node host PATH کو prepend کرے۔ - On macOS node mode,
system.runis gated by exec approvals in the macOS app (Settings → Exec approvals). Ask/allowlist/full behave the same as the headless node host; denied prompts returnSYSTEM_RUN_DENIED. - headless node host پر،
system.runexec approvals (~/.openclaw/exec-approvals.json) کے تحت gated ہے۔
Exec node binding¶
When multiple nodes are available, you can bind exec to a specific node.
This sets the default node for exec host=node (and can be overridden per agent).
گلوبل ڈیفالٹ:
openclaw config set tools.exec.node "node-id-or-name"
فی ایجنٹ اووررائیڈ:
openclaw config get agents.list
openclaw config set agents.list[0].tools.exec.node "node-id-or-name"
کسی بھی نوڈ کی اجازت دینے کے لیے unset کریں:
openclaw config unset tools.exec.node
openclaw config unset agents.list[0].tools.exec.node
Permissions map¶
نوڈز node.list / node.describe میں ایک permissions میپ شامل کر سکتے ہیں، جو اجازت کے نام (مثلاً screenRecording، accessibility) کے مطابق keyed ہوتا ہے اور boolean اقدار (true = granted) رکھتا ہے۔
Headless node host (cross-platform)¶
OpenClaw can run a headless node host (no UI) that connects to the Gateway
WebSocket and exposes system.run / system.which. This is useful on Linux/Windows
or for running a minimal node alongside a server.
اسے شروع کریں:
openclaw node run --host <gateway-host> --port 18789
نوٹس:
- Pairing اب بھی درکار ہے (Gateway نوڈ منظوری کا پرامپٹ دکھائے گا)۔
- node host اپنا node id، token، display name، اور gateway کنیکشن معلومات
~/.openclaw/node.jsonمیں محفوظ کرتا ہے۔ - Exec approvals مقامی طور پر
~/.openclaw/exec-approvals.jsonکے ذریعے نافذ ہوتی ہیں (دیکھیں Exec approvals)۔ - On macOS, the headless node host prefers the companion app exec host when reachable and falls
back to local execution if the app is unavailable. Set
OPENCLAW_NODE_EXEC_HOST=appto require the app, orOPENCLAW_NODE_EXEC_FALLBACK=0to disable fallback. - جب Gateway WS TLS استعمال کرے تو
--tls/--tls-fingerprintشامل کریں۔
Mac node mode¶
- macOS مینو بار ایپ Gateway WS سرور سے بطور نوڈ جڑتی ہے (لہٰذا
openclaw nodes …اس میک کے خلاف کام کرتا ہے)۔ - ریموٹ موڈ میں، ایپ Gateway پورٹ کے لیے SSH ٹنل کھولتی ہے اور
localhostسے جڑتی ہے۔