ideviceinstaller
Install, uninstall, and manage iOS applications
SYNOPSIS
ideviceinstaller [-u UDID] [-l | -U | -i PATH | -u ID | -r ID | -g ID PATH] [-D] [-V] [-h]
PARAMETERS
-u, --udid UDID
Target specific device by its UDID
-l, --list
List all installed apps (system and user)
-U, --list-user
List only user-installed apps
-i, --install PATH
Install .ipa or .app bundle from path
-u, --uninstall ID
Uninstall app by bundle identifier
-r, --reinstall ID
Reinstall app by bundle identifier
-g, --download ID PATH
Download app to specified path by bundle ID
-D, --debug
Enable debug output
-v, --version
Print version and exit
-h, --help
Show help and exit
DESCRIPTION
ideviceinstaller is a command-line tool from the libimobiledevice suite, enabling users to manage applications on connected iOS devices (iPhone, iPad, iPod Touch) directly from Linux without iTunes or Xcode. It supports installing .ipa or .app bundles, uninstalling by bundle ID, listing installed apps, and downloading apps to the host.
It communicates over USB using the Apple Mobile Device Protocol via usbmuxd daemon. The device must be unlocked, trusted (pairing approved), and have USB debugging or developer mode enabled for sideloaded apps. Primarily for developers sideloading unsigned or enterprise-signed apps; App Store apps require jailbreak or special provisioning.
Key features include listing system/user apps separately, reinstalling apps, and bundle ID retrieval. It's cross-platform but shines on Linux for open-source iOS tooling. Requires libimobiledevice and libimobiledevice-glue libraries installed. Output is verbose by default, showing installation progress and errors like invalid signatures or insufficient space.
CAVEATS
Device must trust host; unsigned apps need developer mode or jailbreak. Fails on locked devices or invalid signatures. Limited to USB; no Wi-Fi support. iOS 10+ restricts sideloaded apps to 7 days without renewal.
DEPENDENCIES
Requires libimobiledevice, libplist, libzip, and running usbmuxd daemon.
USAGE EXAMPLE
ideviceinstaller -u
HISTORY
Developed as part of libimobiledevice project since 2007 by Nikias Bassen. Initial release supported basic AFC access; app management added in 2010 with AFC2 protocol. Actively maintained, latest versions (1.3+) support iOS 17+.
SEE ALSO
ideviceinfo(1), idevicesyslog(1), idevicebackup(1), usbmuxd(8)


