v0.1 alpha · macOS only · Elastic-2.0
The iOS simulator
your AI agent can
actually drive.
Three primitives. ios_observe,
ios_act,
ios_record.
Exposed as Python functions and MCP tools. Replays run free, forever, with no API tokens.
pip install simdriveUsed by agentic teams shipping iOS
PRIMITIVES
Three functions. That's the whole API.
No DSL. No YAML. No selectors. Your agent reads the simulator state and acts on it the same way a human tester does — only deterministically.
01
ios_observe()
Screenshot + accessibility tree, returned as a typed state object.
from simdrive import ios_observe
# Capture the current simulator state — screenshot + accessibility tree.state = ios_observe()print(state.elements) # list of (role, label, frame) tuples02
ios_act()
Tap, type, swipe, scroll. Validated against the last observed state.
from simdrive import ios_act
# Drive the simulator. Coordinates are validated against the# observed state — no blind taps.ios_act("tap", target="Sign In")03
ios_record()
Capture a deterministic replay. Run it free in CI — no AI tokens.
from simdrive import ios_record
# Capture a deterministic replay file as the agent works.with ios_record("smoke.replay.json"): ios_act("tap", target="Sign In")# Replay it free, forever, in CI.HOW IT WORKS
Observe → Act → Record. Then replay.
COMPARISON
Why not Maestro or Appium?
Both are excellent for human-authored tests. SimDrive optimizes for a different caller: an LLM agent that needs structured state in and structured actions out.
| SimDrive | Maestro | Appium | |
|---|---|---|---|
| Primary caller | LLM agent | Human via YAML | Human via WebDriver |
| Observation | screenshot + a11y tree | hierarchy dump | XML page source |
| Action validation | against last observation | selector-based | selector-based |
| Replay cost | free, deterministic | free | free |
| MCP server | built-in | n/a | n/a |
MCP INSTALL
Plug into your agent in one config block.
SimDrive ships an MCP server. Add it to your client config — nothing else to install.
# .mcp.json — Claude Code{ "mcpServers": { "simdrive": { "command": "uvx", "args": ["simdrive", "mcp"] } }}# ~/.cursor/mcp.json — Cursor{ "mcpServers": { "simdrive": { "command": "uvx", "args": ["simdrive", "mcp"] } }}# ~/.continue/config.json — Continue{ "experimental": { "modelContextProtocolServers": [ { "transport": { "type": "stdio", "command": "uvx", "args": ["simdrive", "mcp"] } } ] }}PRICING
Free to run. Pay to scale.
Replays are always free. Pricing covers parallel CI, team seats, and priority support.
See pricing →QUOTES
What developers are saying
[ design partner quote — W3 ]
[ design partner quote — W3 ]