@silakagent/android-runner
v0.1.0
Published
Daemon self-hosted Fase 4 — Appium server + UIAutomator2 + better-sqlite3, pairing token lokal ke extension. Wajib untuk semua device Android, emulator maupun USB fisik, deteksi dinamis via adb devices -l (PRD §5.8)
Maintainers
Readme
@silakagent/android-runner
Daemon lokal yang menjembatani Silak Agent (Chrome extension) ke device Android
(emulator/USB) lewat ADB + Appium — untuk mengontrol & mengotomasi device (live-mirror, input,
navigasi; testing/QA salah satu pemakaian). Extension tidak bisa bicara ke ADB langsung
(sandbox Manifest V3), jadi daemon ini yang menjalankan adb devices -l, mengontrol device,
dan menyajikan live-mirror scrcpy — lalu me-relay-nya ke extension via WebSocket lokal.
Prasyarat
- Node.js >= 22
- Android Platform Tools (ADB) terpasang & ada di
PATH(adb devicesjalan) - Emulator berjalan atau device fisik dengan USB debugging aktif
Pakai (tanpa install)
npx @silakagent/android-runnerRunner mencetak alamat + token pairing saat startup. Buka panel "Android Runners" di
extension Silak → "Pengaturan lanjutan" → paste token itu (alamat default
ws://127.0.0.1:47811 sudah cocok untuk mesin yang sama). Setelah tersambung, device muncul
otomatis di dropdown.
Ringan tanpa Appium (deteksi + tap via ADB shell):
npx @silakagent/android-runner --engine adbShell
Flag
| Flag | Arti |
| --- | --- |
| --pairing-port <n> | Port WebSocket pairing (default 47811) |
| --appium-port <n> | Port internal Appium (default 4723) |
| --engine adbShell\|appium | Paksa mesin eksekusi semua device; adbShell mematikan Appium |
| --no-token | Matikan pairing token (hanya untuk mesin pribadi tepercaya — lihat Keamanan) |
| --db-path <path> | Lokasi SQLite lokal (default ~/.silakagent/android-runner.sqlite3) |
| --platform-version <v> | Override versi Android target (opsional) |
Keamanan
Secara default pairing token wajib — extension harus paste token yang di-print runner. Ini
penting karena paket ini dibagikan luas via npx: tanpa token, halaman web mana pun di
browser yang sama di mesin ini bisa terhubung ke daemon dan mengontrol device tanpa izin
(WebSocket tidak tunduk same-origin policy → "localhost bypass"). --no-token hanya untuk
mesin pribadi tepercaya yang menerima risiko itu (bind loopback-only, tapi tetap tidak
melindungi dari halaman web di browser yang sama).
