Aplikasi Android (Node)

Snapshot dukungan

Kontrol sistem

Kontrol sistem (launchd/systemd) berada di host Gateway. Lihat Gateway.

Runbook Koneksi

Aplikasi node Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway

Android terhubung langsung ke WebSocket Gateway (default ws://<host>:18789) dan menggunakan pairing milik Gateway.

Prasyarat

  • Anda dapat menjalankan Gateway di mesin "master".
  • Perangkat/emulator Android dapat mencapai WebSocket gateway:
    • LAN yang sama dengan mDNS/NSD, atau
    • Tailnet Tailscale yang sama menggunakan Wide-Area Bonjour / unicast DNS-SD (lihat di bawah), atau
    • Host/port gateway manual (fallback)
  • Anda dapat menjalankan CLI (mayros) di mesin gateway (atau melalui SSH).

1) Mulai Gateway

bash
mayros gateway --port 18789 --verbose

Konfirmasi dalam log Anda melihat sesuatu seperti:

  • listening on ws://0.0.0.0:18789

Untuk pengaturan khusus tailnet (direkomendasikan untuk Vienna ⇄ London), bind gateway ke IP tailnet:

  • Set gateway.bind: "tailnet" di ~/.mayros/mayros.json di host gateway.
  • Restart Gateway / aplikasi menubar macOS.

2) Verifikasi discovery (opsional)

Dari mesin gateway:

bash
dns-sd -B _mayros-gw._tcp local.

Catatan debugging lebih lanjut: Bonjour.

3) Hubungkan dari Android

Di aplikasi Android:

  • Aplikasi menjaga koneksi gateway tetap hidup melalui foreground service (notifikasi persisten).
  • Buka Settings.
  • Di bawah Discovered Gateways, pilih gateway Anda dan tekan Connect.
  • Jika mDNS diblokir, gunakan Advanced → Manual Gateway (host + port) dan Connect (Manual).

Setelah pairing pertama berhasil, Android auto-reconnect saat peluncuran:

  • Endpoint manual (jika diaktifkan), jika tidak
  • Gateway yang terakhir ditemukan (best-effort).

4) Setujui pairing (CLI)

Di mesin gateway:

bash
mayros nodes pending
mayros nodes approve <requestId>

Detail pairing: Pairing Gateway.

5) Verifikasi node terhubung

  • Melalui status node:

    bash
    mayros nodes status
    
  • Melalui Gateway:

    bash
    mayros gateway call node.list --params "{}"
    

6) Chat + riwayat

Chat sheet node Android menggunakan session key utama gateway (main), jadi riwayat dan balasan dibagikan dengan WebChat dan klien lain:

  • Riwayat: chat.history
  • Kirim: chat.send
  • Pembaruan push (best-effort): chat.subscribeevent:"chat"

7) Canvas + kamera

Gateway Canvas Host (direkomendasikan untuk konten web)

Jika Anda ingin node menampilkan HTML/CSS/JS nyata yang dapat diedit agen di disk, arahkan node ke host canvas Gateway.

Catatan: node memuat canvas dari server HTTP Gateway (port yang sama dengan gateway.port, default 18789).

  1. Buat ~/.mayros/workspace/canvas/index.html di host gateway.

  2. Navigasi node ke sana (LAN):

bash
mayros nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__mayros__/canvas/"}'

Tailnet (opsional): jika kedua perangkat ada di Tailscale, gunakan nama MagicDNS atau IP tailnet alih-alih .local, misalnya http://<gateway-magicdns>:18789/__mayros__/canvas/.

Server ini menyuntikkan klien live-reload ke HTML dan me-reload pada perubahan file. Host A2UI berada di http://<gateway-host>:18789/__mayros__/a2ui/.

Command canvas (hanya foreground):

  • canvas.eval, canvas.snapshot, canvas.navigate (gunakan {"url":""} atau {"url":"/"} untuk kembali ke scaffold default). canvas.snapshot mengembalikan { format, base64 } (default format="jpeg").
  • A2UI: canvas.a2ui.push, canvas.a2ui.reset (canvas.a2ui.pushJSONL alias lama)

Command kamera (hanya foreground; permission-gated):

  • camera.snap (jpg)
  • camera.clip (mp4)

Lihat Camera node untuk parameter dan helper CLI.