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:

FieldMeaning
NameThe application's display name — for example “Google Chrome” or “7-Zip” on Windows, or a package name such as openssh-server on Linux.
VersionThe installed version string, as reported by the application or package.
PublisherThe vendor or publisher of the application. On Linux this reflects the packaging source (see Platform coverage).
Install dateWhen the application was installed, when that information is available. May be blank for entries that do not record it.
Install locationThe folder the application reports as its install path, when available.
SizeThe 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:

WindowsLinux
SourceThe 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.
PublisherThe publisher recorded for the program.For rpm, the package vendor; for dpkg, the packaging source is shown in place of a vendor.
What's excludedEntries 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:

FieldTypeExample values
InstalledSoftware.NameStringGoogle Chrome, 7-Zip, Microsoft Office
InstalledSoftware.VersionString120.0.6099.130, 22.01
InstalledSoftware.PublisherStringGoogle 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#

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.

EndpointReturnsRole
GET api/agents/{agentId}/inventory/softwareThe installed-software list for one machine (name, version, publisher, install date, location, size).Helpdesk or higher
GET api/agents/{agentId}/inventoryThe 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.