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
PushandPull— rejected or lost on four registries: ECR andgcr.ioreject the zero-byte commit with400, GHCR reports the empty digest present but answers uploads and reads with404, and Quay.io accepts the push while every retrieval returns404. - Chunked
Push— broken on ECR, which acknowledges every chunk and never makes the blob available, and ongcr.io, which answers the second upload request with405. - 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 verifiedPullof it returnsErrDigestMismatch), a trailing-data upload can commit the declared prefix, and mounts are declined soMountreturns(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 |