- The install state on each device the app targets
- The version installed on the device versus the version your package offers
- Per-app counters across the fleet: how many devices have it, how many are still working on it, how many failed
- Install, reinstall, update, and uninstall actions on a single device
What the list covers
The scope is deliberately narrow — two rules decide whether a device and an app appear together:- Primo-managed software only. Only apps you added to MDM > Software are tracked. Apps an employee installed themselves are never listed, even though the agent can see them on the device.
- Targeted devices only. A device appears for an app only if the app’s targeting resolves to it — either the app targets all devices on its platform, or the device belongs to one of the app’s targeted device groups.
This is not a full software inventory of the device. If you need the complete list of every title detected on a device, open the device in Fleet.
Where to find it
Open the device drawer from any device list, then select the Software tab. On a software page, the Devices tab sits next to Setup.
The three count columns are part of the default All view of the software table. If you use custom views, add them from the column picker.
Install statuses
Primo reports four statuses. They are computed on the server from what Fleet knows about the device, so the dashboard, the counters, and the device list always agree.Presence outranks failure. An app that is still on the device reads Installed even if its last install or uninstall attempt failed. Failed always means the app is absent — which keeps the counters and the device list honest when you triage.
- If the device is online, the operation is running on it now.
- If the device is offline, the operation is queued and runs the next time the device comes online.
Versions
The device drawer shows two version columns:- Installed version — the version detected on the device
- Library version — the version your Primo package or App Store app offers
Install, update, and uninstall
Each row exposes up to two actions. Primo picks the primary action from the status and the versions:
Actions are requests, not instant results. Primo sends the command to the device and the row switches to In progress; the real status lands on the next sync.
Uninstall is not offered for:
- Apple App Store apps and
.ipaapps — the store manages removal - Apps Primo installs on every device it manages
- Software whose deployment is driven by an MDM control
Investigate a failure
On the Devices tab of a software page, a Failed row shows a See in Fleet link next to the status. Hover the link for the reason Fleet reported, and open it to read the full install output — the script result or the detection query that decided the app is missing. Failures usually come down to one of these:- The installer needs a flag or a pre-install step the package does not provide
- The detection query does not match how the app registers itself — see How to find the right program name
- The device did not meet a requirement of the installer, such as free disk space or a minimum OS version
How the status refreshes
1
On every device sync
Each time a device checks in, Primo recomputes the status of every app targeting it. No scan to launch.
2
When you change an app
Adding, editing, or deleting software re-syncs the devices it used to target and the devices it now targets, so rows appear and disappear with the targeting.
3
When you ask for it
Use Refresh in the device drawer to re-sync one device. On a software page, open the action menu and click Refresh device software to re-sync every device that app targets.
Refreshes fan out in the background, so counters and rows update a few seconds after the request. Right after you trigger an action or a refresh, the tables poll for a minute and update on their own. A newly added app reads zero on every counter until its first sync completes.