iDescriptor: a Rust and Qt iDevice manager that keeps the data local
privacy-first, open-source and free idevice management tool written in Rust and Qt
At a glance
- What is it?
- iDescriptor is an AGPL-3.0 desktop tool for iPhone, iPad and iPod management, built in Rust with a Qt/QML front end. It covers USB and wireless connections, AirPlay casting, App Store installs, battery data and virtual location, and it ships for Windows, macOS, Linux, Arch AUR, Flathub and NixOS.
- Who is it for?
- Adopt iDescriptor if you want a Qt desktop tool that manages iPhones, iPads and iPods over USB or wirelessly and you are comfortable installing from Flathub, the AUR, NixOS, an AppImage, an MSI or a DMG. Skip it if you need a headless CLI for CI or scripting: the project is a GUI application, and the README documents no command line interface for device operations.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly QML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What iDescriptor replaces, and for whom
The README describes iDescriptor as a "Privacy-first, open-source and free iDevice management tool written in Rust and Qt". That framing sets the audience: people who own an iPhone, iPad or iPod and want to inspect or change something on it from a desktop, without handing the device session to a closed service. The feature table lists USB connection, wireless connection from v0.4.0, AirPlay screen casting, App Store download and install, battery information and virtual location. Those are the tasks that otherwise push a user toward a vendor application or a paid utility.
The privacy claim is structural rather than a marketing line. The application is a local Qt desktop program; the repository contains PRIVACY.md and the code lives in the open under AGPL-3.0-or-later per Cargo.toml. Nothing in the README describes a hosted account, a login or a remote dashboard. For an engineer or a power user who wants to read battery data or install an app without opening a browser session tied to an Apple ID in a web page, that matters.
It is not aimed at fleet administrators. There is no MDM vocabulary in the README, no device enrollment, no policy deployment. It is a single-machine tool for one person with one or a few devices.
Rust core, QML shell, and the lib/idevice-rs dependency
The architecture is visible in the repository layout. Cargo.toml declares a Rust package named idescriptor at version 0.6.2, edition 2024, with qmetaobject and qttypes as dependencies, which is how Rust code binds to Qt objects. The primary language listed for the repository is QML, so the interface is Qt Quick rather than widgets.
The device protocol work is not reimplemented from scratch. Cargo.toml points the idevice crate at a vendored path, lib/idevice-rs/idevice, with features full and openssl. That is the same family of protocols the libimobiledevice stack implements, and it is why a related search for iDescriptor sits next to searches for libimobiledevice. The build also pulls irecovery for recovery mode work, ipatool for App Store downloads, axum for an HTTP surface, rusqlite for a local database, and ssh2, which suggests a file or shell channel to the device.
The data flow is therefore: a Qt/QML view calls into Rust through qmetaobject, the Rust layer talks to the device over USB or the wireless path introduced in v0.4.0, and results come back as properties the QML layer renders. The presence of DeveloperDiskImages.json at the top level and the install-apple-drivers.ps1 and install-bonjour.ps1 scripts on Windows shows that some capabilities depend on host-side drivers and a developer disk image being present before the device will cooperate.
That dependency chain is the honest cost of the design. A pure Rust rewrite of the device stack would remove the vendored library, but the maintainers chose to build on it, and the build scripts acknowledge that Windows users may need Apple drivers and Bonjour installed first.
Installing iDescriptor on Windows, macOS, Linux and the AUR
The README is explicit that the only official distribution points are https://idescriptor.github.io and the GitHub releases, and it warns against sites claiming to be the project. Start there, or use a package manager.
On Windows the recommended path is the .msi installer; a portable .zip is also offered, and the README gives a Chocolatey command. Note the version pinned in that example, which is not the current release:
choco install idescriptor --version=0.1.0On macOS you download a .dmg, choosing the Apple Silicon or Intel build, drag the app to Applications, and then clear the quarantine attribute. The README explains that this is needed because of a "damaged" error:
xattr -c ~/Applications/iDescriptor.appOn Linux the AppImage needs the executable bit before it will run:
chmod +x iDescriptor*.AppImageArch users have two AUR options, with the stable one recommended and the git one flagged as possibly failing to build:
yay -S idescriptorThe README also links Flathub, NixOS and pi-apps as installation channels. For a first real use, connect a device over USB and open the battery information tool: it is the lowest-risk action in the feature table, it needs no Apple ID, and a successful reading confirms that the host drivers, the cable and the device pairing all work before you try an app install or AirPlay.
Where iDescriptor is the wrong tool
The README documents a GUI application for Windows, macOS and Linux. It does not document a headless mode, a scripting interface or a stable command line for device operations. If your goal is to run device queries in a CI job, batch-process a rack of iPads, or automate an app deployment from a shell script, this project does not offer that surface, and you should look at the libimobiledevice command line tools instead, which exist precisely for that.
The second limitation is host dependency. The repository ships install-apple-drivers.ps1, install-bonjour.ps1 and install-win-fsp.silent.bat, which tells you that on Windows the application expects Apple drivers and Bonjour to be present. That is a real installation step, not a formality, and it is the kind of thing that turns a five-minute setup into an afternoon on a locked-down corporate machine.
The third is platform friction on macOS. The xattr -c step exists because Gatekeeper flags the app; the README links to its own explanation of the "damaged" error. Users who cannot or will not run that command are stuck at the first launch.
Finally, the README does not document rollback. If a virtual location change or an app install goes wrong, there is no described undo path, so treat those tools as actions to try on a device you can restore.
iDescriptor compared with libimobiledevice
libimobiledevice is the obvious alternative, and the comparison is not about feature parity. It is about shape. libimobiledevice is a library and a set of command line utilities for talking to iOS devices; it is the kind of thing you call from a script, a build step or another program. iDescriptor is a desktop application with a QML interface, and its own device layer is a vendored Rust crate in lib/idevice-rs/idevice, so the two projects are related at the protocol level but serve different users.
If you want to run `ideviceinfo` against a connected phone from a shell, or wire device detection into an automated pipeline, libimobiledevice is the right layer and iDescriptor is not, because the README presents no equivalent CLI. If you want a window where you can see battery data, cast the screen over AirPlay, or install an app from the App Store without composing a command, iDescriptor is the one that ships that interface.
The trade-off is control against convenience. A CLI gives you composability and reproducibility; a Qt app gives you a visual state you can inspect. iDescriptor also carries the AGPL-3.0-or-later licence, which is a stronger copyleft than the LGPL that libimobiledevice uses, and that difference matters if you intend to link the code into a product.
Maintenance, releases and the AGPL-3.0-or-later licence
The repository is not archived, and the last push was on 2026-09-09. The most recent release listed is v0.6.2 from 2026-08-21, following v0.6.1 on 2026-08-10 and v0.6.0 on 2026-08-07. Three releases inside a month suggests active work on the 0.6 line, and the Cargo.toml version matches the latest tag at 0.6.2.
Upgrade cost depends on how you installed it. Flathub, the AUR, NixOS and pi-apps users get updates through their package manager, which is the cheapest path. AppImage, .msi and .dmg users replace the artifact by hand, and the macOS build requires the xattr -c step again after each replacement. The AUR git package is explicitly described as able to fail to build, so pinning to the stable AUR package is the lower-variance choice.
The licence is AGPL-3.0-or-later, declared in Cargo.toml and referenced from the LICENSE file. That is a network copyleft licence: if you modify the program and let users interact with it over a network, the source obligations extend to that deployment. For an individual running the desktop app this is a non-issue. For a company that wants to embed iDescriptor in an internal service, it is the first thing to review with counsel. This article is not legal advice, and the licence text is the authority.
Editorial conclusion
Adopt iDescriptor if you want a Qt desktop tool that manages iPhones, iPads and iPods over USB or wirelessly and you are comfortable installing from Flathub, the AUR, NixOS, an AppImage, an MSI or a DMG. Skip it if you need a headless CLI for CI or scripting: the project is a GUI application, and the README documents no command line interface for device operations. Before relying on it, verify on your own machine that your device is detected, that the AirPlay and virtual location tools work with your iOS version, and that you accept the AGPL-3.0-or-later obligations that come with the code.
Frequently asked questions
What is iDescriptor?
It is a free, open-source iDevice management tool written in Rust and Qt, described in its README as privacy-first. It supports USB and wireless connections and bundles tools such as AirPlay casting, App Store app installs, battery information and virtual location.
How do I install iDescriptor on Windows?
The README recommends the .msi installer for most users, with a portable .zip as an alternative that needs no installation. It also lists a Chocolatey command, though the example pins version 0.1.0 rather than the current release.
Does iDescriptor run on Linux?
Yes. The README offers an AppImage that needs chmod +x before running, an Arch AUR package under the name idescriptor, and links to Flathub, NixOS and pi-apps as further installation channels.
Why does macOS report iDescriptor as damaged?
The README documents this as a Gatekeeper issue and gives a fix: after dragging the app to Applications, run xattr -c ~/Applications/iDescriptor.app. It links to its own explanation of the error for more detail.
What licence does iDescriptor use?
AGPL-3.0-or-later, declared in Cargo.toml and referenced from the LICENSE file. That is a network copyleft licence, so the source obligations can extend to modified versions offered to users over a network.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/idescriptor-idescriptor)