The Notary Project signature specification defines a portable signature envelope for OCI artifacts and blobs, along with how those signatures are stored in and discovered from an OCI registry. Notation is its reference implementation.
Notary Project Signature Specification
The Notary Project signature specification answers a narrow, practical question: given an artifact in a registry, where does its signature live and what exactly is signed? The answer is a portable envelope — COSE or JWS — plus a defined way of storing that envelope in an OCI registry as an artifact referring to the subject digest, so it can be found later by anyone who has the digest.
- Signature envelopes - COSE Sign1 and JWS, with the signed payload and the certificate chain explicitly scoped.
- OCI storage and discovery - Signatures are stored as referring artifacts and found through the referrers API, so no side channel is needed.
- Trust policy - A separate specification for how a verifier decides which identities it will accept, which is where most real-world signing programs actually fail.
- Notation - The reference CLI and libraries, so the specification is not theoretical.
For an API platform, this is the mechanism behind “only signed images run in production,” and by extension behind any claim that the code answering an API call is the code that was reviewed. It builds directly on the OCI Distribution referrers API, descends from TUF, and overlaps with Sigstore — the two are best understood as different trade-offs on key management rather than competitors.
Open source tools that implement this standard
Harvested from this standard's own governing organisation, with the license read from each repository rather than assumed. The role is what the tool does to the specification, from the shared vocabulary — so an agent holding one of these documents can resolve straight from a goal to a tool.
| Tool | Role | License | What it does |
|---|---|---|---|
| Notation | signs |
Apache-2.0 | Signs and verifies OCI artifacts against a trust policy, storing signatures in the registry alongside what they sign. |
| Ratify | verifies |
Apache-2.0 | Verifies artifacts and their referenced metadata at admission time in Kubernetes, so unsigned or unattested workloads never start. |
| notation-go | signs |
Apache-2.0 | The Go libraries behind Notation, for signing and verifying OCI artifacts. |