Agent Device Verification CLI
A CLI that lets coding agents inspect, control, and verify apps running on devices and simulators.
- Source repo
- callstack/agent-device
- Stars
- ★ 5.3k
- Last updated
- today
- License
- MIT
- Primary language
- TypeScript
- FA score
- 74/100 · Some gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · Claude Code
- Cost
- Free, no paid service needed
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- A React Native or Expo developer asks a coding agent to verify a changed form flow on an iOS Simulator or Android Emulator using snapshots, press, and fill.
- Not a fit if
- Teams that cannot install Node.js 22.12 or newer
- Web-only automation projects stuck on Node.js 22
- Teams needing physical Fire TV or full Vega OS capture support
- Source review
- 74/100 · Some gaps
What does this agent do, and when should you use it?
agent-device is a command-line automation tool for coding agents and QA tools to inspect, control, and verify running applications. It supports iOS, Android, tvOS, Android TV, Amazon Vega OS TV through Vega Virtual Device, web, macOS, and Linux, with command and evidence availability varying by target. The CLI keeps device state in sessions and uses XCTest for iOS and tvOS, ADB plus a snapshot helper for Android, Vega CLI/VDA for VVD, a local macOS helper, and AT-SPI on Linux. It can produce accessibility snapshots, screenshots, video, logs, traces, network data, performance samples, crash details, and React profiles; successful workflows can be saved as .ad scripts or exported as strict Maestro YAML. Teams can use it locally, replay runs in CI/CD, or configure remote and cloud execution paths.
A session can begin with a command such as agent-device open Contacts --platform ios, followed by agent-device snapshot -i to read the accessibility tree and obtain current @eN refs. An agent can act on the latest refs or selectors with press, fill, scrolling, gestures, waits, assertions, and alert handling; --settle returns UI changes after an action. It can save a screenshot with screenshot and collect video, logs, traces, network data, performance samples, crash details, and React profiles. Workflows can be retained as .ad scripts for local or CI replay, or exported as strict Maestro YAML; Node.js applications can also use the typed client or public subpaths, including agent-device/android-adb for Android ADB, logcat, clipboard, keyboard, app, and port-reverse helpers.
- A React Native or Expo developer asks a coding agent to verify a changed form flow on an iOS Simulator or Android Emulator using snapshots, press, and fill.
- A mobile QA engineer saves a successful login or onboarding flow as an .ad script for CI replay with screenshots and logs retained as artifacts.
- A native iOS, Android, or Flutter team captures screenshots, video, and diagnostic data when accessibility information is insufficient for a reviewable bug report.
- A TV application team uses a Vega Virtual Device to discover an app, manage its lifecycle, and perform complete TV-remote interactions.
- A React Native performance team reproduces a UI issue while collecting performance samples, traces, network data, or a React profile.
How do you install or deploy this agent?
Install Node.js 22.12 or newer; web automation requires Node.js 24 or newer. Run: npm install -g agent-device@latest. Then verify the environment with: agent-device doctor. The supplied material does not state that CLI installation requires an account or credential; device and target-specific setup requirements are covered by the installation documentation.
How do you use this agent?
Run agent-device doctor first, then use agent-device help workflow for workflow help. A working iOS sequence shown in the supplied material is: agent-device open Contacts --platform ios; agent-device snapshot -i; agent-device press @e2 --settle; agent-device fill @e7 "Ada" --settle; agent-device screenshot ./contact-form.png; agent-device close. Use @eN refs only from the latest output; after --settle, use the refs returned in its diff.
What are this agent's strengths and limitations?
- Uses an inspect-act-verify workflow, so an agent can read live app state and choose each next command at runtime.
- Combines mobile, TV, desktop, and basic web automation in one CLI while using target-appropriate underlying automation interfaces.
- Provides token-efficient accessibility snapshots alongside refs, selectors, screenshots, and video for both interaction and reviewable evidence.
- Can preserve validated flows as .ad scripts and export strict Maestro YAML for repeatability and CI use.
- Includes React Native-oriented diagnostic surfaces such as component trees, React profiles, and performance-related evidence.
- Requires Node.js 22.12 or newer, and web automation raises that requirement to Node.js 24 or newer.
- Commands and evidence vary by target, so feature parity across platforms is not documented.
- Initial Vega OS support is limited to Vega Virtual Device discovery, app lifecycle, and complete TV-remote control; physical Fire TV, capture, and selector backends are unsupported.
- Element refs can become stale after UI changes, requiring refs from the newest snapshot or --settle diff.
- Poor accessibility labels, roles, or test IDs reduce snapshot reliability and may require screenshots or video as fallback evidence.
How does this agent compare with similar options?
Appium, Detox, and Maestro are described as tools teams use to write and maintain test suites. agent-device instead lets an agent read application state and select commands at runtime, while complementing those tools by saving .ad scripts or exporting strict Maestro YAML.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Agent Device Verification CLI This agent | 74 · Some gaps | CLIFree | ★ 5.3k | today | TypeScript | Codex · Claude Code |
| Playwright Browser Automation MCP | 65 · Some gaps | MCP serverFree | ★ 39k | 1d ago | TypeScript | Codex · Claude Code |
| iOS Simulator Skill Pack | 71 · Some gaps | Agent plugin / skillFree | ★ 1.3k | today | Python | Claude Code |
| Expo Skills – Official AI Agent Skills for Expo | 67 · Some gaps | Agent plugin / skillFreemium | ★ 4.1k | 6d ago | Shell | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
The CLI, MCP server, and SDK share a command path; the AI SDK pins the session and hides stateDir, and the docs describe device capabilities and data collection paths. Security evidence documents runner-token permissions and listener boundaries, and the policy requests private vulnerability reports. Deductions: ordinary driving flows start acting directly, while approval is optional; device interaction, installation, and network capture can have external effects, and no general undo mechanism is shown; dependency inventory and vulnerability mitigation evidence are absent from this packet. Callstack authorship, the MIT license, and attribution to agent-browser are clear, but publisher identity remains unverified as specified.
The README, skill cards, and SDK are broadly consistent about sessions, ref updates, and closing; the capabilities matrix and command expose platform differences. Errors include corrective hints, and the AI SDK normalizes errors. Deductions: the packet does not fully establish command coverage or dependency availability; the skill cards' fast-start advice is in slight tension with the README's doctor preflight recommendation, and static evidence cannot establish runtime outcomes.
The material targets coding-agent and QA workflows across local, CI, cloud, and multiple platforms, with platform-specific skills. The capability matrix, command guidance, and explicit platform subsets show boundary awareness. Deductions: skill scope remains broad, while detailed trigger and platform selection guidance relies partly on external docs; Node, native toolchain, device, and cloud requirements create meaningful setup demands.
The README clearly organizes installation, commands, API, integrations, FAQ, contribution, and security entry points; examples cover CLI, MCP, Node API, and common tasks. The material states Node requirements, platform differences, and evidence limits, and includes the full MIT text. Deductions: the packet contains no changelog or release cadence; the development package version and author field plus reporting process provide some maintenance signals, but no explicit maintainer responsibility is established.
Accessibility snapshots, refs, diffs, replay, and evidence capture provide actionable outputs, and a shared runtime across CLI, MCP, and SDK addresses a clear need to verify real applications from agents. Deductions: devices, simulators, native dependencies, and cloud services add setup and operating costs, which the static evidence does not quantify against benefits.
Many claims are traceable to command examples, package entrypoints, workflows, ADRs, and detailed device verification records; the records distinguish verified behavior, experiments, and uncovered conditions. The README and source provide some corroboration for the CLI/MCP/SDK architecture. Deductions: many platform capabilities are only summarized in the README, and the packet lacks full docs and dependency inventory for cross-checking; verification records are not treated as independent execution in this review.
- The agent can act directly on devices and apps; confirm the target and authorization before installation, removal, input, or cloud-device operations.
- Platform capabilities and environment dependencies vary. Check the relevant capabilities, installation requirements, and device-cloud setup before use; this review did not execute commands.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
What's Changed * test(daemon): retain sanitized evidence on idle cleanup failure by @thymikee in https://github.com/callstack/agent-device/pull/4090 * test(apple): distinguish captured focus words from synthetic types by @thymikee in https://github.com/callstack/agent-device/pull/4087 * test(daemon): type teardown fixtures and clarify browser ownership by @thymikee in https://github.com/callstack/agent-device/pull/4081 * fix(platform-android): disable persistent Android snapshots after an unhealthy helper retirement by @mvanhorn in https://github.com/callstack/agent-device/pull/4007 …View on GitHub ↗ -
Release notes excerpt
What's Changed * test(proxy): cover the by-spec open that names no platform or lease backend by @thymikee in https://github.com/callstack/agent-device/pull/4044 * perf(check-affected): keep the related run out of the unit projects on fail-open plans too by @thymikee in https://github.com/callstack/agent-device/pull/4058 * refactor(daemon): require runtime access when constructing request execution by @thymikee in https://github.com/callstack/agent-device/pull/4061 …View on GitHub ↗ -
Release notes excerpt
What's Changed * refactor(android): centralize session error encoding by @thymikee in https://github.com/callstack/agent-device/pull/4000 * refactor(runtime): share host command runner construction by @thymikee in https://github.com/callstack/agent-device/pull/3999 * refactor(apple): share simulator status-bar diagnostics by @thymikee in https://github.com/callstack/agent-device/pull/3998 * refactor: reuse canonical device identity projections by @thymikee in https://github.com/callstack/agent-device/pull/3996 …View on GitHub ↗
FAQ
Is it limited to React Native?
Can it run in CI?
Must every workflow be authored as a traditional test first?
What if the accessibility snapshot does not expose the control I need?
What is the Vega OS and Fire TV boundary?
Thanks — we use this to improve the page.