Skip to content

How the agent gets into a VM

Nothing needs to be done per instance: the platform installs the agent at the instance’s first boot.

The platform adds its own cloud-init vendor data to every instance, beside the tenant’s user data. On first boot it:

  1. Adds a package repository served by the metadata service (http://169.254.169.254/latest/stratum/packages), with the release key that signs its metadata.

  2. Installs the stratum-instance-agent package:

    Image family Repository Install
    dnf / yum (AlmaLinux, CentOS Stream, Fedora, RHEL) /etc/yum.repos.d/stratum.repo, key in /etc/pki/rpm-gpg/RPM-GPG-KEY-stratum dnf install stratum-instance-agent
    apt (Debian, Ubuntu) /etc/apt/sources.list.d/stratum.list, key in /etc/apt/keyrings/stratum.asc apt-get install stratum-instance-agent
  3. If the package manager is not recognized, or the repository cannot be reached, falls back to downloading the agent binary from the metadata service and writing its systemd units directly.

The repository is used only when its key fetches; the platform never configures it with signature checking off.

The package owns the agent’s files, so tenant user data cannot delete them by accident, and a repair is a reinstall (dnf reinstall or apt-get install --reinstall).

  • Full cloud-init. AlmaLinux, CentOS Stream, Fedora, Debian and Ubuntu cloud images work; minimal test images such as CirrOS do not.
  • The metadata service enabled on the instance. An instance launched with the metadata endpoint disabled has no agent rail.
  • curl or wget in the image, for the fallback path.

Custom user data cannot lock the agent out: the agent runs as root and recreates the stratum-ssh login user if the tenant’s users: list replaced it.

Unit Runs
stratum-instance-agent-heartbeat.timer The heartbeat, about once a minute, and the self-update check.
stratum-instance-agent-session.service The Session Manager channel; a timer restarts it if it stops.
stratum-instance-agent.timer SSH host certificate and CA trust upkeep, every 6 hours.
stratum-instance-agent-metrics.timer Guest metrics.
stratum-instance-agent-inventory.timer, -connections.timer Security posture: inventory every 15 minutes, connections every 2.
stratum-instance-agent-selfheal.timer Every 10 minutes, repairs a wedged agent.

The binary is /usr/local/bin/stratum-instance-agent.

Each heartbeat compares the agent’s own binary with the build the platform serves. When they differ, the agent fetches and runs the platform’s install script as root, then checks the new binary. Updates across a fleet are spread over a few minutes, so instances do not all restart at once. A new release of the platform therefore reaches running instances by itself, with no relaunch.

To apply it now instead, use Refresh agent; see Troubleshooting.