Skip to main content
Every release signs the image and the chart with a keyless cosign signature and publishes an SBOM. Verify the signature before you run an artifact, and pin by digest so the bits never change under a tag.

Verify the image signature

The signature is keyless, made by the release workflow’s GitHub OIDC identity. Verify against that identity and issuer:
The manifest-list digest is signed in both registries, so the same command verifies ghcr.io/tai42ai/tai:0.3.0. A missing or mismatched signature exits non-zero.
The signature is attached to the manifest-list digest, not to a tag. cosign resolves the tag to that digest before it checks, so verifying a moving tag (latest, X.Y) checks whatever image the tag currently points at.

Pin by digest

A tag can be re-pointed; a digest cannot. Read the current manifest-list digest and run that exact reference:
TAI_VERSION in .env
The multi-arch manifest list carries both linux/amd64 and linux/arm64; imagetools inspect with no --format lists the per-arch entries.

Verify the chart signature

The Helm chart is a signed OCI artifact under the same identity:

SBOM and provenance

The build attaches SBOM and provenance attestations to the image in-registry, and each GitHub Release carries a CycloneDX SBOM (sbom.cdx.json) for the released multi-arch image. Use them to feed a vulnerability scanner or a supply-chain policy.

See also

  • Upgrades — verify a new tag before rolling to it.
  • The image — what the release pipeline signs and scans.