simulator-use

simulator-use vs agent-device

Pick agent-device if your agent works across platforms (Android, HarmonyOS, TV, macOS, Linux, web) or several agents share one machine: it scopes sessions to each git worktree and replays saved .ad scripts in CI. (agent-device README)

Pick simulator-use to build and test the Xcode project with the same tool that drives the screen. (simulator-use README, agent-device docs: commands (app install))

Measured on one Mac: simulator-use read 194 tokens per sign-in, agent-device 664 (est.); simulator-use signed in in 3.50 s, agent-device in 6.85 s.

Measured side by side

From the one-Mac benchmark of November 1, 2026: the same app and iPhone 17 Pro Simulator, one tool at a time, each through its own MCP server. Times are medians; tokens are estimates (characters / 4).

agent-devicesimulator-use
Signing in, step by step6.85 s3.50 s
Tokens read per sign-in (est.)664194
Sign-ins completed10 of 1010 of 10
Signing in, batched5.99 s2.87 s
Tokens read, batched (est.)327179
Batched sign-ins completed10 of 1010 of 10
Reading the screen (median)0.05 s0.19 s
Tapping a button (median)0.88 s0.68 s
Typing into a field (median)2.48 s1.14 s
Tool list in context (est.)47,4062,443
Setup its docs ask for34.72 s0.12 s

agent-device 0.21.35, simulator-use 0.15.0. Every call is in bench/results/2026-11-01.

What each does

From each tool's own README, license and docs, read on October 31, 2026.

agent-devicesimulator-use
LicenseMIT (agent-device LICENSE)MIT (simulator-use LICENSE)
Builds the appNo; it installs an app built elsewhere (agent-device docs: commands (app install))Yes: builds the Xcode project, installs and launches it (app_run) (simulator-use README)
Runs testsReplays its own .ad scripts (agent-device README)XCTest and XCUITest, case by case (tests_run) (simulator-use README)
Screen as textSnapshots with refs, and settled diffs after actions (agent-device README)One line per element: kind, label, #id, state and position (simulator-use README)
How it tapsBy ref, then id, label or role selector; coordinates last (agent-device's MCP instructions, as the benchmark recorded them)By #id or label, or at @x,y (simulator-use README)
Cloud optionA remote proxy, or device clouds: BrowserStack, AWS Device Farm, TestMu AI, Limrun (agent-device README)A NoMac cloud iPhone (simulator-use cloud start), billed per minute (simulator-use README)
Needs besides XcodeNode 22.12. A local accessibility bridge for Simulator snapshots and XCTest for iOS interactions (agent-device README)Node 20. Its engine is built on AXe's frameworks, which it bundles (simulator-use README)

Where simulator-use is better

A measured difference is listed when it is 5% or more.

Switching

Add simulator-use to Claude Code with one line (other clients: install):

claude mcp add simulator-use -- npx -y simulator-use mcp

The calls each made in the benchmark, step for step:

agent-devicesimulator-use
Setupopen {"app":"dev.simtap.demo","platform":"ios","udid":"<udid>","foreground":true}device_use {"device":"<udid>"}
Read the screensnapshot {"interactiveOnly":true}ui_look {}
Tap a buttonpress {"target":{"kind":"selector","selector":"id="signIn""},"settle":true}ui_act {"steps":["tap #signIn"]}
Type into a fieldfill {"target":{"kind":"selector","selector":"id="email""},"text":"gary@example.com","settle":true}ui_act {"steps":["fill #email gary@example.com"]}
Several steps in one callbatch {"steps":[{"command":"fill","input":{"target":{"kind":"selector","selector":"id="email""},"text":"gary@example.com"}},{"command":"fill","input":{"target":{"kind":"selector","selector":"id="password""},"text":"secret1"}},{"command":"press","input":{"target":{"kind":"selector","selector":"id="signIn""},"settle":true}}]}ui_act {"steps":["fill #email gary@example.com","fill #password secret1","tap #signIn"]}

Sources

Read on October 31, 2026. The measured numbers: benchmarks and the raw results.