ios-core
High-level Rust API for discovering, pairing, connecting to, and controlling iOS devices over usbmuxd, lockdown, CoreDevice/RemoteXPC, and the common Apple device services.
This is the library crate at the center of the
rust-ios-device
workspace. The ios CLI, the PyO3 Python bindings, and the C FFI all build on
top of it.
Highlights
- Device discovery and event watching across usbmuxd and Bonjour/mDNS.
- Lockdown client, TLS sessions, pair records, SRP pairing, and supervised pairing helpers.
- iOS 17+ CoreDevice support: CDTunnel (userspace and kernel TUN modes), Remote Service Discovery (RSD), HTTP/2 RemoteXPC transport, appservice, fileservice, diagnosticsservice, deviceinfo, Instruments, and TestManager.
- 30+ feature-gated service modules covering AFC, syslog, screenshots, configuration/provisioning profiles, crash reports, Instruments, debugserver, WebInspector, ImageMounter, pcap, and more.
- High-level connection API used by the CLI, Python, and FFI consumers.
Install
[]
= "0.1.5"
The crate ships no default service features. Pick the services you need, or use a grouped flag:
= { = "0.1.5", = ["afc", "syslog"] }
| Group | Includes |
|---|---|
classic |
afc, apps, crashreport, diagnostics, file_relay, heartbeat, house_arrest, installation, mcinstall, mobileactivation, notificationproxy, profiles, screenshot, springboard, syslog |
developer |
accessibility_audit, amfi, debugserver, dproxy, dtx, fetchsymbols, imagemounter, instruments, pcap, testmanager, webinspector |
management |
arbitration, companion, idam, misagent, power_assertion, preboard, prepare, restore |
ios17 |
apps, deviceinfo, diagnosticsservice, dproxy, fileservice, instruments, testmanager, mdns, tunnel-userspace |
full |
classic + developer + ios17 + management + ostrace + supervised-pair + tunnel-kernel |
CoreDevice service availability is service-surface dependent: a device can
expose USB, lockdown, tunnel, and RSD while still omitting a specific
CoreDevice feature service. Inspect the RSD service list at runtime instead
of relying on ProductVersion alone.
Example
use ;
# async
For lower-level access, use the modules re-exported at the crate root:
ios_core::mux, ios_core::lockdown, ios_core::xpc, plus the gated service
modules (ios_core::afc, ios_core::apps, ios_core::syslog, etc.) that
become available with the matching feature.
Requirements
- Rust 1.80+.
- usbmux on the host (usbmuxd on Linux, Apple Mobile Device Support on Windows, Apple device support on macOS).
- A trusted iOS device for most real-device operations.
- iOS 17+ device with the CoreDevice tunnel surface for RSD/RemoteXPC features.
Documentation
- Repository: https://github.com/oslo254804746/rust-ios-device
- API docs: https://docs.rs/ios-core
- Feature flags: https://github.com/oslo254804746/rust-ios-device/blob/master/docs/features.md
- Architecture: https://github.com/oslo254804746/rust-ios-device/blob/master/docs/architecture.md
- CoreDevice tunnel: https://github.com/oslo254804746/rust-ios-device/blob/master/docs/tunnel.md
License
Licensed under either of Apache-2.0 or MIT at your option.