Memory (RAM) Inventory

For every managed machine, Athena inventories the physical memory installed in it — broken down per slot so you can see exactly which memory sockets are populated, how much each module holds, its speed and generation (DDR3, DDR4, DDR5…), and the manufacturer and part number of the installed module. Empty sockets are reported too. That gives you a fleet-wide picture of installed RAM — for example which machines are short on memory, which still have free slots to expand into, and which mix module speeds — without opening a case or logging in to each device.

What's collected#

Each memory record represents one physical memory socket on the machine and captures the following:

FieldMeaning
SlotThe socket / bank label as the hardware names it (for example DIMM 0, ChannelA-DIMM0). Lets you tell one socket from another when planning which to populate.
CapacityThe size of the module in that socket, shown in a human-readable form (for example 16 GB). Empty sockets show as Empty.
SpeedThe module's rated speed in MHz.
TypeThe memory generation — DDR, DDR2, DDR2 FB-DIMM, DDR3, DDR4 or DDR5. When the machine reports a value that doesn't map to a known generation it is shown as Type N, and as Unknown when no value is reported.
ManufacturerThe module maker, where the hardware reports it.
Part NumberThe manufacturer part number of the installed module — useful when sourcing matching modules for an upgrade.

Empty sockets are reported as rows. A socket with no module installed appears with its slot label and a capacity of Empty; its speed, type, manufacturer and part number are shown as -. This is what lets you see at a glance whether a machine still has room to add memory.

This is read-only discovery. Athena reports what each machine already reports about its installed memory; it does not modify, test, or reconfigure the hardware. The exact fields a given machine can populate depend on what its firmware and drivers expose.

Where to see it#

Open a machine from the Agents list, then in the agent detail view's left-hand navigation choose Memory Slots. The section lists every socket in a table with its capacity, speed, type, manufacturer and part number, so a machine that is fully populated stands apart from one with sockets still free.

As with the rest of inventory, the values reflect the machine's last successful collection on its regular reporting cadence rather than a live query at open time. For the wider inventory surface and refresh behaviour, see Inventory.

Platform coverage#

Memory is inventoried on both Windows and Linux endpoints, using each operating system's own native facilities, so a mixed fleet answers the same questions consistently.

AspectWindowsLinux
Per-slot detail (slot, capacity, speed, type, manufacturer, part number)Reported.Reported where the machine exposes the underlying firmware (SMBIOS) memory records.
Empty-slot detectionReported.Reported when per-slot firmware detail is available.
Fallback—Where per-slot firmware detail is unavailable (for example inside a container, or where the reading needs privileges the agent doesn't have), Linux reports a single System Memory row with the total installed size and a type of Unknown, so the section is never blank.

If a Linux machine shows a single System Memory row instead of per-slot detail, that machine couldn't provide the per-module firmware data — commonly the case in virtualized or containerized environments. Physical servers and workstations that expose their firmware memory tables report the full per-slot breakdown.

Auditing across the fleet#

Per-slot memory fields are a per-machine readout rather than machine-filter fields, so you won't find them in the collection or automatic-tagging field pickers. To answer a fleet-wide question — "which machines still have free memory slots?", "which run DDR3?", or "which need matching modules sourced for an upgrade?" — the practical approaches are:

Reading it over the API#

Memory has its own inventory endpoint. Request the memory slots for one agent and read the returned array:

# Fetch the per-slot memory inventory for one agent
$headers = @{ Authorization = "Bearer $token" }

$mem = Invoke-RestMethod `
  -Uri "https://athena.example.com:8443/api/agents/$agentId/inventory/memory" `
  -Headers $headers `
  -SkipCertificateCheck

# List each socket with its capacity, speed and type
$mem.data |
  Select-Object slot, capacityFormatted, speedMhz, memoryType, manufacturer, partNumber

# Count the empty sockets still available for an upgrade
($mem.data | Where-Object { $_.isEmpty }).Count

The same data is also included in an agent's full inventory document (GET api/agents/{agentId}/inventory) under the memorySlots array. Reading inventory requires the Helpdesk role or higher. The array is empty (or the parent inventory is null) when a machine has not yet reported this data. For the full inventory surface and the PowerShell module used to script against the server, see Inventory and the PowerShell Module reference.