Skip to content

CLI Reference

Complete reference for every pymobiledevice3 command, generated from the CLI itself at build time. For task-oriented examples see the CLI recipes.

Command groups

Group Description
activation Activate or deactivate the device with Apple's servers, or query its activation state.
afc Browse, push, and pull files via the AFC service (/var/mobile/Media).
amfi Manage Developer Mode and trust of developer app signers (AMFI).
apps List, query, install, uninstall, and inspect apps on the device.
backup2 Create, inspect, and restore MobileBackup2 backups.
btlogger Capture Bluetooth HCI traffic to a file or stdout until Ctrl+C.
bonjour Discover devices on the local network over bonjour (mDNS).
companion List paired "companion" devices (e.g. an Apple Watch).
crash List, pull, parse, watch and delete crash reports (and sysdiagnose archives).
cryptex Manage cryptexes via cryptexd (iOS 17+; the RSD tunnel is set up automatically).
developer Developer tooling for iOS devices (needs Developer Mode, and usually the DDI mounted).
diagnostics Restart, shut down or sleep the device, and query diagnostics (IORegistry, MobileGestalt, battery).
doctor Report which transports this host can use, and what to fix when it cannot.
lockdown Pair/unpair, read and change device values, and talk to raw lockdown services.
mobilesync Read and change contacts, calendars, Safari bookmarks and mail accounts (com.apple.mobilesync).
mounter Mount, unmount and inspect the DeveloperDiskImage (DDI) needed by developer commands.
notification Post or observe Darwin notifications via notification_proxy.
pcap Capture the device's network traffic, print it, and optionally save it to a pcapng file.
power-assertion Hold a power assertion on the device for TIMEOUT seconds (Ctrl+C to stop early).
processes List the processes running on the device.
profile Install and remove configuration profiles, supervise the device, and other MDM-style management.
provision Install, list, export and remove provisioning profiles (.mobileprovision).
remote Create and browse RemoteXPC tunnels (RSD/tunneld) for developer services.
restore Restore/erase IPSWs, fetch blobs, and manage devices in Recovery/DFU.
springboard Interact with SpringBoard UI (icons, wallpapers, orientation, shell).
syslog Stream the device's live system log, or collect it into a .logarchive.
usbmux Inspect usbmuxd-connected devices and forward TCP ports to them.
webinspector Control Safari/WebViews (tabs, automation, JS shells, CDP). Requires Web Inspector and Remote Automation enabled on the device.
idam Query or toggle IDAM (Inter-Device Audio and MIDI) on the device.
version Print the installed pymobiledevice3 version.

Connection options

Device-facing commands accept a shared set of options selecting the target device and transport. Each command's page lists which of them it accepts.

Option Description
--rsd HOST PORT Hostname and port of a RemoteServiceDiscovery (from any of the start-tunnel subcommands). Mutually exclusive with --tunnel.
--tunnel <str> Use a device discovered via tunneld. Provide a UDID (optionally with :PORT) or leave empty to pick interactively. UDID@HOST[:PORT] reaches a remote tunneld, bridging device connections through its WS /connect endpoint (use it whenever the tunnel interface is unreachable from this process, e.g. tunneld in docker, on another host, or behind an SSH port-forward). Mutually exclusive with --rsd. [env var: PYMOBILEDEVICE3_TUNNEL]
--userspace Establish the iOS 17+ tunnel in-process with a pure-Python userspace network stack, so NO root/admin is required. Downloads (device->host, e.g. fetch-symbols) run at roughly the kernel tunnel's throughput; host->device transfers (DDI mounts, file pushes) are slower, as their send segments are kept small for reliable delivery through the pure-Python path. This is already the default transport; pass it to force it over an environment override. [env var: PYMOBILEDEVICE3_USERSPACE]
--mobdev2 / --no-mobdev2 Discover devices over bonjour/mobdev2 instead of usbmux. [default: no-mobdev2]
--usbmux <str> Address of the usbmuxd daemon (unix socket path or HOST:PORT). Defaults to the platform usbmuxd if omitted. [env var: PYMOBILEDEVICE3_USBMUX, USBMUXD_SOCKET_ADDRESS]
--udid <str> Target device UDID (defaults to the first USB device). [env var: PYMOBILEDEVICE3_UDID]

See iOS 17+ tunnels for when a tunnel (--rsd/--tunnel/ --userspace) is required and how the no-root userspace default works.