Skip to main content
The template catalog is published as one JSON file, scripts/gen-template-gallery/catalog-index.json. It is generated from the catalog by go run ./scripts/gen-template-gallery, and CI fails when the committed copy is stale. Read it from the repository (raw file on the default branch) or from the catalog API when that exists: both serve the same object at the same schema_version. Readers must ignore fields they do not know. A breaking change bumps schema_version; adding a field does not.

Shape

Template fields

Trust levels

  • Listed: merged, the loader guards pass, every image has an exact version tag from an allowed namespace, and the admission check found no known-exploited vulnerability and no unallowed secret.
  • Verified: Listed, plus a recorded passing smoke run for the exact pinned images in verification. All services stayed up and the health path answered 200 to 399, or the status the template declares. verification.arches lists exactly the architectures that were tested, so a page can say “Verified on arm64”. trust.evidence_url is the CI run when one is recorded, else the public status page that records the pass.
  • Verified and signed: Verified, plus a signature verified against an identity in source_repo and a provenance attestation on the upstream image.
Verified is a fact about a pinned tag, not a date. When the tag changes, the record stops matching and the entry drops back to Listed until the new tag passes. Records made on a developer machine count, with their architecture disclosed; CI run links are added as the template PR workflow records them. The admission wording is: no known-exploited vulnerability (CISA KEV) in this image when this version was accepted, with the run linked. It describes an event, not the present state, and the index carries no vulnerability counts.

Where the data lives

  • internal/catalog/manifests/<id>/: the template itself.
  • internal/catalog/verified.json: smoke records, written by the smoke tooling (id to {tag, images, digest, arches, http_status, run_url}).
  • internal/catalog/images.lock.json: digests and signals resolved by CI, never written by hand.
  • internal/catalog/platforms.json: the registry platform scan.
To list your own product, see Add a template.
Last modified on November 2, 2026