Skip to main content
Bundles and their Runtimes can be distributed as Open Container Initiative (OCI) artifacts.

Artifact format

The OCI artifacts produced with timoni artifact push have the following media types:
  • Image media type application/vnd.oci.image.manifest.v1+json
  • Config media type application/vnd.timoni.config.v1+json
  • Layer media type application/vnd.timoni.content.v1.tar+gzip
The artifacts are annotated with OCI standard annotations:
  • org.opencontainers.image.source: <GIT URL>
  • org.opencontainers.image.revision: <GIT COMMIT SHA>
  • org.opencontainers.image.created: <GIT COMMIT DATE>
For reproducible builds, Timoni preserves explicit annotations, then uses SOURCE_DATE_EPOCH or the Git commit time for the creation date. Git source and revision metadata are added when available.

Building artifacts without a registry

timoni artifact build writes a deterministic OCI archive without registry or network access:
Use --format=oci-layout for directory output. Tags are optional and repeated --tag flags add reference names for the same manifest. Local outputs are unsigned; existing output paths are rejected.

Publishing bundles to container registries

Timoni offers a command for publishing bundles, by packaging a local directory as an OCI artifact and pushing the artifact to a container registry. When publishing bundles with timoni artifact push you can:
  • specify a local directory contain any number of files and subdirectories using the -f flag
  • choose a versioning scheme for your bundles using the --tag flag
  • attach custom metadata such as licenses, Git source and documentation links using the --annotation flag
  • sign the artifact using either with a Cosign static key or Cosign keyless using the --sign flag
Registry tags must follow the OCI Distribution tag grammar. When --registry-insecure is set, Timoni also permits Cosign to use plain HTTP or skip TLS verification. Use this option only for testing. When --creds is set, Timoni also uses those credentials for Cosign.

Push and sign example

Login to the container registry:
Generate a cosign key pair:
Export the cosign private key password with:
Publish and sign an artifact containing bundles and runtimes files:
Add extra tags to the artifact with:

Using bundles from container registries

Timoni offers commands for listing, verifying and extracting bundles and any other files from OCI artifacts stored in container registries.

List, pull and apply example

If the artifact is stored in a private registry, login with:
List all the artifact’s tags and digest with timoni artifact list:
The tags can be filtered with a regular expression using --filter-regex, and with a semantic version range using --filter-semver:
Tags that are not valid semantic versions, such as latest, are excluded when --filter-semver is set. Resolve the digest of a single tag with timoni artifact digest:
Verify the signature and download a specific artifact tag with timoni artifact pull:
If the artifact was signed using Cosign keyless, you can verify it with:
The above command will extract all the files from the remote artifact into the current directory. Deploy the app from a bundle and runtime with timoni bundle apply: