The agent supports 23 action types grouped by what they manage. Where it makes sense, an action carries a desired state (PRESENT or ABSENT) so re-dispatching it against an already-converged device is a no-op. An assignment can also use UNINSTALL mode to force ABSENT on the action without rewriting the action itself.
Packages and updates
Action
Backends
Purpose
PACKAGE
apt, dnf, pacman, zypper
Install or remove a named package
UPDATE
apt, dnf, pacman, zypper
Run update && upgrade (or the distro equivalent)
REPOSITORY
apt, dnf, pacman, zypper
Add or remove a package repository with GPG key validation
DEB
dpkg
Install a .deb from a URL with SHA-256 verification
RPM
rpm
Install an .rpm from a URL with SHA-256 verification
APP_IMAGE
AppImage
Install a portable AppImage with system integration
FLATPAK
flatpak
Install a Flatpak from the configured remote
Before any package operation the agent self-heals the package manager: clears apt / pacman / zypper locks, recovers an interrupted dpkg --configure -a, remounts read-only filesystems, and repairs DNF history. You don't need to clean up after a failed install before retrying.
System configuration
Action
Purpose
SHELL
Run a shell script. An optional detection script gives you idempotency.
SCRIPT_RUN
Run a one-shot script with output capture (no idempotency expected)
SERVICE
Manage a service unit. systemd today; OpenRC, runit, and s6 slots are reserved in the proto but not yet implemented.
FILE
Manage file content, ownership, and mode. Managed-block diffing for fragments inside a larger file.
Create, modify, or delete a system user with linux_uid, home, shell, and groups
GROUP
Create or delete a system group
SSH
Manage a user's authorized_keys
SSHD
Manage sshd_config through priority-ordered Override fragments
ADMIN_POLICY
Sudoers or doas.conf fragments built from an access_level template
LPS
Local Password Solution. Rotates local-account passwords on a schedule and stores ciphertext at rest.
Security and networking
Action
Purpose
ENCRYPTION
LUKS passphrase rotation with optional TPM or user-passphrase enrolment. GELI and CGD are proto-enum placeholders only.
WIFI
Manage NetworkManager wireless profiles
Lifecycle
Action
Purpose
AGENT_UPDATE
Self-update the agent binary. SHA-256 verified, swap-and-restart.
REBOOT and SYNC are the only instant actions today. They dispatch over the agent's mTLS stream immediately rather than waiting for the next reconciliation tick. Like every dispatch, they carry a CA-signed SignedActionEnvelope whose bytes bind the action type, execution ID, desired state, timeout, and target device. The agent verifies the signature over those exact bytes before acting, so a compromised gateway or Valkey can't forge a fleet-wide reboot or retarget a captured envelope.
There's also a separate "rerun a device's current policy now" operator action — DispatchAssignedActions. That one is not an instant action: it walks the device's assignments and re-dispatches each through the normal action path. Reach for it when you want a device to converge on its assigned state without rebooting or waiting for the next reconciliation tick.
Conventions
Most actions are idempotent. REBOOT, SYNC, SCRIPT_RUN, and SERVICE with desired_state: RESTARTED are the explicit exceptions; each says so on its own page.
Every action emits an ExecutionCreated event on dispatch and a terminal ExecutionCompleted, ExecutionFailed, or ExecutionTimedOut event when it finishes. The events table is the audit log.
SHELL, SCRIPT_RUN, FILE, SERVICE, ADMIN_POLICY, REPOSITORY, ENCRYPTION, and WIFI actions can carry secret content. The audit redactor strips script, detectionScript, content, unitContent, customConfig, gpgKey, presharedKey, psk, and clientKey from the visible trail.
Privileged operations dispatch through the SDK's injected sys/exec Runner with Command.Escalate set, never through os/exec directly. The privilege backend — direct root, sudo, or doas — is resolved once at agent startup.
Maintenance windows apply per device group. An action assigned to a group with a window only runs during that window in the device's local timezone. See Maintenance windows.