pymobiledevice3 apps¶
List, query, install, uninstall, and inspect apps on the device.
list¶
List installed apps.
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
-t, --type <System\|User\|Hidden\|Any> |
Filter by application type (System/User/Hidden/Any). [default: Any] |
--calculate-sizes / --no-calculate-sizes |
Include app size information (slower). [default: no-calculate-sizes] |
--show-placeholders / --no-show-placeholders |
Include placeholder apps in the results. [default: no-show-placeholders] |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
query¶
Print the installation metadata of the given apps.
Arguments:
| Argument | Description |
|---|---|
bundle_identifiers... |
One or more bundle identifiers. [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
--calculate-sizes / --no-calculate-sizes |
Include app size information (slower). [default: no-calculate-sizes] |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
uninstall¶
Uninstall an app and delete its data.
Arguments:
| Argument | Description |
|---|---|
bundle_id |
Bundle identifier of the app (e.g. com.apple.mobilesafari). [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
install¶
Install an app (.ipa/.app) or carrier bundle (.ipcc) from this computer.
Arguments:
| Argument | Description |
|---|---|
package |
App to install: an .ipa file, an .app directory, or an .ipcc carrier bundle. [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
--developer / --no-developer |
Install as a developer package (PackageType=Developer). [default: no-developer] |
--streaming / --no-streaming |
Stream the app through streaming_zip_conduit, as Xcode does: the device extracts it while it arrives instead of unpacking an uploaded .ipa. Not for .ipcc packages. [default: no-streaming] |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
afc¶
Open an interactive file shell inside an app's container.
Arguments:
| Argument | Description |
|---|---|
bundle_id |
Bundle identifier of the app (e.g. com.apple.mobilesafari). [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
--documents / --no-documents |
Expose only the app's Documents folder instead of its whole container. [default: no-documents] |
--tool <str> |
also offer this host tool as a command inside the shell, e.g. --tool jq (repeatable) |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
webdav¶
Serve an app's container over WebDAV for local mounting (e.g. in Finder); runs until Ctrl+C.
Arguments:
| Argument | Description |
|---|---|
bundle_id |
Bundle identifier of the app (e.g. com.apple.mobilesafari). [required] |
path |
AFC path to serve as the volume root (default: /) [default: /] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
--documents / --no-documents |
Expose only the app's Documents folder instead of its whole container. [default: no-documents] |
--mount |
mount the served path locally and reveal it in your file manager |
--host <str> |
local interface to bind [default: 127.0.0.1] |
--bind-port <int> |
local TCP port (0 picks a free port) [default: 0] |
--readonly |
expose the path read-only |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
pull¶
Download a file or directory (recursively) from an app's container.
Arguments:
| Argument | Description |
|---|---|
bundle_id |
Bundle identifier of the app (e.g. com.apple.mobilesafari). [required] |
remote_file |
File or directory inside the app container. [required] |
local_file |
Local destination path. [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
--documents / --no-documents |
Expose only the app's Documents folder instead of its whole container. [default: no-documents] |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
push¶
Upload a local file or directory (recursively) into an app's container, overwriting files.
Arguments:
| Argument | Description |
|---|---|
bundle_id |
Bundle identifier of the app (e.g. com.apple.mobilesafari). [required] |
local_file |
Local file or directory to upload. [required] |
remote_file |
Destination inside the app container (may be a directory). [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
--documents / --no-documents |
Expose only the app's Documents folder instead of its whole container. [default: no-documents] |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
rm¶
Delete a file or a whole directory tree from an app's container (no confirmation).
Arguments:
| Argument | Description |
|---|---|
bundle_id |
Bundle identifier of the app (e.g. com.apple.mobilesafari). [required] |
remote_file |
File or directory inside the app container. [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
--documents / --no-documents |
Expose only the app's Documents folder instead of its whole container. [default: no-documents] |
Accepts the connection options: --rsd, --tunnel, --userspace, --mobdev2, --usbmux, --udid.
install-record¶
Print an app's LaunchServices install record (iOS 17+, via installcoordination_proxy).
Arguments:
| Argument | Description |
|---|---|
bundle_id |
Bundle identifier of the app (e.g. com.apple.mobilesafari). [required] |
Options:
| Option | Description |
|---|---|
--native |
macOS only: reach the iOS 17+ tunnel by piggybacking Apple's own remoted tunnel via the remotepairingd service. NO root, no entitlement, no Xcode. Rides Apple's kernel-routable tunnel, so throughput matches the kernel tunnel, but the device keeps a single RSD connection on it: remoted and this process evict each other's, which can reset connections and leave Xcode/devicectl without the device until remoted reconnects. Mutually exclusive with --rsd/--tunnel/--userspace. [env var: PYMOBILEDEVICE3_NATIVE] |
Accepts the connection options: --rsd, --tunnel, --userspace.