Skip to content

Registry compatibility

Results of running one library test campaign against nine registries. Hosted-registry behavior can change at any time; treat each cell as a dated observation, not a permanent property. Hover over a feature name for what its row verified.

Verification identity

Field Value
Campaign date 2026-08-12
Library commit 8700a0989bb82ca272ca986e2dc8eae79536d1b5
Go go1.26.4 darwin/arm64
Independent control ORAS CLI plus raw HTTP requests
Parallel configuration 4 workers, 1 MiB chunks (256 KiB on gcr.io)
Chunked configuration 1 MiB chunks

The refresh procedure is Refresh the registry compatibility matrix.

Result labels

Symbol Label Meaning
PASS The feature worked and its result was independently verified.
NO The registry and library combination did not support the feature.
N/A The campaign did not exercise this path on this registry.

Differences at a glance

Every registry passed authenticated reads, ranged and parallel pulls, resume, monolithic push, concurrency, and upload Location handling. The registries differ only here:

  • Empty blob Push and Pull — rejected or lost on four registries: ECR and gcr.io reject the zero-byte commit with 400, GHCR reports the empty digest present but answers uploads and reads with 404, and Quay.io accepts the push while every retrieval returns 404.
  • Chunked Push — broken on ECR, which acknowledges every chunk and never makes the blob available, and on gcr.io, which answers the second upload request with 405.
  • Wrong-digest rejection, exact-size rejection, and cross-repository Mount — unsupported on Nexus Repository OSS 3.76.0: a wrong-digest commit still becomes retrievable (a verified Pull of it returns ErrDigestMismatch), a trailing-data upload can commit the declared prefix, and mounts are declined so Mount returns (false, nil).

Cross-repository Mount on ECR requires the regional registry's BLOB_MOUNTING setting to be ENABLED; with it disabled, ECR declines the mount.

Two paths produced no result anywhere: no registry ignored ranged requests (the parallel fallback never triggered) and none answered with 429 or 5xx (retry after throttling was not observed).

Results by registry

Amazon ECR Private.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

GitHub Container Registry.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

Docker Hub.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

The gcr.io URL served by Google Artifact Registry.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

Quay.io.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

Azure Container Registry.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

Harbor v2.15.2, self-hosted, filesystem storage.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

GitLab CE 19.2.1 native registry, self-hosted, filesystem storage.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling

Sonatype Nexus Repository OSS 3.76.0, self-hosted, filesystem storage.

Feature Result
HTTPS and authentication
Small blob (about 1 KiB)
Exists, present and missing
Serial Pull
Progress reporting
PullRange
Parallel Pull
Parallel range-ignored fallback
Interrupted Pull resume
Unreferenced blob retrieval
Monolithic Push
Empty blob Push and Pull
Chunked Push
Wrong-digest rejection
Exact-size rejection
Cross-repository Mount
Shared-client concurrency
Off-origin redirect credential scope
Upload Location handling
Retry after registry throttling