Skip to main content

Runtime Manifest Specification

The runtime manifest is a JSON file that describes a complete runtime configuration, including the runtime identity, extensions, and optional OS bundle. It is stored at /var/lib/avocado/runtimes/{runtime_id}/manifest.json.

Full Example (with OS bundle)

{
"manifest_version": 2,
"id": "a1b2c3d4-e5f6-7890-abcd-ef0123456789",
"built_at": "2026-03-12T10:30:00Z",
"runtime": {
"name": "production",
"version": "1.2.0"
},
"extensions": [
{
"name": "my-app",
"version": "2.1.0",
"image_id": "f47ac10b-58cc-5372-8567-0e02b2c3d479",
"sha256": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
},
{
"name": "my-config",
"version": "1.0.0",
"image_id": "7c9e6679-7425-540b-8c36-e23b1e3b1e81",
"sha256": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3"
}
],
"os_bundle": {
"image_id": "deadbeef-1234-5678-abcd-000000000000",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"os_build_id": "avocado-os-20260312",
"initramfs_build_id": "initramfs-20260312"
}
}

Minimal Example (extensions only)

{
"manifest_version": 1,
"id": "abc12345-def6-7890-abcd-ef0123456789",
"built_at": "2026-03-12T10:30:00Z",
"runtime": {
"name": "dev",
"version": "0.1.0"
},
"extensions": [
{
"name": "my-app",
"version": "0.1.0",
"image_id": "f47ac10b-58cc-5372-8567-0e02b2c3d479",
"sha256": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
}
]
}

Field Reference

FieldTypeRequiredDescription
manifest_versionintegerYesSchema version. 1 for extensions-only manifests, 2 adds initramfs_build_id support.
idstringYesUnique identifier for this runtime, typically a UUID. Used as the directory name under runtimes/.
built_atstringYesISO-8601 timestamp of when the runtime was built.
runtimeobjectYesRuntime identity.
runtime.namestringYesHuman-readable runtime name (e.g., "production", "dev").
runtime.versionstringYesSemantic version of the runtime.
extensionsarrayYesList of extension images included in this runtime. May be empty.
extensions[].namestringYesExtension name.
extensions[].versionstringYesExtension version.
extensions[].image_idstringNoUUIDv5 content-addressable image identifier. When present, the image file is {image_id}.raw.
extensions[].image_typestringNoImage format. Absent for raw squashfs/erofs images, "kab" for KAB-wrapped images.
extensions[].sha256stringYesSHA-256 hash of the extension image file for integrity verification.
os_bundleobjectNoOptional OS bundle reference for rootfs/initramfs updates.
os_bundle.image_idstringYes*UUIDv5 identifier for the OS bundle image file. *Required if os_bundle is present.
os_bundle.sha256stringYes*SHA-256 hash of the OS bundle .raw file for integrity verification.
os_bundle.os_build_idstringNoIdentifies the rootfs version. Compared against the running system's AVOCADO_OS_BUILD_ID to detect OS changes.
os_bundle.initramfs_build_idstringNoIdentifies the initramfs version. Requires manifest_version >= 2.

Image ID Scheme

Extension and OS bundle images use UUIDv5 content-addressable identifiers. IDs are generated deterministically from the fixed namespace UUID 7488fa35-6390-425b-bbbf-b156cfe1eed2 and the SHA-256 hash of the image contents. This provides deduplication: runtimes that share identical image content reference the same image file. The sha256 field in each extension and OS bundle entry is used to verify image integrity before the runtime is applied.

Image Resolution

When image_id is present:

/var/lib/avocado/images/{image_id}.raw

When image_id is absent (legacy):

/var/lib/avocado/images/{name}-{version}.raw

Manifest Version History

VersionChanges
1Initial format with extensions and optional os_bundle (supports os_build_id).
2Adds initramfs_build_id to os_bundle for independent initramfs version tracking.