lycorp-jp / sim-use
git clone https://github.com/lycorp-jp/sim-use.git
v0.15.0 Β· 8d ago
π₯ on GitHub Trending today
Give your AI agent eyes and hands on iOS Simulator and Android emulator/devices.
+5
stars, 24h Β· #2,520
+~35
stars, 7 days Β· #3,173
+~150
stars, 30 days Β· #3,246
1.5k
β
total Β· +2% this week
103
forks Β· 26 open issues
Star history (as recorded here)
LanguageSwift
LicenseApache-2.0
Created2026-06-26 (3mo ago)
Last push1d ago
Watchers2
OwnerOrganization
Seen on GitHub Trending
- 2026-10-22 β #12 daily in swift Β· +21 β
- 2026-10-21 β #15 daily in swift Β· +11 β
- 2026-10-20 β #15 daily in swift Β· +13 β
GitHub topics
Links
- GitHub: github.com/lycorp-jp/sim-use
- Releases Β· Issues Β· Hacker News mentions
README excerpt
# sim-use Give AI agents the ability to observe and act on iOS Simulator and Android emulator / device screens. **Observe** β turn any screen into a token-efficient outline an LLM can reason about: [code] **Act** β tap any element by its alias, no coordinates needed: [code] Plan, code, **verify**, ship β teach this CLI to your agent and close the last gap in the agentic mobile development loop. Let agents verify what they built so you can focus on what matters. `sim-use` is a cross-platform CLI that drives Apple's Accessibility APIs, the iOS Simulator HID pipeline, and Android's AccessibilityService through a single command surface. It emits a compact, agent-friendly screen description (`ui`) and an alias-cached tap shortcut (`tap @N`) so an LLM loop can observe β act in a few hundred milliseconds per round trip. - The observe β act loop - Why sim-use - Install - Platforms - Commands - Physical iOS devices - Architecture - Viewer - Contributing - Licence ## The observe β act loop Every interaction follows the same cycle β observe, act, verify: [code] Multiple selector styles for different needs: | Selector | Example | Best for | |---|---|---| | `@N` alias | `tap @9` | Speed β cached from last `ui` | | `# ` | `tap #settingsButton` | Stability β survives layout changes | | `--label` | `tap --label "General"` | Scripted flows with `--wait-timeout` | | `-x -y` / `--point` | `tap --point 100,200` | Last resort β no AX data | Selectors and explicit coordinates work in any orientation β on iOS, sim-use self-calibrates the current rotation on each command, so `-x/-y` / `--point` take the numbers `ui` prints. `--coordinate-space native` gives them in the device's native portrait points instead. ## Why sim-use - **Token-efficient.** The outline representation is ~16x more compact than a raw JSON accessibility tree. An LLM can read and reason about an entire screen in a few hundred tokens. - **Nothing hidden.** sim-use walks the full accessibility tree including WebViews, system overlays, and embedded content β no elements are silently skipped. When the frontmost app exposes an empty tree because a remote process owns the visible UI (a system document picker, for example), `ui` automatically retries with cross-process discovery and flags the recovered, flat hierarchy via the `advisory` envelope key. - **AI-native.** Designed from day one for agent loops, not human testers. Alias-cached taps (`@N`), structured `--json` envelopes with actionable `hint` fields on errors, and a bundled agent skill (`sim-use init --client claude`) that teaches your AI client the full command surface. - **Fast.** A per-device background daemon amortises init cost across calls. After the first command, each observe-act round trip completes in ~300 ms. - **Cross-platform.** One command surface drives both iOS Simulator and Android emulator/device. Same verbs, same flags, same `--json` shape β write one agent loop that works on both. ## Install ### Homebrew (recommended) [cod