simulator-use

simulator-use vs AXe

Pick AXe for a command line with no MCP server: shell scripts, CI jobs, or agents that run commands. simulator-use is built on AXe's frameworks. (AXe docs, simulator-use README)

Pick simulator-use for an MCP server on the same frameworks that also builds and tests the app and reads the screen as one line per element. (simulator-use README)

Measured on one Mac: simulator-use read 194 tokens per sign-in, AXe 110,319 (est.); simulator-use signed in in 3.50 s, AXe in 9.21 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 (AXe through its command line). Times are medians; tokens are estimates (characters / 4).

AXesimulator-use
Signing in, step by step9.21 s3.50 s
Tokens read per sign-in (est.)110,319194
Sign-ins completed10 of 1010 of 10
Signing in, batched4.63 s2.87 s
Tokens read, batched (est.)110,273179
Batched sign-ins completed8 of 1010 of 10
Reading the screen (median)0.86 s0.19 s
Tapping a button (median)1.72 s0.68 s
Typing into a field (median)1.98 s1.14 s
Tool list in context (est.)none (CLI)2,443
Setup its docs ask fornone0.12 s

AXe 1.8.0, simulator-use 0.15.0. Every call is in bench/results/2026-11-01.

With Device Hub open

AXe's README says:

"Xcode 27 simulator automation uses Device Hub; Simulator.app is not required." (AXe README)

So AXe ran three times on the benchmark's Mac: with the Simulator headless like every tool, again with Device Hub open, and once more with Device Hub closed. The ranking uses the first run.

ConditionTaps that reached the appTypings shownSign-ins completedSign-in
Headless, the ranked run20 of 2010 of 1010 of 109.21 s
Device Hub open6 of 203 of 100 of 10none
Headless again, last of all20 of 2010 of 1010 of 105.91 s

With Device Hub open, every axe tap still answered that it was done; the counts are what the app's own log saw. simulator-use is built on AXe's frameworks: its engine keeps one session open per Simulator instead of starting AXe for each call.

What each does

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

AXesimulator-use
LicenseMIT (AXe LICENSE)MIT (simulator-use LICENSE)
Builds the appNo (AXe docs)Yes: builds the Xcode project, installs and launches it (app_run) (simulator-use README)
Runs testsNo (AXe docs)XCTest and XCUITest, case by case (tests_run) (simulator-use README)
Screen as textThe accessibility tree as JSON (describe-ui) (AXe docs)One line per element: kind, label, #id, state and position (simulator-use README)
How it tapsBy accessibility id or label, or at coordinates (AXe docs, AXe README)By #id or label, or at @x,y (simulator-use README)
Cloud optionNone in its docs (AXe docs)A NoMac cloud iPhone (simulator-use cloud start), billed per minute (simulator-use README)
Needs besides XcodemacOS 14 or later. "Xcode 27 simulator automation uses Device Hub; Simulator.app is not required." (AXe docs, AXe 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:

AXesimulator-use
Setupnonedevice_use {"device":"<udid>"}
Read the screenaxe describe-ui --udid <udid>ui_look {}
Tap a buttonaxe tap --id signIn --udid <udid>ui_act {"steps":["tap #signIn"]}
Type into a fieldaxe tap --id email --udid <udid>axe type gary@example.com --udid <udid>ui_act {"steps":["fill #email gary@example.com"]}
Several steps in one callaxe batch --udid <udid> --step "tap --id email" --step "type 'gary@example.com'" --step "tap --id password" --step "type 'secret1'" --step "tap --id signIn"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.