SG SealGrid Athena Docs

Container & Virtualization Inventory

Beyond installed software and services, the Hermes agent also inventories the workloads a machine hosts: Docker and Podman containers on Linux endpoints, and Hyper-V and VMware Workstation virtual machines on Windows endpoints. This gives you a fleet-wide picture of container runtimes, images, volumes, and registered VMs without logging in to each host.

This inventory is read-only discovery. Athena reports what is installed and registered on each host; it does not start, stop, or modify containers or virtual machines.

Platform coverage#

The two areas are collected by different platform agents and appear as separate sections in the agent detail view:

InventoryRuntimesCollected on
ContainersDocker, Podman (rootful and rootless)Linux endpoints
VirtualizationHyper-V, VMware WorkstationWindows endpoints

Each section is shown only when it applies. On the agent detail view, the Containers and Virtualization entries appear under the Configuration group — the Virtualization section is surfaced only when a hypervisor is detected on the host. A machine that runs no containers and no hypervisor simply reports nothing for these areas.

Container inventory (Linux)#

On Linux endpoints, Hermes detects the Docker and Podman runtimes independently and, when a runtime is reachable, enumerates its containers, images, and volumes.

Runtime detection

For each runtime, the agent reports:

FieldMeaning
RuntimeNameDocker or Podman.
IsInstalledThe runtime binary is present on the host.
IsAccessibleThe agent could query the runtime (socket reachable / permissions sufficient).
ServiceRunningThe runtime's service/socket is active.
VersionRuntime version (e.g. 24.0.7).
BuildInfoBuild / commit identifier.
RootlessUsersUsers with rootless Podman sessions (Podman only).
ErrorMessageSet when the runtime is installed but could not be queried — for example, installed but the daemon is not running, or installed but inaccessible due to permissions.

Detection is deliberately honest: an installed-but-unreachable runtime is reported as IsInstalled = true with an explanatory ErrorMessage rather than being silently dropped, so you can tell "no Docker here" apart from "Docker is here but the agent can't see it."

Rootless Podman

Podman is commonly run rootless, per user. In addition to the system (rootful) instance, Hermes discovers users with an active rootless Podman session and enumerates each user's containers, images, and volumes as well. Rootless items are labelled with the owning user so they are easy to distinguish in the list. If the rootful instance is not reachable but rootless sessions are found, the runtime is still reported as accessible so those workloads are not lost.

What's reported per container, image, and volume

ObjectFields
ContainerId, Name, Image, Command, CreatedAt, State (running / exited / paused), Status (e.g. "Up 2 hours"), Ports (e.g. 0.0.0.0:8080->80/tcp).
ImageId, Repository, Tag, CreatedAt, Size, and a dangling flag for untagged images.
VolumeName, Driver, Mountpoint, Scope.

Requirements. Container discovery relies on the Docker or Podman CLI being present and the runtime being reachable by the agent's service account. For system-wide Docker this typically means the daemon is running and its socket is accessible; for rootless Podman, the target users must have an active session. Stopped daemons or permission errors are reported as an ErrorMessage rather than an empty result.

Virtualization inventory (Windows)#

On Windows endpoints, Hermes detects locally installed hypervisors and enumerates all registered VMs regardless of power state — running and powered-off alike.

Hyper-V

Both the Hyper-V client optional feature and the Windows Server Hyper-V role are detected (they share the same management tooling). When present, Hermes reports the management module version and enumerates every VM with these fields:

FieldMeaning
NameVM display name.
PowerStateNative state (Running / Off / Saved / Paused), preserved verbatim.
PowerStateNormalizedNormalized state used for consistent display across hypervisors.
VcpuCountAssigned virtual CPU count.
MemoryAssignedBytesAssigned memory.
IpAddressesGuest IP address(es) reported by the VM's integration services. Left empty (not fabricated) when the guest reports none — e.g. integration services are off or absent.

If Hyper-V is installed but the VMs cannot be enumerated — usually a permissions issue — the host is still reported as having Hyper-V installed, together with an actionable status message explaining that the agent should be run with sufficient privileges (for example, by adding its service account to the Hyper-V Administrators group). VMs are never silently omitted.

VMware Workstation

VMware Workstation is detected via its registry install path / known install locations. Hermes then builds a complete list of VMs by combining:

Each VM reports its name, power state (normalized to Running / Off), configuration path, and — where readable from the VM configuration — its assigned vCPU count and memory. If Workstation is installed but no VMs are readable, the host is reported as installed with a status message instead of an empty list.

Where to see it#

Open a machine from the Agents list and use the agent detail view's left-hand navigation:

Like the rest of inventory, these results are refreshed on the agent's regular status cadence, so the view reflects the last successful collection rather than a live query at open time.

Reading it over the API#

Container and virtualization data are part of an agent's full inventory. Fetch the complete inventory document and read the containerInventory and virtualizationInventory sections (each is null when it does not apply to that host):

# Fetch the full inventory for one agent, then inspect containers / VMs
$headers = @{ Authorization = "Bearer $token" }

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

$inv.data.containerInventory.docker.containers
$inv.data.virtualizationInventory.hyperV.vms

Reading inventory requires the Helpdesk role or higher. For the full inventory surface, sub-routes, and refresh behaviour, see Inventory. For the PowerShell module used to script against the server, see the PowerShell Module reference.