Repository navigation
An AI-friendly iOS/iPadOS automation service. Tell your agent "My iPhone is running iCTRL at :8200 — figure out how to drive it." and it reads the on-device manual and takes it from there. Works with any agent that can make HTTP requests: OpenClaw, Hermes, Minis, Claude Code, Codex and others.
Downloads
Which IPA do I need?
| File | Needed? | What it is |
|---|---|---|
iCTRLUITests-Runner.ipa |
Required | The automation engine. It serves the JSON-RPC API that agents and clients call, and must be running. |
iCTRL.ipa |
Optional | A companion app for tasks on the phone itself: • mount the Developer Disk Image without a Mac, and remount it after a reboot • start and stop the runner • choose who can reach the runner (this device only / LAN / LAN + nearby) • see and revoke authorized clients • read the runner's log live |
Skip iCTRL.ipa if you mount the Developer Disk Image with Xcode or StikDebug, and manage the runner from its notification or a computer. With a free Apple ID you get three sideloaded apps, and SideStore uses one of them. Install StikDebug or the iCTRL app alongside the runner, not both.
Both IPAs are unsigned for distribution (ad-hoc, no provisioning profile). Sign them when you install:
- Free Apple ID: the latest SideStore signs and installs them. Older SideStore releases skip the nested
.xctest, and the runner then crashes on launch. - Paid account:
Scripts/sign-ipa.sh -i iCTRLUITests-Runner.ipa
The runner also needs the Developer Disk Image mounted (Xcode, StikDebug or the iCTRL app). The README covers the whole setup.
What's new since 1.98.15
Input
- Continuous single-finger drag paths.
dragaccepts apointsarray (2-64 waypoints, 0.1-10 s) and follows it with one finger, pressing once and lifting once. Draw corners, unlock patterns, drag-to-reorder. Corners can be rounded by 1-2 pt, so keep each segment at least one frame long. Advertised as thedrag_pathcapability. Existing endpoint/ref drags are unchanged. Thanks to @YanYunNN.
Build
make ipa UNSIGNED=1builds release IPAs without a signing identity.
Earlier in 1.98.13 - 1.98.15
- The video stream skips identical frames while the screen is still, and no longer goes black after the runner was in the background.
- The remote page keeps FPS, quality and verbose across reloads.
typefalls back to on-screen key taps when a field drops focus and reports failures.keyboard.visibledetects third-party keyboards.- More methods require authorization. The iCTRL app imports RemotePairing files such as StikDebug's pairingFile.plist.