iOS Support
Ghost in the Droid drives real iPhones and iOS simulators as first-class devices, not a compatibility shim. Same tap, swipe, type_text, launch_app, screenshot, open_camera, open_url, extract_articles β you just pass an ios:<udid> device ref instead of an Android serial, and the exact same MCP client, LangChain agent, or run_flow script keeps working.
What Ghost gives you on iOS
Section titled βWhat Ghost gives you on iOSβ- Real iPhones + iOS simulators β physical devices addressed by UDID, simulators via
xcrun simctlUDID. Ghost also auto-discovers connected iPhones and booted simulators fromxcrun xctrace list deviceswhen Xcode command-line tools are installed. - Same 62 MCP tools as Android β an MCP client (Claude Code, Codex, Antigravity, Cursor, LangChain, LlamaIndex, custom) that already drives Android drives iOS by swapping the device ref. Zero client changes.
- Same skills, same execution engine β the Skill System supports
platforms: ["ios"]skills withios_bundle_idandelements_ios.yaml. The Skill Creator can targetios:<udid>devices and use iOS/Appium prompt guidance. - On-device iOS LLM β MLX on Apple Silicon or
llama.cppon Metal. The model AND the agent loop can both run on the phone in airplane mode. - Live streaming + screen recording β WDA MJPEG for real-time streaming,
ffmpegfor the same test-runner recording path Android uses. - Dashboard parity β the Phone Admin dashboard shows Appium/WDA health dots, recovery steps, and one-click fix buttons for auto-fixable issues (
reset_session,start_appium,restart_remote_xpc_tunnel, and more).
How the pipes work
Section titled βHow the pipes workβUnder the hood: Appium XCUITest + WebDriverAgent. Ghost speaks to Appium over the standard 4723 base URL; Appium manages the WDA session on your phone or simulator. iOS devices are referenced as ios:<udid> everywhere in the tool surface.
Your MCP client / agent β βΌGhost (MCP server, FastAPI) β βΌ ios:<udid>Appium XCUITest (localhost:4723) β βΌWebDriverAgent β Real iPhone / SimulatorThe open_camera tool, type_text, tap, swipe, press_key, everything else β same signatures, same semantics. Ghost handles the WDA-points-to-screenshot-pixels coordinate translation so gestures land where you saw them.
Supported tools on iOS
Section titled βSupported tools on iOSβFull parity with Android for:
- Device interaction:
tap,tap_element,swipe,type_text,long_press,press_key(HOME, ENTER, best-effort BACK) - App control:
launch_app,search_apps,list_apps,list_packages(configured/common bundle IDs verified through Appium) - Screen understanding:
screenshot,screenshot_annotated,screenshot_cropped,get_screen_tree,get_screen_xml,get_elements,find_on_screen,classify_screen, OCR (RapidOCR) - Camera:
open_camerawith Photo/Video/Selfie modes and timer control - Clipboard:
clipboard_get,clipboard_set,paste_text - Notifications:
open_notifications,get_notifications, best-effortclear_notifications - Browser primitives:
open_url,web_search,browser_back,get_current_url,wait_for_text,extract_visible_text,extract_articles - Streaming:
/api/phone/stream?device=ios:<udid>with WDA MJPEG mode + screenshot polling fallback - Recording:
start_screen_recording,stop_screen_recording(WDA MJPEG +ffmpeg) - Health:
device_health,fix_device_healthwith auto-fix forreset_session,start_appium,restart_remote_xpc_tunnel
Whatβs Android-only for now
Section titled βWhatβs Android-only for nowβ- ADB shell commands and Android intents (no iOS equivalent)
- Portal overlay and Portal TTS
- Play Store helpers and full-device package enumeration (iOS doesnβt expose it the same way)
- TikTok Android flows β upload, draft creation, and draft publishing. The iOS TikTok skill is smoke-level (launch + search + Profile navigation).
Multi-iPhone setups
Section titled βMulti-iPhone setupsβGhost supports multiple concurrent iPhones with independent Appium URLs, bundle defaults, and MJPEG settings. Configure via IOS_DEVICE_UDIDS + IOS_DEVICES_JSON (or a JSON config file at IOS_CONFIG_FILE). See iOS Setup β Multiple iPhones for the exact env shape.
- iPhone Hello World β Claude drives your iPhone via Ghost:
/getting-started/hello-world/iphone-app/ - On-Device iPhone Hello World β MLX running locally, airplane-mode-friendly:
/getting-started/hello-world/on-device-ios/ - Watch a real iPhone drive Duolingo in 30s:
ghostinthedroid.com/#demo=iphone-duolingo
Concrete setup
Section titled βConcrete setupβFull setup instructions β Appium XCUITest install, WebDriverAgent signing for real iPhones, all the env vars, single + multi-device config, smoke tests, and troubleshooting:
β iOS Setup guide
Related
Section titled βRelatedβ- On-Device LLM β MLX + llama.cpp for on-phone inference across Android + iOS
- MCP Server β the 62-tool surface both Android and iOS clients use
- Skill System β how
platforms: ["ios"]skills work - Dashboard β Phone Admin for iOS Appium/WDA health