OCI compatibility

lazer.sh implements the OCI Distribution Specification v1.1. There is no lazer-specific registry API to learn, and we do not document one — any spec-compliant client works.

What follows is the honest support matrix.

Supported

Capability Notes
GET /v2/ Version check and the auth challenge
Blob pull, GET and HEAD Served from the edge
Chunked and monolithic blob upload Uploads stream to storage rather than through the control plane
Manifest PUT, GET, HEAD, DELETE By tag or by digest
Image indexes Multi-architecture images and their children
Tag listing GET /v2/<name>/tags/list, paginated
Blob delete Subject to the delete scope
Token auth Bearer tokens via /token, short-lived, scoped

Accepted media types cover OCI image manifests and indexes, and the Docker v2 schema 2 manifest and manifest list, so images built by older toolchains push without conversion.

Not supported

Capability Status
Referrers API (/v2/<name>/referrers/<digest>) Not implemented. Returns UNSUPPORTED. Attestations and SBOM attachment come with it
Cross-repository blob mount Not implemented. Pushing the same layer into a second repository re-uploads it
Catalog (/v2/_catalog) Not implemented. Listing every repository on a private registry is an information-disclosure risk we would rather not carry. Use the management API
Image signing No Cosign or Notation verification enforced at the registry. Signatures push and pull as ordinary artifacts, but nothing checks them
Vulnerability scanning Not offered. Scan in CI before you push

If one of these is blocking you, say so — the list reflects what has not been needed yet rather than a decision never to build it.

Rate limits

Registry reads, upload initiations, and manifest writes are rate limited per credential. The limits are set well above what an ordinary CI pipeline generates; if you hit one you will get a 429 with a Retry-After header, and a well-behaved client will back off on its own.