{"rid":"storage/gitlab-com-container-registry","card":{"rid":"storage/gitlab-com-container-registry","eid":"gitlab","topic":"storage","slug":"gitlab-com-container-registry","provider":"GitLab.com container registry","url":"https://registry.gitlab.com","domain":"gitlab.com","category":"registry","tier":null,"verdict":"qualifies","vorder":0,"grp":"usable","confidence":"reported","binding":"none","identity_kind":"anonymous","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":"oci","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":5,"usd_month":null,"usd_per_tb_month":null,"summary":"No published storage cap. Explicitly excluded from the per-project 10 GiB limit; unlimited container repositories per project is the practical reading.","duplicate_of":null,"n_unknown":6},"record":{"topic":"storage","slug":"gitlab-com-container-registry","provider":"GitLab.com container registry","url":"https://registry.gitlab.com","category":"registry","free_tier":{"stated":"No published storage cap. Explicitly excluded from the per-project 10 GiB limit; unlimited container repositories per project is the practical reading.","unit":"GiB","metered_on":"stored-bytes","source_url":"https://docs.gitlab.com/user/storage_usage_quotas/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://docs.gitlab.com/user/storage_usage_quotas/","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://docs.gitlab.com/user/storage_usage_quotas/","notes":"not stated"},"egress":{"terms":"Free, Cloudflare + Google Cloud CDN. Blob requests 307-redirect to cdn.registry.gitlab-static.net with a signed URL — directly cacheable by an external Cloudflare zone.","metered":false},"interface":["oci"],"interface_detail":"oci","tooling":"Standard OCI Distribution v2. ORAS, skopeo, crane, docker. Auth flow is anonymous for public projects (`/jwt/auth` returns a token with auth_type=none).","chaining":"One OCI artifact per blob of any size -> unlimited projects x unlimited repositories x unlimited tags. This is the canonical 'OCI registry as object store' pattern (ORAS). Blob dedupe means the same chunk stored in N projects costs one copy but is addressable N times.","limits":[],"limits_note":"Auth token TTL 15 min on GitLab.com. Blob size limited only by the registry (manifest layers routinely are 100s of MB; no documented per-layer cap). Renaming a project with >1000 container repos is blocked. Public pulls are rate-limited loosely; anonymous token issuance works but each pull needs a token round-trip.","identity_cost":{"kind":"anonymous","detail":"derived from the record's prose, not from an identity field, and no signup was executed: er repos is blocked. Public pulls are rate-limited loosely; anonymous token issuance works but each pull needs a token round-trip. registry","country":null},"reliability_note":"GitLab has run garbage-collection and cleanup-policy tooling against registries since 2023; no automatic purge is documented, but stale-tag cleanup policies are a first-class feature other users may set on shared projects. Own projects are not touched.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://docs.gitlab.com/user/storage_usage_quotas/","date":"2026-10-21","proved":"package/container registries excluded from the limit"},{"url":"https://registry.gitlab.com/v2/","date":"2026-10-21","proved":"probe: GET -> 401 with WWW-Authenticate: Bearer realm=\"https://gitlab.com/jwt/auth\",service=\"container_registry\"; Server: cloudflare; gitlab-sv: registry-us-east1-c"},{"url":"https://gitlab.com/jwt/auth?service=container_registry&scope=repository:gitlab-org/gitlab-runner:pull","date":"2026-10-21","proved":"probe: GET -> 200, JWT with \"auth_type\":\"none\" (anonymous pull token, no credentials)"},{"url":null,"date":"2026-10-21","proved":"probe: GET /v2/gitlab-org/gitlab-runner/manifests/latest with that token -> 200, application/vnd.oci.image.index.v1+json, digest sha256:f1c76f915d7f70d8b3e25cac58da3d87d3d10106dda82ee780409440e1dc1ccc, Server: cloudflare"},{"url":"https://cdn.registry.gitlab-static.net/","date":"2026-10-21","proved":"probe: GET /v2/gitlab-org/gitlab-runner/blobs/sha256:a60ef8ec184edb5ed91f5983f00261359fb2fe20f603e8d488b9477d32fcad70 -> 307 to ... (signed CDN URL, cacheable)"}],"verdict":"qualifies","verified_at":"2026-10-21T00:00:00.000Z","notes":"No published storage cap. Explicitly excluded from the per-project 10 GiB limit; unlimited container repositories per project is the practical reading.","extras":{},"binding":"none","binding_note":"no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":10,"unit":"GiB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.evidence[3].url","private-url"],["$.free_tier.notes","process"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]}