Skip to main content

SimDrive — reproduce and validate iOS bugs in 60 seconds with Claude. MCP-native iOS automation; 32 vision-first tools; record once, replay free in CI. 14-day trial, then $29/mo Pro.

Project description

simdrive

Reproduce and validate iOS bugs in 60 seconds with Claude.

SimDrive is the MCP-native iOS automation toolkit your AI agent already knows how to drive. Hand it a Linear ticket, watch it walk the steps in the simulator (or a paired real device), and get back a deterministic recording that replays free in CI forever.

60-second bug repro

You (in Cursor / Claude Code):
  "Use simdrive to reproduce Linear ENG-1247 — sign-in fails on iPhone 17 /
   iOS 26.3 with test@example.com."

Claude:
  → session_start({device: "iPhone 17", os_version: "26.3", bundle_id: "com.acme.app"})
  → observe()                              # screenshot + annotated marks
  → tap({text: "Email"})
  → type_text({text: "test@example.com"})
  → tap({text: "Password"})
  → type_text({text: "pw123"})
  → tap({text: "Sign In"})
  → observe()                              # captures error toast
  → record_stop({name: "ENG-1247-repro"})  # YAML+PNG attached to PR

After you ship the fix, the same recording replays free in CI — no AI cost on every run.

What you get

  • Bug reproduction + validation (hero) — agent reads the ticket, drives the simulator, captures the failure, saves a deterministic recording.
  • Record → replay — recordings are YAML + PNG bundles that re-run identically on every CI build. Zero AI cost on replay.
  • Autonomous test suitesrun_journey reads a YAML journey with goals and success criteria; SimDrive drives the agent loop and reports pass/fail with evidence.
  • Real iOS device support — WebDriverAgent-backed; one-command simdrive bootstrap-device <udid> bring-up.
  • Visual regression detection — SSIM-based pre/post comparison with configurable drift handling.
  • Performance baselines + regression comparison — capture CPU / RSS / thread baselines and diff future runs.

Install + activate

pip install simdrive
simdrive trial start --email you@example.com
# 14 days full access, then:
simdrive auth <your-license-key>

The trial license is Ed25519-signed and machine-locked — it works offline, in CI sandboxes, and on developer laptops without network. After 14 days, paid licenses (simdrive auth …) unlock the full tool surface.

Requires: macOS, Xcode 15+, Python 3.10+.

Wire SimDrive into your MCP client

Add to .claude/mcp.json (Claude Code), claude_desktop_config.json (Claude Desktop), or your Cursor MCP config:

{
  "mcpServers": {
    "simdrive": { "command": "simdrive" }
  }
}

Restart the client. Your agent now has 32 SimDrive tools available.

Pricing

Plan Price What you get
Trial Free, 14 days All Pro features, machine-locked
Pro $29 / mo One seat, all tools, unlimited CI replays
Team $99 / seat / mo Multi-seat, shared recording cloud
Enterprise Contact Self-hosted licensing, SLA, integrations

Pricing + ROI calculator: https://simdrive.dev/pricing

Minimum-viable session

session_start(bundle_id="com.example.app")
observe()                                  # see initial screen
tap(label="Sign In")                       # tap a labelled control
observe()                                  # verify state
record_stop(session_id="...", name="signin-smoke")   # save replay
session_end(session_id="...")              # clean up

Maestro-compatible YAML

Migrating from Maestro? SimDrive parses the shorthand natively:

replay:
  bundle_id: com.example.app
  steps:
    - tapOn: "Sign In"
    - inputText: "user@example.com"
    - assertVisible: "Dashboard"
    - assertNotVisible: "Loading"
    - waitFor: "Feed"

Tool surface (32 MCP tools)

Group Tools
Lifecycle (3) session_start, session_end, session_status
Observe (1) observe
Act (5) tap, swipe, type_text, press_key, clear_field
Record/Replay (5) record_start, record_stop, replay, list_replays, validate_replay
Logs (1) logs
Performance (4) perf, perf_baseline, perf_compare, memory
Diagnostics (5) doctor, app_state, apps, crashes, list_devices
Robustness (4) dismiss_first_launch_alerts, pre_grant_permissions, set_appearance, dismiss_sheet
Recordings (2) lint_recordings, migrate_recording
Journeys (1) load_journey
Version (1) version

Canonical machine-readable list: simdrive/src/simdrive/server.py::_TOOLS.

Real-device support

Drive a paired iPhone or iPad in addition to the simulator:

export SIMDRIVE_ALLOW_PHYSICAL_DEVICE=1
simdrive bootstrap-device <device-udid>
session_start(bundle_id="com.example.app", udid="<device-udid>", target="device")

WDA bootstrap on iOS 26.x has some rough edges; the simulator (target="simulator", default) is the fully supported path.

Known limitations

See docs/LIMITATIONS.md for: type_text first-character drop workaround, SSIM-vs-structural-check semantics, SwiftUI half-sheet dismissal, appearance-respring caveats, real-device input scope.

Support

License

Elastic License 2.0 — see LICENSE. Free for internal use; prohibits offering SimDrive as a competing managed service.

Built by SyncTek.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simdrive-1.0.0b8.tar.gz (528.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simdrive-1.0.0b8-py3-none-any.whl (265.7 kB view details)

Uploaded Python 3

File details

Details for the file simdrive-1.0.0b8.tar.gz.

File metadata

  • Download URL: simdrive-1.0.0b8.tar.gz
  • Upload date:
  • Size: 528.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simdrive-1.0.0b8.tar.gz
Algorithm Hash digest
SHA256 9ee85bd9d692b8bdc1b0efb037d0a0cf07844495ba1d017ca9c327f5edd4d866
MD5 5c448d1bf4bbbdd5698b220e5375ff28
BLAKE2b-256 4919d80afd020037964f88e569d3506852ddbf9a7f43bcb25ce8057af52c63f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for simdrive-1.0.0b8.tar.gz:

Publisher: specterqa-ios-publish.yml on SyncTek-LLC/simdrive

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simdrive-1.0.0b8-py3-none-any.whl.

File metadata

  • Download URL: simdrive-1.0.0b8-py3-none-any.whl
  • Upload date:
  • Size: 265.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simdrive-1.0.0b8-py3-none-any.whl
Algorithm Hash digest
SHA256 f6901a437c2dd637caabeffd76e06f6ebfa5e0565dfea2bf7d8296649fa2ab73
MD5 f58e090128e0f4f7c7f9c409c8656c93
BLAKE2b-256 4979a4369e1ae871d935ececb58adaef95cfedca24d44355f710daef09f7eb54

See more details on using hashes here.

Provenance

The following attestation bundles were made for simdrive-1.0.0b8-py3-none-any.whl:

Publisher: specterqa-ios-publish.yml on SyncTek-LLC/simdrive

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page