{"adoption": {"forks": 265, "observed_at": "2026-08-28T04:08:39.416808+00:00", "stars": 4233}, "canonical_url": "https://ross.abutalabs.com/products/agent-device", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Mobile app automation and verification for AI coding agents. CLI, MCP server, and typed Node.js API for iOS, Android, HarmonyOS, TV, web, macOS, and Linux.", "domain": ["mobile-development", "testing", "developer-tools"], "enriched": true, "function": ["testing", "e2e-testing", "cli", "mcp", "agent-framework", "developer-tools"], "health_score": 100, "homepage": "https://agent-device.dev", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["callstack/agent-device"], "name": "callstack/agent-device", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-26T18:57:40+00:00", "repo": "callstack/agent-device", "stars": 4233, "tags": ["mobile-automation", "mcp-server", "ai-coding-agents", "ios-simulator", "android-emulator", "react-native", "flutter", "accessibility-snapshot", "device-automation", "expo", "automation", "ai-agents", "nodejs", "macos", "linux", "ios", "android", "web-server"], "topics": ["agentic-ai", "agents", "automation", "mobile", "testing", "adb", "android-emulator", "e2e-testing", "expo", "ios-simulator", "mcp", "react-native", "xcuitest", "ai-agents", "flutter", "mobile-testing", "performance-optimization"], "urls": [], "use_cases": ["let a coding agent verify its UI changes in a running mobile app", "automate iOS simulator and Android emulator testing from the terminal", "give AI agents eyes on a native app via accessibility snapshots", "run end-to-end flows on real devices and replay them as scripts", "coordinate device access across parallel agent worktrees", "capture bug evidence and profiling data from mobile apps", "connect agents to remote device clouds over MCP"], "what_it_is": "A CLI, MCP server, and typed Node.js API that lets AI coding agents automate, inspect, and verify real mobile and desktop apps. It provides token-efficient accessibility snapshots, semantic element refs, and evidence capture across iOS, Android, HarmonyOS, TV, web, macOS, and Linux.", "when_to_avoid": ["you only need browser automation for web apps", "you need a traditional CI-only test framework without agent integration", "your stack requires Node.js older than 22.12"], "when_to_choose": ["you want AI coding agents to test and verify native mobile apps automatically", "you need one automation interface across iOS, Android, TV, and desktop targets", "you prefer token-efficient accessibility-tree snapshots over screenshot-based reasoning", "you use Claude Code, Cursor, Codex, or another MCP-capable agent"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/agent-device", "repo": "callstack/agent-device", "role": "main", "score": 78}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.416808+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:22:19.495209+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13774164ad9e4c1f6612932de066e91983e956fabffbca6c0a92db0c7e36429c", "fetched_at": "2026-08-28T04:08:39.416808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callstack/agent-device"}, {"content_hash": "1eddfa93453f950c5349de7ae59f6cdbf4b9b5555cf6550b80e088a0d5720d4f", "fetched_at": "2026-08-29T09:12:27.944068+00:00", "kind": "homepage", "missing": false, "url": "https://agent-device.dev"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 15, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 215, "days_push": 7, "days_rel": 9, "gap_med": 0, "n_releases_24m": 118}, "score": 78, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}