ORAS (OCI Registry As Storage) is a CNCF project that treats an OCI-conformant registry not as a container image store but as a general-purpose content-addressable storage system for any kind of artifact. Its central insight is that the OCI Distribution and Image specifications are already a well-understood, widely-deployed, access-controlled, geo-replicated, content-addressed storage substrate — and that the ecosystem does not need a separate storage solution for every new artifact type (Helm charts, WebAssembly modules, ML models, firmware images, OPA policies, SBOMs, attestations) when the same registry infrastructure can store all of them, using the same authentication, the same tooling, and the same pull-by-digest semantics that container images already use.
The mechanics of storing an artifact in an OCI registry with ORAS follow the OCI Image Specification directly. ORAS packages files as a manifest plus one or more layer blobs; the manifest carries an artifactType field (a media type string) to identify what kind of artifact it is, and a config blob typed as application/vnd.oci.empty.v1+json if no separate config is needed. The content-addressed digest of the manifest is then the artifact’s permanent, immutable identifier — pull it by digest anywhere and you get exactly the bytes pushed. ORAS implements the full OCI Referrers API: when pushing an artifact that annotates an existing image (a signature, an SBOM, a provenance attestation), ORAS sets the manifest’s subject field to the image’s digest, and registries that support referrers index the relationship automatically. An oras discover command then queries that index, showing all artifacts associated with a given image without the caller needing to know their tags or digests in advance. For registries that predate the referrers API, ORAS falls back transparently to the tag-schema fallback defined in the distribution spec.
ORAS ships as three layers of tooling designed for different audiences. The oras CLI is a command-line client for humans and CI pipelines: oras push, oras pull, oras cp (registry-to-registry copy, including transitive referrers), oras discover, and oras manifest fetch. The oras-go library is the Go SDK consumed by projects integrating OCI artifact support into their own tooling — cosign, Notation, and several Kubernetes operators use it directly. Client libraries for .NET, Rust, and Python follow the same core SDK compliance matrix. The practical effect is that the supply chain graph that the OCI Referrers API makes possible — an image with attached signature, SBOM, and attestation, all discovered and verified in a single registry round-trip — is primarily constructed and consumed via ORAS primitives, whether or not the end user ever invokes the oras CLI directly.
