7.7 KiB
Agent Substrate Glossary
This document defines the core terms used across Agent Substrate.
For how the pieces fit together, see the Architecture and API Guide.
Resources (declarative)
-
ActorTemplate (ate API resource): the definition of an actor "class": the container image(s) and snapshot configuration. Creating an
ActorTemplatetriggers creation of a Golden Snapshot. It is treated as immutable: you create a new template for a new version rather than editing an existing one. It is analogous to a Pod template, but for a checkpointable workload. ActorTemplates are created and managed through the substrate gRPC API (e.g.kubectl ate create actor-template) and stored in the control-plane database; they are not Kubernetes objects. -
WorkerPool (Kubernetes CRD): declares warm compute capacity, a fleet of pre-started worker pods. It is reconciled into a Kubernetes
Deploymentby the atecontroller. -
SandboxConfig (Kubernetes CRD): a cluster-scoped resource holding the sandbox binaries for one runtime family (the gVisor
runscbinary, or a micro-VM kernel/firmware/config), plus the pause image for the sandbox's root container. An actor resolves its sandbox at first cold boot from the config itsActorTemplatenames (naming one is currently required; per-class cluster defaults are planned), so one config pins the runtime version for many templates.
Records (dynamic state, in the control-plane store)
These live in the control-plane database because they change too frequently for etcd.
-
Atespace: the isolation boundary an Actor belongs to, and the first half of its identity: an Actor is addressed by
(atespace, name), so the same name can exist in two atespaces. Atespaces are global-scoped, not Kubernetes namespaces — anActorTemplatealso lives in an atespace, whileWorkerPools live in Kubernetes namespaces. One must exist before any Actor can be created in it, and it can only be deleted once empty. -
Actor: a single instance derived from an
ActorTemplate, identified by a DNS-1123 name. It is the unit that is suspended and resumed, and it moves between workers over its lifetime. An Actor record tracks its lifecycle status and snapshot references. -
Worker: a record representing one worker pod in a
WorkerPool. A Worker hosts at most one Actor at a time; many Actors are multiplexed across a pool over time.
Components
-
ate-api-server (binary
ateapi): the control plane. It owns the Actor lifecycle, schedules Actors onto Workers, and coordinates their snapshots, all backed by the state store. Thekubectl-ateCLI talks to it. -
atecontroller: the Kubernetes controller that reconciles the CRDs (for example, it turns a
WorkerPoolinto aDeployment). -
atelet: the node-level supervisor, run as a DaemonSet. It pulls images, assembles OCI bundles, drives the sandbox lifecycle on the node via ateom, and streams snapshots to and from snapshot storage.
-
ateom: the coordinator that runs inside each worker pod and drives the sandbox runtime on behalf of atelet. This decouples the physical pod lifecycle from the sandboxed agent process.
-
atenet: the networking stack. Its router resumes suspended Actors on demand and routes traffic to the right worker pod.
-
podcertcontroller: issues short-lived pod certificates that components use as their TLS identity to authenticate connections to one another (mutual TLS).
-
kubectl-ate: a
kubectlplugin CLI for managing the Actor lifecycle and listing Workers.
Lifecycle
-
Suspend: hibernate a running or paused Actor into a durable snapshot in external storage. A running Actor is checkpointed on its Worker (which is then freed); a paused Actor's node-local snapshot is uploaded — narrowed to the commit scope when the pause captured more — ending its node pinning.
-
Pause: a short-term checkpoint of a running Actor. Snapshot files remain on the node VM, and the following Resume is prioritized onto the node VM where the snapshots are persisted.
-
Resume: activate a suspended/paused Actor by restoring it onto a Worker. The common path restores from a snapshot rather than cold-booting.
Volumes
-
DurableDir volume: a directory mounted into one or more containers whose contents are preserved by the
Datasnapshot scope and therefore survive across Suspend/Resume independently of process memory or other rootfs writes. A volume may be mounted into multiple containers, potentially at different paths. This is the per-Actor application-data surface.How many an
ActorTemplatemay declare depends on itssandboxClass: amicrovmtemplate may declare several (they are subdirectories of one virtio-fs share, so they cost nothing extra per volume), while agvisortemplate is limited to one until gVisor can accept more than a single durable mount.
Snapshots
-
Snapshot scope: what an
ActorTemplate'sSnapshotsConfigincludes in a given snapshot. Two scopes exist today:Full: process memory plus the rootfs delta on top of the OCI image, and any attachedDurableDirvolumes. Used to capture everything needed to resume hot.Data: only the contents of attached volumes that support snapshots — currentlyDurableDirvolumes. Process memory and the rest of rootfs are discarded. Used to persist application data cheaply without the cost of a full memory image. How the Actor comes back on Resume is governed by the Resume sources (onResume.fromData): cold-boot by default, or combined with the Golden Snapshot.
Scopes describe only what a snapshot captures. They are configured per-trigger via
onPauseandonCommit:onPauseselects what is captured during a Pause (kept on the node), andonCommitselects what is captured during a Suspend (uploaded to snapshot storage).onCommitmust be a subset ofonPause. -
Resume sources: an
ActorTemplate'sonResumeblock selects, per snapshot situation, what supplies the guest state on Resume. Each field names what is being resumed from; the value names the boot source.onResume.fromDataapplies when the Resume uses aData-scope snapshot (from either trigger):ColdBoot(default): start the containers afresh from the OCI image with theDurableDircontents restored.Golden: restore the template's Golden Snapshot (process memory + rootfs delta) and serve the Actor'sDurableDirdata to it, so the Actor resumes with the golden's warm state over its own data. Currentlymicrovm-only.
A still-valid
Fullsnapshot always restores from its own content and is not configurable here. -
Golden Snapshot: the initial checkpoint captured once, when an
ActorTemplateis created, from a temporary "golden" boot of the workload. By default an Actor of that template is first restored from this shared snapshot. It is always aFullcapture, and underonResume.fromData: Golden(see Resume sources) it also supplies the guest state that an Actor'sDatasnapshot is combined with on Resume. -
Last Snapshot: the most recent per-Actor snapshot, written on Suspend and used to restore that specific Actor on the next Resume.
-
Snapshot storage: the object store (GCS or S3) where snapshots are persisted so Actor state is durable and portable across the cluster.
Networking
- Actor routing header: a higher-order system sends traffic to the
Substrate router with
ate-target-actor: <atespace>/<actor>. The router uses this header to locate and resume the Actor.