Android ऐप (नोड)¶
समर्थन स्नैपशॉट¶
- भूमिका: सहचर नोड ऐप (Android Gateway होस्ट नहीं करता)।
- Gateway आवश्यक: हाँ (macOS, Linux, या Windows पर WSL2 के माध्यम से चलाएँ)।
- इंस्टॉल: आरंभ करें + पेयरिंग।
- Gateway: रनबुक + विन्यास।
- प्रोटोकॉल: Gateway प्रोटोकॉल (नोड्स + कंट्रोल प्लेन)।
सिस्टम नियंत्रण¶
सिस्टम नियंत्रण (launchd/systemd) Gateway होस्ट पर होता है। देखें Gateway।
कनेक्शन रनबुक¶
Android नोड ऐप ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway
Android सीधे Gateway WebSocket (डिफ़ॉल्ट ws://<host>:18789) से कनेक्ट होता है और Gateway-स्वामित्व वाले पेयरिंग का उपयोग करता है।
पूर्वापेक्षाएँ¶
- आप “मास्टर” मशीन पर Gateway चला सकते हैं।
- Android डिवाइस/एम्युलेटर Gateway WebSocket तक पहुँच सकता है:
- mDNS/NSD के साथ वही LAN, या
- Wide-Area Bonjour / unicast DNS-SD का उपयोग करते हुए वही Tailscale tailnet (नीचे देखें), या
- मैनुअल Gateway होस्ट/पोर्ट (फ़ॉलबैक)
- आप Gateway मशीन पर (या SSH के माध्यम से) CLI (
openclaw) चला सकते हैं।
1. Gateway प्रारंभ करें¶
openclaw gateway --port 18789 --verbose
लॉग्स में पुष्टि करें कि आपको कुछ ऐसा दिखे:
listening on ws://0.0.0.0:18789
केवल-tailnet सेटअप्स के लिए (Vienna ⇄ London के लिए अनुशंसित), Gateway को tailnet IP पर बाइंड करें:
- Gateway होस्ट पर
~/.openclaw/openclaw.jsonमेंgateway.bind: "tailnet"सेट करें। - Gateway / macOS मेनूबार ऐप पुनः प्रारंभ करें।
2. डिस्कवरी सत्यापित करें (वैकल्पिक)¶
Gateway मशीन से:
dns-sd -B _openclaw-gw._tcp local.
अधिक डिबगिंग नोट्स: Bonjour।
unicast DNS-SD के माध्यम से Tailnet (Vienna ⇄ London) डिस्कवरी¶
Android NSD/mDNS डिस्कवरी नेटवर्क के बीच काम नहीं करती। यदि आपका Android नोड और Gateway अलग-अलग नेटवर्क पर हैं लेकिन Tailscale के माध्यम से जुड़े हैं, तो इसके बजाय Wide-Area Bonjour / unicast DNS-SD का उपयोग करें:
- Gateway होस्ट पर एक DNS-SD ज़ोन (उदाहरण
openclaw.internal.) सेट करें और_openclaw-gw._tcpरिकॉर्ड प्रकाशित करें। - अपने चुने हुए डोमेन के लिए उस DNS सर्वर की ओर इंगित करते हुए Tailscale split DNS कॉन्फ़िगर करें।
विवरण और उदाहरण CoreDNS विन्यास: Bonjour।
3. Android से कनेक्ट करें¶
Android ऐप में:
- ऐप foreground service (स्थायी नोटिफ़िकेशन) के माध्यम से Gateway कनेक्शन जीवित रखता है।
- Settings खोलें।
- Discovered Gateways के अंतर्गत अपना Gateway चुनें और Connect दबाएँ।
- यदि mDNS ब्लॉक है, तो Advanced → Manual Gateway (होस्ट + पोर्ट) और Connect (Manual) का उपयोग करें।
पहली सफल पेयरिंग के बाद, Android लॉन्च पर स्वतः पुनः कनेक्ट करता है:
- मैनुअल एंडपॉइंट (यदि सक्षम), अन्यथा
- अंतिम डिस्कवर्ड Gateway (best-effort)।
4. पेयरिंग अनुमोदित करें (CLI)¶
Gateway मशीन पर:
openclaw nodes pending
openclaw nodes approve <requestId>
पेयरिंग विवरण: Gateway पेयरिंग।
5. नोड कनेक्टेड है या नहीं सत्यापित करें¶
- नोड्स स्थिति के माध्यम से:
bash
openclaw nodes status
- Gateway के माध्यम से:
bash
openclaw gateway call node.list --params "{}"
6. चैट + इतिहास¶
Android नोड की Chat शीट Gateway की प्राथमिक सत्र कुंजी (main) का उपयोग करती है, इसलिए इतिहास और उत्तर WebChat और अन्य क्लाइंट्स के साथ साझा होते हैं:
- इतिहास:
chat.history - भेजें:
chat.send - पुश अपडेट्स (best-effort):
chat.subscribe→event:"chat"
7. Canvas + कैमरा¶
Gateway Canvas होस्ट (वेब कंटेंट के लिए अनुशंसित)¶
यदि आप चाहते हैं कि नोड वास्तविक HTML/CSS/JS दिखाए जिसे एजेंट डिस्क पर संपादित कर सके, तो नोड को Gateway canvas होस्ट की ओर इंगित करें।
टिप्पणी: नोड्स canvasHost.port पर standalone canvas होस्ट का उपयोग करते हैं (डिफ़ॉल्ट 18793)।
-
Gateway होस्ट पर
~/.openclaw/workspace/canvas/index.htmlबनाएँ। -
नोड को उस पर नेविगेट करें (LAN):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18793/__openclaw__/canvas/"}'
Tailnet (वैकल्पिक): यदि दोनों डिवाइस Tailscale पर हैं, तो .local के बजाय MagicDNS नाम या tailnet IP का उपयोग करें, उदाहरण के लिए http://<gateway-magicdns>:18793/__openclaw__/canvas/।
This server injects a live-reload client into HTML and reloads on file changes.
The A2UI host lives at http://<gateway-host>:18793/__openclaw__/a2ui/.
Canvas कमांड्स (केवल foreground):
canvas.eval,canvas.snapshot,canvas.navigate(use{"url":""}or{"url":"/"}to return to the default scaffold).canvas.snapshotreturns{ format, base64 }(defaultformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLlegacy alias)
कैमरा कमांड्स (केवल foreground; अनुमति-नियंत्रित):
camera.snap(jpg)camera.clip(mp4)
पैरामीटर और CLI हेल्पर्स के लिए देखें: Camera node।