webadb-agent
by abewartech
README.md
# webadb-agent π±ππ€
HP Android kamu β **di web, bisa dikendalikan AI agent juga.**
Satu service ringan yang bikin HP Android fisik (atau emulator di Docker)
bisa diakses dari browser **dan** dari AI agent, kayak emulator tapi devicenya
punya kamu sendiri.
```
[HP fisik] ββUSB/WiFiβββ
βββΊ adb server ββΊ webadb-agent bridge ββΊ Browser (layar live, klik=tap)
[Emulator Docker] ββββββ βββΊ REST API (untuk agent remote)
βββΊ MCP server (untuk agent lokal)
```
## Gabungan 3 project
| Project | Yang diambil |
|---|---|
| [yume-chan/ya-webadb](https://github.com/yume-chan/ya-webadb) (Tango) | ADB client **murni TypeScript** (`@yume-chan/adb`) β tanpa re-implementasi protokol |
| [callstack/agent-device](https://github.com/callstack/agent-device) | Pola **remote proxy via tunnel** + loop agent *inspect β act β verify* + MCP server |
| [google/android-emulator-container-scripts](https://github.com/google/android-emulator-container-scripts) | **Emulator Android di Docker** sebagai backend alternatif HP fisik |
## Quick start (HP fisik)
```bash
# 1. Di PC: install platform-tools, colok HP, aktifkan USB debugging
adb start-server && adb devices
# 2. Jalankan bridge
cd packages/bridge && npm install && npm run build
node dist/index.js bridge --port 8080
# β catat bearer token yang tercetak
# β¦ATAU via Docker (lihat docs/DOCKER.md):
cp .env.example .env # isi WEBADB_TOKEN
docker compose up -d --build
# 3. Buka http://localhost:8080, masukkan token β layar HP live di web,
# klik = tap, drag = swipe. Ada juga terminal ADB shell.
```
## Quick start (emulator Docker, tanpa HP)
Butuh Linux + KVM + Docker. Lihat `docs/EMULATOR.md`.
```bash
docker compose -f docker/docker-compose.emulator.yml up -d
adb connect localhost:5555
node packages/bridge/dist/index.js bridge --serial localhost:5555
```
## Untuk AI agent
**Remote** (tunnel, pola ala `agent-device proxy`) β lihat `docs/REMOTE-ACCESS.md`:
```bash
cloudflared tunnel --url http://127.0.0.1:8080
curl -H "Authorization: Bearer $TOKEN" $TUNNEL_URL/api/screenshot -o s.png
```
**Lokal** (MCP stdio) β tambah ke config MCP client:
```json
{ "mcpServers": { "webadb-agent": {
"command": "node", "args": ["/path/to/packages/bridge/dist/index.js", "mcp"] } } }
```
Tools: `screenshot`, `tap`, `swipe`, `key`, `type_text`, `shell`, `open_app`, `device_info`.
Prompt siap pakai: `examples/agent-prompt.md`. Referensi REST: `docs/AGENT-API.md`.
Mau pakai framework agent (OpenManus/OpenHands/agent-zero/Hermes) sebagai driver? Lihat `docs/AGENT-FRAMEWORKS.md`.
Ada juga skill siap pakai `skills/phone-operator/SKILL.md` (format agentskills.io, untuk Claude Code/Hermes/dll).
## Struktur
```
packages/bridge/src/ β adb.ts (lapisan ADB) Β· server.ts (web UI + REST + WS)
mcp.ts (MCP stdio) Β· index.ts (CLI)
packages/web/ β UI web tanpa build step
docs/ β ARCHITECTURE.md Β· AGENT-API.md Β· REMOTE-ACCESS.md Β· EMULATOR.md
AGENT-FRAMEWORKS.md (OpenManus/OpenHands/agent-zero/Hermes) Β· DOCKER.md
skills/phone-operator/ β SKILL.md (agentskills.io, untuk Claude Code/Hermes)
docker/ β compose emulator + Dockerfile bridge
examples/ β agent-prompt.md
```
## Roadmap
- [ ] scrcpy/H.264 streaming via `@yume-chan/scrcpy` (ganti screencap polling)
- [ ] Mode WebUSB langsung di browser (tanpa bridge) via `@yume-chan/adb-daemon-webusb`
- [ ] File manager di web UI Β· [ ] multi-device Β· [ ] rekam layar
## Lisensi
MIT
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues