idevice
Files & Apps

Installation Proxy

Query and manage installed applications.

InstallationProxyClient connects to com.apple.mobile.installation_proxy. It can look up installed apps, browse apps, install packages already staged in the AFC jail, upgrade packages, uninstall apps, and check capabilities.

Use It For

  • Listing installed applications.
  • Installing or upgrading an app package staged through AFC.
  • Uninstalling an app by bundle ID.
  • Checking installation capabilities.

Feature Flag

Cargo.toml
[dependencies]
idevice = { version = "0.1.64", features = ["usbmuxd", "installation_proxy"] }

Service Names

PathValue
Lockdown servicecom.apple.mobile.installation_proxy
RSD servicecom.apple.mobile.installation_proxy.shim.remote

Rust Example

src/main.rs
use idevice::{IdeviceService, installation_proxy::InstallationProxyClient};

let provider = first_provider().await?;
let mut instproxy = InstallationProxyClient::connect(&provider).await?;

let apps = instproxy.get_apps(Some("User"), None).await?;
for bundle_id in apps.keys() {
    println!("{bundle_id}");
}

Install a package already uploaded to the AFC jail:

src/main.rs
instproxy
    .install_with_callback(
        "PublicStaging/App.ipa",
        None,
        |(percentage, _)| async move {
            println!("Installing: {percentage}%");
        },
        (),
    )
    .await?;

For local .ipa files, use the high-level helper in idevice::utils::installation; it handles AFC staging and Installation Proxy.

CLI Equivalent

Terminal
idevice-tools instproxy lookup
idevice-tools instproxy browse
idevice-tools instproxy install PublicStaging/App.ipa

High-level local install:

Terminal
idevice-tools ideviceinstaller install ./App.ipa
idevice-tools ideviceinstaller upgrade ./App.ipa

Common Errors

ErrorWhat to check
Missing package pathinstall expects a path inside the AFC jail, not a host path.
Installation failedCheck the package signature, provisioning, and device trust state.
Missing LookupResultThe response did not match the expected Installation Proxy plist shape.

Source

On this page