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 Perform iCloud activation/deactivation or query the current state
afc Browse, push, and pull files via the AFC service (/var/mobile/Media).
amfi Enable developer-mode or query its state
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. Use '-' to stream to stdout.
bonjour Browse devices over bonjour
companion List paired "companion" devices
crash Manage crash reports
cryptex Manage cryptexes via cryptexd (iOS 17+, requires an RSD tunnel).
developer Developer tooling for iOS devices (requires Developer Mode + mounted DeveloperDiskImage).
diagnostics Reboot/Shutdown device or access other diagnostics services
lockdown Pair/Unpair device or access other lockdown services
mounter Mount/Umount DeveloperDiskImage or query related info
notification Post or observe Darwin notifications via notification_proxy.
pcap Sniff device traffic.
power-assertion Create a power assertion
processes View process list using diagnosticsd API
profile Manage installed profiles or install SSL certificates
provision Manage installed provision profiles
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 Watch syslog messages
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 Access IDAM (Inter-Device Audio and MIDI) configuration
version Query 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. 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. Use when you cannot run a privileged tunnel. [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.