Mayros macOS Companion (menu bar + gateway broker)

Aplikasi macOS adalah companion menu-bar untuk Mayros. Ini memiliki izin, mengelola/melampirkan ke Gateway secara lokal (launchd atau manual), dan mengekspos kemampuan macOS ke agen sebagai node.

Apa yang dilakukannya

  • Menampilkan notifikasi native dan status di menu bar.
  • Memiliki prompt TCC (Notifications, Accessibility, Screen Recording, Microphone, Speech Recognition, Automation/AppleScript).
  • Menjalankan atau terhubung ke Gateway (lokal atau remote).
  • Mengekspos tool khusus macOS (Canvas, Camera, Screen Recording, system.run).
  • Memulai service host node lokal dalam mode remote (launchd), dan menghentikannya dalam mode local.
  • Opsional meng-host PeekabooBridge untuk UI automation.
  • Menginstal CLI global (mayros) melalui npm/pnpm atas permintaan (bun tidak direkomendasikan untuk runtime Gateway).

Mode lokal vs remote

  • Lokal (default): aplikasi melampirkan ke Gateway lokal yang sedang berjalan jika ada; jika tidak, aplikasi mengaktifkan service launchd melalui mayros gateway install.
  • Remote: aplikasi terhubung ke Gateway melalui SSH/Tailscale dan tidak pernah memulai proses lokal. Aplikasi memulai service host node lokal sehingga Gateway remote dapat mencapai Mac ini. Aplikasi tidak menelurkan Gateway sebagai child process.

Kontrol Launchd

Aplikasi mengelola LaunchAgent per-pengguna yang diberi label bot.molt.gateway (atau bot.molt.<profile> saat menggunakan --profile/MAYROS_PROFILE; lama com.mayros.* masih di-unload).

bash
launchctl kickstart -k gui/$UID/bot.molt.gateway
launchctl bootout gui/$UID/bot.molt.gateway

Ganti label dengan bot.molt.<profile> saat menjalankan profil yang diberi nama.

Jika LaunchAgent tidak diinstal, aktifkan dari aplikasi atau jalankan mayros gateway install.

Kemampuan node (mac)

Aplikasi macOS menampilkan dirinya sebagai node. Command umum:

  • Canvas: canvas.present, canvas.navigate, canvas.eval, canvas.snapshot, canvas.a2ui.*
  • Camera: camera.snap, camera.clip
  • Screen: screen.record
  • System: system.run, system.notify

Node melaporkan peta permissions sehingga agen dapat memutuskan apa yang diizinkan.

Persetujuan Exec (system.run)

system.run dikontrol oleh Exec approvals di aplikasi macOS (Settings → Exec approvals). Keamanan + tanya + allowlist disimpan secara lokal di Mac di:

~/.mayros/exec-approvals.json

Catatan:

  • Entri allowlist adalah pola glob untuk jalur binary yang di-resolve.
  • Memilih "Always Allow" di prompt menambahkan command itu ke allowlist.
  • Override environment system.run difilter (drops PATH, DYLD_*, LD_*, NODE_OPTIONS, PYTHON*, PERL*, RUBYOPT) dan kemudian digabungkan dengan environment aplikasi.

Dokumen terkait