Skip to content

DL-478

MicroVM fleet config is pushed, not mounted. The Runner fetches the bundle before Launch, and on refresh with if_version=lastVersion. It checks the bundle schema on the host, then streams the bundle to compass-guestd over a new client-streaming GuestControl.InstallAgentConfig RPC after Serve. guestd runs as guest root and enforces only the content-agnostic safety kernel in go/internal/agentconfig: caps, a separate wire cap, containment, types, and modes. It installs a root-owned 0755/0644 tree at /run/compass/agent-config, with the same version-dir layout and an atomic current-symlink flip. The capability-less agent reads the tree at the unchanged default path and cannot modify it. Refresh reuses reloadLocked, and the vsock refresh gate and the Provision config skip are removed. InstallAgentConfig joins the vsockGatewayEngine probe. The guest image ships with or before the Runner, and CodeUnimplemented fails Provision closed as ErrGuestImageTooOld. OQ-C stays, and podman, host, and apple-container are unchanged.

Status: Active (proposed, pending Matt, 2026-10-11)

Record: ../../infra/runtime/compass-elastic-session-runtime/microvm-config-delivery.md#approach