Asosiy tarkibga o'tish

Android App (Node)

Snapshotni qo‘llab-quvvatlash

Tizim boshqaruvi

Tizim boshqaruvi (launchd/systemd) Gateway xostida joylashgan. Qarang: Gateway.

Ulanish bo‘yicha Runbook

Android tugun ilovasi ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway Android to‘g‘ridan-to‘g‘ri Gateway WebSocket’iga ulanadi (standart ws://<host>:18789) va Gateway’ga tegishli pairing’dan foydalanadi.

Talablar

  • Gateway’ni “master” mashinada ishga tushirishingiz mumkin.
  • Android qurilma/emulyator gateway WebSocket’iga yetib bora olishi kerak:
    • mDNS/NSD bilan bir xil LAN’da, yoki
    • Wide-Area Bonjour / unicast DNS-SD’dan foydalangan holda bir xil Tailscale tailnet’da (quyida qarang), yoki
    • Gateway xosti/portini qo‘lda kiritish (zaxira usul)
  • CLI’ni (openclaw) gateway mashinasida (yoki SSH orqali) ishga tushira olishingiz mumkin.

1. Gateway’ni ishga tushiring

openclaw gateway --port 18789 --verbose
Loglarda quyidagiga o‘xshash yozuvni ko‘rganingizni tasdiqlang:
  • listening on ws://0.0.0.0:18789
Faqat tailnet uchun sozlamalar (Vienna ⇄ London uchun tavsiya etiladi) da gateway’ni tailnet IP’iga bog‘lang:
  • Gateway xostidagi ~/.openclaw/openclaw.json faylida gateway.bind: "tailnet" ni o‘rnating.
  • Gateway’ni / macOS menyu paneli ilovasini qayta ishga tushiring.

2. Discovery’ni tekshiring (ixtiyoriy)

Gateway mashinasidan:
dns-sd -B _openclaw-gw._tcp local.
Qo‘shimcha nosozliklarni aniqlash eslatmalari: Bonjour.

Tailnet (Vienna ⇄ London) orqali unicast DNS-SD yordamida discovery

Android NSD/mDNS discovery tarmoqlar orasidan o‘tmaydi. Agar Android tuguningiz va gateway turli tarmoqlarda bo‘lsa, lekin Tailscale orqali ulangan bo‘lsa, Wide-Area Bonjour / unicast DNS-SD’dan foydalaning:
  1. Gateway xostida DNS-SD zonani (masalan, openclaw.internal.) sozlang va _openclaw-gw._tcp yozuvlarini e’lon qiling.
  2. Tanlangan domen uchun Tailscale split DNS’ni sozlab, uni o‘sha DNS serverga yo‘naltiring.
Batafsil ma’lumotlar va CoreDNS konfiguratsiyasi namunasi: Bonjour.

3. Android’dan ulaning

Android ilovasida:
  • Ilova gateway ulanishini foreground service (doimiy bildirishnoma) orqali faol holda saqlaydi.
  • Settings’ni oching.
  • Discovered Gateways bo‘limida gateway’ingizni tanlab, Connect ni bosing.
  • Agar mDNS bloklangan bo‘lsa, Advanced → Manual Gateway (xost + port) dan foydalanib, Connect (Manual) ni bosing.
Birinchi muvaffaqiyatli pairing’dan so‘ng, Android ishga tushganda avtomatik qayta ulanadi:
  • Agar yoqilgan bo‘lsa, qo‘lda kiritilgan endpoint, aks holda
  • Oxirgi topilgan gateway (imkon qadar).

4. Pairing’ni tasdiqlang (CLI)

Gateway mashinasida:
openclaw nodes pending
openclaw nodes approve <requestId>
Pairing tafsilotlari: Gateway pairing.

5. Tugun ulanganini tekshiring

    1. Via tugunlar holati:
    2. openclaw tugunlar holati
    
  • Via Gateway:
    4. openclaw gateway call node.list --params "{}"
    

5. 6. Chat + tarix

  1. Android tugunining Chat oynasi gateway’ning asosiy sessiya kaliti (main) dan foydalanadi, shuning uchun tarix va javoblar WebChat va boshqa mijozlar bilan bo‘lishiladi:
    1. Tarix: chat.history
    1. Yuborish: chat.send
    1. Push yangilanishlar (best-effort): chat.subscribeevent:"chat"

10. 7. Canvas + kamera

11. Gateway Canvas Host (veb kontent uchun tavsiya etiladi)

  1. Agar tugun agent diskda tahrirlashi mumkin bo‘lgan haqiqiy HTML/CSS/JS ni ko‘rsatsin desangiz, tugunni Gateway canvas host’ga yo‘naltiring.
Eslatma: node lar canvas ni Gateway HTTP serveridan yuklaydi (gateway.port bilan bir xil port, standart 18789).
  1. Tailnet (ixtiyoriy): agar ikkala qurilma ham Tailscale’da bo‘lsa, .local o‘rniga MagicDNS nomi yoki tailnet IP’dan foydalaning, masalan: http://<gateway-magicdns>:18793/__openclaw__/canvas/.
  2. Bu server HTML ichiga live-reload mijozini qo‘shadi va fayllar o‘zgarganda qayta yuklaydi.
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'
Tailnet (ixtiyoriy): agar ikkala qurilma ham Tailscale da bo‘lsa, .local o‘rniga MagicDNS nomi yoki tailnet IP dan foydalaning, masalan http://<gateway-magicdns>:18789/__openclaw__/canvas/.
  1. Bu server HTML ichiga live-reload mijozini qo‘shadi va fayllar o‘zgarganda qayta yuklaydi. A2UI host manzili: http://<gateway-host>:18789/__openclaw__/a2ui/.
  2. Canvas buyruqlari (faqat oldingi rejim):
    1. canvas.eval, canvas.snapshot, canvas.navigate (standart scaffold’ga qaytish uchun {"url":""} yoki {"url":"/"} dan foydalaning). 22. canvas.snapshot { format, base64 } ni qaytaradi (standart format="jpeg").
    1. A2UI: canvas.a2ui.push, canvas.a2ui.reset (canvas.a2ui.pushJSONL eski alias)
  1. Kamera buyruqlari (faqat oldingi rejim; ruxsat bilan cheklangan):
  • camera.snap (jpg)
  • camera.clip (mp4)
  1. Parametrlar va CLI yordamchilari uchun Camera node ga qarang.