{"id":"b3ab0fc9-0c4a-4e1b-b163-36367151cad8","slug":"agentic-device","kind":"mcp","name":"agentic-device","summary":"Control your own iPhones for posting via WebDriverAgent and ESP32 HID.","owner":"pooriaarab","repoUrl":"https://github.com/pooriaarab/agentic-device","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-10-14T23:39:37.000Z","addedAt":"2026-10-15T00:20:49.916Z","logoUrl":"https://avatars.githubusercontent.com/u/42897904?u=3784005a8652a3f66b9da205403c69641859e818&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["utilities"],"tags":[],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-18T00:23:55.285Z","sample":false,"url":"https://conduits.dev/tools/agentic-device","language":"TypeScript","transports":["stdio"],"install":{"npm":"agentic-device"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# agentic-device\n\n[![npm version](https://img.shields.io/npm/v/agentic-device)](https://www.npmjs.com/package/agentic-device)\n[![npm downloads per month](https://img.shields.io/npm/dm/agentic-device)](https://www.npmjs.com/package/agentic-device)\n[![license](https://img.shields.io/npm/l/agentic-device)](https://www.npmjs.com/package/agentic-device)\n\n[npm package](https://www.npmjs.com/package/agentic-device) · [CLI](#cli) · [Library](#library) · [Safety](#safety) · [Limits](#limits)\n\nagentic-device is a TypeScript library, CLI, and MCP server for driving phones **you own** — an iPhone through WebDriverAgent or an ESP32 HID bridge — so an agent can run setup-oriented UI actions and queue auditable phone-posting tasks.\nIt is a consent-first device pack: actions dry-run by default and anything that needs a human (passcode, CAPTCHA, verification code) stops with `needs-human` instead of faking progress.\n\n## Install\n\n```sh\nnpm install agentic-device\n```\n\nRequires Node.js and the published `dist/` build. Two runtime dependencies: the MCP SDK and zod.\n\n## Post your first task\n\n```sh\nagentic-device device register --udid MY_PHONE_UDID --label \"My iPhone\" --connection simulator\nagentic-device device action --udid MY_PHONE_UDID --action '{\"type\":\"home\"}'\nagentic-device device post-task --udid MY_PHONE_UDID --platform instagram --text \"Ship day\"\nagentic-device device queue\n```\n\n`device action` and `post-task` are dry runs until you pass `--execute`, and `device action` stays a review gate even then: the run reports what the driver did or the `VendorError` it hit.\n\n## CLI\n\n```sh\nagentic-device device register --udid <id> --label <label> --connection <wda|esp32-hid|simulator>\nagentic-device device list\nagentic-device device action --udid <id> --action <json> [--execute]\nagentic-device device post-task --udid <id> --platform <name> --text <text> [--media <path>]\nagentic-device device queue [--claim|--complete|--fail <task-id>]\nagentic-device costs\nagentic-device mcp\n```\n\n## Library\n\n```ts\nimport { DeviceRegistry, SimulatorDriver, runAction } from \"agentic-device\";\n\nconst registry = new DeviceRegistry();\nconst phone = registry.register({ udid: \"mine\", label: \"My iPhone\", connectionType: \"simulator\" });\nawait runAction(phone, new SimulatorDriver(), { type: \"home\" }); // dry run\n```\n\n## MCP server\n\n`agentic-device mcp` (or `npx agentic-device-mcp`) serves the same registry, queue, drivers, and cost report as tools on stdio, so a host such as Claude Code or Cursor can register a device, preview an action, and read the task queue.\n\n## Use cases\n\n- A support agent queues a product-announcement post for a device on your desk and you approve the run.\n- A QA agent drives its own simulator through an app's onboarding to capture screenshots.\n- A posting pipeline records each device task as an auditable queue entry instead of an untracked script.\n\n## Alternatives and related tools\n\n- [Appium](https://appium.io) is the general mobile-automation framework; WebDriverAgent is its iOS driver, and agentic-device speaks the same protocol for the posting-task subset.\n- [ESP32-BLE-Keyboard](https://github.com/T-vK/ESP32-BLE-Keyboard) is the reference firmware for the Bluetooth-HID path.\n- Full device-farm products (BrowserStack App Automate, Firebase Test Lab) rent you devices at scale; this pack is for the phones on your own desk.\n\n## Safety\n\n- Register only your own phones by UDID.\n- `device action` is a dry run by default; pass `--execute` only after review.\n- `humanCheckpoint` always returns `needs-human` for passcode, CAPTCHA, and verification-code steps — the pack never bypasses a platform check.\n- Drivers surface failures as `VendorError`; they never report failed hardware or network work as success.\n\n## Limits\n\n- No passcode, CAPTCHA, two-factor, or App Store review bypass — ever.\n- The WebDriverAgent path needs a reachable WDA endpoint for a physical device; `simulator` is the zero-hardware option.\n- The posting queue is in-process by default; persist tasks in your own store for production runs.\n\n## Upstream bases\n\nThe WDA driver follows the protocol exposed by [appium/WebDriverAgent](https://github.com/appium/WebDriverAgent). The ESP32 HID path is designed around [ESP32-BLE-Keyboard](https://github.com/T-vK/ESP32-BLE-Keyboard). These integrations are for owner-operated devices only.\n\n## License\n\nMIT\n"}