Skip to content

pymobiledevice3 apps

List, query, install, uninstall, and inspect apps on the device.

list

List installed apps.

pymobiledevice3 apps list [OPTIONS]

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.

pymobiledevice3 apps query [OPTIONS] {bundle_identifiers}...

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.

pymobiledevice3 apps uninstall [OPTIONS] {bundle_id}

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.

pymobiledevice3 apps install [OPTIONS] {package}

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.

pymobiledevice3 apps afc [OPTIONS] {bundle_id}

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.

pymobiledevice3 apps webdav [OPTIONS] {bundle_id} [path]

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.

pymobiledevice3 apps pull [OPTIONS] {bundle_id} {remote_file} {local_file}

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.

pymobiledevice3 apps push [OPTIONS] {bundle_id} {local_file} {remote_file}

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).

pymobiledevice3 apps rm [OPTIONS] {bundle_id} {remote_file}

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).

pymobiledevice3 apps install-record [OPTIONS] {bundle_id}

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.