Installed Software Inventory
For every managed machine, Athena inventories the software installed on it — the applications and packages present on the system. On Windows this is the list of installed programs; on Linux it is the set of installed packages. For each application Athena records its name, version, publisher, install date, install location, and size, so you can answer questions like “which machines still run an old version of that app?” or “where is this unwanted program installed?” from one console instead of logging on to each box.
Inventory vs. deployment. This page is about the inventory — the collected, searchable, and reportable list of what is already installed on each machine. To install, update, or remove software on your machines, see Software Deployment and the Package Library.
What's collected#
For each installed application on a machine, Athena records:
| Field | Meaning |
|---|---|
| Name | The application's display name — for example “Google Chrome” or “7-Zip” on Windows, or a package name such as openssh-server on Linux. |
| Version | The installed version string, as reported by the application or package. |
| Publisher | The vendor or publisher of the application. On Linux this reflects the packaging source (see Platform coverage). |
| Install date | When the application was installed, when that information is available. May be blank for entries that do not record it. |
| Install location | The folder the application reports as its install path, when available. |
| Size | The estimated on-disk size the application reports (for example 512 MB), when available. |
Not every application populates every field — install date, install location, and size in particular are only as complete as the underlying application or package makes them, so some rows leave those cells blank. Name and version are the fields you can rely on across the fleet.
Platform coverage#
Software is inventoried on both Windows and Linux endpoints, using each operating system's native package information. The fields above are the same on both platforms, but where the list comes from differs:
| Windows | Linux | |
|---|---|---|
| Source | The system's list of installed programs (the same programs you would see under “Add or remove programs”), covering both 64-bit and 32-bit applications. | The system package manager — dpkg on Debian/Ubuntu, rpm on RHEL/CentOS/Fedora, or pacman on Arch — listing installed packages. |
| Publisher | The publisher recorded for the program. | For rpm, the package vendor; for dpkg, the packaging source is shown in place of a vendor. |
| What's excluded | Entries flagged as system components, and entries with no display name, are left out so the list reflects real applications rather than background plumbing. | Only packages the manager reports as installed are listed. |
On Windows the list is de-duplicated by name and sorted alphabetically, so an application registered in more than one place appears once.
Windows updates are separate. Installed operating-system patches (KB updates) are not part of this software list — they have their own category. See Windows Update Management for installed and missing updates.
Where to see it#
Open a machine from the Agents list, then in the
agent detail view's left-hand navigation choose the
Software group and its Installed Software section. The section lists
applications in a table with columns for Name, Version,
Publisher, and the install details, and a search box above the table
filters the list as you type — so you can type chrome to jump straight to a browser or a
vendor name to see everything from one publisher on that machine.
From a reported snapshot. The installed-software list reflects the last inventory the machine reported, so a machine that has never checked in shows an empty list until its first report. The fleet-wide filters, collections, and reports below are built on this reported snapshot.
Targeting and reporting across the fleet#
Installed software is a filterable field, so — much like a tool such as PDQ — you can build fleet-wide rules and reports on it without writing a custom scan. Three software fields are available to dynamic collections, automatic tagging rules, and the report builder:
| Field | Type | Example values |
|---|---|---|
InstalledSoftware.Name | String | Google Chrome, 7-Zip, Microsoft Office |
InstalledSoftware.Version | String | 120.0.6099.130, 22.01 |
InstalledSoftware.Publisher | String | Google LLC, Microsoft Corporation |
Because a machine has many applications, these fields match with “any installed
application” semantics: a machine matches a software condition when at least one
of its applications satisfies it. For example, a dynamic collection with
InstalledSoftware.Name contains Chrome gathers every machine that
has Chrome installed. As String fields they support the usual text operators — equals,
not equals, contains, not contains, starts with, and
ends with. See the Filter Field Reference for
the full operator table.
For a tabular export, the report builder includes a dedicated Software data source
that produces one row per installed application, per machine. Its columns are Machine
Name, Operating System, IP Address, Agent Status, Software Name, Version, Publisher, Install Date,
Install Location, and Size (the default columns are Machine Name, Software Name, Version, and
Publisher) — ideal for a license-style listing or a “which machines have app X, and at what
version” report across the fleet. You can also produce the same explosion from the
Agents data source by adding an InstalledSoftware.* column. See
Reports to build, save, and export it.
What it's good for#
- License and audit reporting — export one row per application per machine to see who has which product and version installed across the estate.
- Finding unwanted or risky software — build a collection of every machine that has a prohibited or end-of-life application installed, then act on that group.
- Version drift — spot machines still running an outdated version of a browser or line-of-business app before you push an update.
- Grouping by installed product — tag or collect machines that have a given product (for example a specific database client) and target deployments, monitors, or reports at them.
- Pre-deployment checks — confirm what a machine already has before deciding what to install or upgrade.
Reading it over the API#
Installed software is part of an agent's inventory. You can fetch just the software list for one machine, or read it from the full inventory document. Reading inventory requires the Helpdesk role or higher.
| Endpoint | Returns | Role |
|---|---|---|
GET api/agents/{agentId}/inventory/software | The installed-software list for one machine (name, version, publisher, install date, location, size). | Helpdesk or higher |
GET api/agents/{agentId}/inventory | The full inventory document; read the software array. | Helpdesk or higher |
# Fetch just the installed-software list for one agent
$headers = @{ Authorization = "Bearer $token" }
$software = Invoke-RestMethod `
-Uri "https://athena.example.com:8443/api/agents/$agentId/inventory/software" `
-Headers $headers `
-SkipCertificateCheck
# Every application published by a given vendor
$software.data |
Where-Object { $_.publisher -like '*Microsoft*' } |
Select-Object name, version, publisher, installDate
The Athena PowerShell module wraps the same endpoint with a dedicated cmdlet, which also accepts a
-Search substring and can be piped an agent:
# All installed software on a machine
Get-AthenaAgentSoftware -AgentId $agentId
# Filter to matching applications by name or publisher (case-insensitive)
Get-AthenaAgentSoftware -AgentId $agentId -Search "office"
# Export a machine's software list to CSV
Get-AthenaAgentSoftware -AgentId $agentId | Export-Csv software.csv -NoTypeInformation
The -Search filter is a case-insensitive substring match applied to both the application
name and publisher. Each item carries name,
version, publisher, installDate, installLocation,
and size. The list is empty or absent when a machine has not yet reported this data. For
the wider inventory surface and the PowerShell module used to script against the server, see
Inventory and the
PowerShell Module reference.