Vercel Container Registry hits the CLI on 20 August 2026 with a 10-repository Hobby cap its own launch post denies

Vercel shipped the vcr CLI on 20 August 2026 with a $0.10 per GB storage price and plan caps its own launch post contradicts.

Read time
12 min
Word count
1.8K
Sections
11
FAQs
8
Share
Vercel Container Registry CLI limits: $0.10 per GB storage, 500 MB compressed layer cap, 10 repositories per Hobby project
Vercel shipped the vercel vcr command group on 20 August 2026.
On this page · 11 sections
  1. What shipped on 20 August
  2. The contradiction: unlimited, or 10?
  3. The 500 MB layer ceiling is the one that breaks builds
  4. What actually breaks
  5. GHCR against VCR, on the points that matter
  6. Who this is for, and how to tell if it is you
  7. India-specific considerations
  8. What is still unknown
  9. FAQ
  10. How eCorpIT can help
  11. References

Summary. On 20 August 2026 Vercel shipped the vercel vcr command group, which lets Docker, Podman and Buildah push to Vercel Container Registry from a terminal instead of the dashboard. Two Vercel pages now disagree about what you are allowed to store. The launch changelog from 30 June 2026 states that "a Vercel project can have unlimited repositories". The limits page, last updated 3 August 2026, caps repositories per project at 10 on Hobby, 1,000 on Pro and 5,000 on Enterprise. Storage is billed at $0.10 per GB. The ceiling that stops most real images is not the 15 GB total size but the 500 MB cap on a single compressed layer, and Secure Compute and Static IPs still do not work with custom container images.

What shipped on 20 August

The vercel vcr command group wraps your existing container tool rather than replacing it. Marc Codina Segura and Andy Waller of Vercel described the flow in the 20 August changelog: "Authenticate your container tooling, such as Docker, Podman, or Buildah, with a short-lived token scoped to your project."

Three commands cover the common path:


            vercel vcr login docker
vercel vcr build docker --push
vercel vcr build docker ./app my-api:1.2.3 --push
          

The registry itself is not new. VCR launched on 30 June 2026 as an OCI-compliant registry at vcr.vercel.com, implementing the Docker Registry HTTP API v2. What changed on 20 August is that repository, tag, image and permission management moved into the CLI, alongside a --untagged filter on vercel vcr image ls and a vercel vcr config --public switch for repository visibility.

The image reference has four segments rather than GHCR's two: vcr.vercel.com/team-slug/project-name/my-repository:latest. A repository belongs to a Vercel project, not to a user or an organisation. That single structural difference drives most of the migration work.

The contradiction: unlimited, or 10?

Vercel's June launch announcement is still live and still says this:

A Vercel project can have unlimited repositories. You can create and manage them through the Vercel dashboard, or push directly to VCR, which creates the repository for you on the fly.

The limits and pricing page, last updated 3 August 2026, says something else entirely.

Resource Hobby Pro Enterprise
Repositories per project 10 1,000 5,000
Images per repository 50 10,000 50,000
Tags per repository 1,000 10,000 50,000
Teams a repository is shared with 100 100 100
Image storage price $0.10 per GB $0.10 per GB $0.10 per GB

The migration guide Vercel published on 29 July 2026 and updated on 12 August 2026 sides with the limits page: "On the Pro plan, each project supports up to 1,000 repositories with 10,000 images and 10,000 tags per repository. Hobby projects support 10 repositories with 50 images and 1,000 tags each."

Two of three pages agree, and the odd one out is the one people find first when they search for the product. Treat the caps as real and the launch line as stale. The practical hazard is auto-creation: pushing to a name that does not exist creates the repository, so a CI job that tags per branch on a Hobby project can consume all 10 repository slots without anyone choosing to create one.

The images cap bites harder than the repository cap. Fifty images per repository on Hobby means a pipeline pushing one image per commit exhausts a repository in fifty commits. There is no documented automatic garbage collection. Vercel gives you vercel vcr image ls --untagged to find orphans and vercel vcr image rm to delete them, both of which you have to run yourself, and both of which are permanent.

The 500 MB layer ceiling is the one that breaks builds

The size limits are published as a flat table, and the interesting number is not the largest one.

Resource Limit What typically hits it first
Compressed image layer 500 MB A single COPY of model weights or a JDK plus application
Total image size 15 GB Multi-stage builds that never prune
Manifest body 4 MB Manifest lists covering many platforms
Image config blob 1 MB Very long layer histories and label sets

Total image size is calculated from the compressed layers and the config blob referenced by the manifest. An image can sit comfortably under 15 GB and still be rejected because one COPY produced a 600 MB compressed layer. The fix is a Dockerfile change, not a plan upgrade: split the fat layer, or move the payload out of the image. Teams that already split build stages carefully will not notice this. Teams that ship a monolithic runtime image will.

Compression rules are equally load-bearing. Layers must use gzip or zstd; uncompressed OCI layers are rejected outright. Vercel recommends zstd, and here the CLI has a sharp edge worth knowing before your first CI run: Docker only applies zstd through the Buildx --output exporter. The documentation is direct about it. "Without Buildx, Docker builds and pushes without zstd compression, and the CLI warns you." Podman and Buildah build first, then push with zstd. Existing GHCR images built with standard Docker tooling use gzip, which VCR accepts, so a migration does not force a rebuild.

What actually breaks

Three things will surprise a team moving production workloads.

Credentials expire in 12 hours. vercel vcr login mints a project-scoped OpenID Connect token and hands it to the container tool with the username oidc. It is valid for 12 hours. That is fine on a laptop and wrong for an unattended runner. For non-interactive environments Vercel's guidance is a long-lived access token, with the Docker username set to the team ID rather than a personal username:


            printf '%s' "$VERCEL_TOKEN" | docker login vcr.vercel.com \
  --username "$VERCEL_TEAM_ID" \
  --password-stdin
          

The exception is Vercel's own build environment, which is pre-authenticated for the current project and needs no token at all.

Secure Compute and Static IPs do not work. The container images documentation, last updated 7 July 2026, states plainly that "Secure Compute and Static IPs are not yet supported with custom container images". Any workload that reaches a database behind an IP allowlist, or that a customer security review pinned to a fixed egress address, cannot move to a VCR-backed function today. This is the single most common blocker we see in regulated migrations, and it has no workaround inside the platform.

Default platform is `linux/amd64` and pulls are not wrapped. vercel vcr build targets linux/amd64 unless you pass --platform linux/arm64. The CLI has no pull subcommand at all: you run vercel vcr tag inspect to print the reference, then pull it with your own tool. For multi-architecture tags, a plain docker pull retrieves only your local platform's variant, so a pull-tag-push migration silently flattens a multi-platform image. Vercel's guide recommends docker buildx imagetools create to copy the manifest list between registries instead.

GHCR against VCR, on the points that matter

Dimension GitHub Container Registry Vercel Container Registry
Registry host ghcr.io vcr.vercel.com
Namespace User or organization Team slug plus project slug
Authentication Personal access token (classic) OIDC via vercel vcr login, 12-hour credentials, or an access token
Repository creation On first push On first push, or from the Images tab
API Docker Registry HTTP API v2 Docker Registry HTTP API v2, OCI format
Storage price Not the subject of this comparison $0.10 per GB

The migration mechanics are ordinary. Authenticate to both, copy with docker buildx imagetools create, compare manifest digests to confirm the copy is byte-identical, then switch the login step and image name in the GitHub Actions workflow. The GITHUB_TOKEN and the packages: write permission are no longer needed for the registry step once you cut over.

The reason to do it is placement rather than price. Vercel optimises every pushed image in the background into a precompiled snapshot for Fluid compute, and Vercel Functions and Vercel Sandbox pull from VCR directly. That optimisation is also a gate: Sandbox returns image_not_ready until the optimised linux/amd64 build has been prepared, so a script that pushes and immediately calls Sandbox.create() will fail on a cold repository.

Who this is for, and how to tell if it is you

You are affected if you deploy a Dockerfile.vercel on Vercel Functions, if you create Sandboxes from custom images, or if you were about to script registry cleanup against the dashboard. Run vercel vcr ls and vercel vcr image ls <repo> --untagged on your busiest project. If the untagged count is climbing and nothing in your pipeline deletes them, you are paying $0.10 per GB for images no environment references. At Indian pricing that is roughly ₹9 per GB per month at an exchange rate you should check on the day, which is small until a 15 GB image family multiplies it.

The runtime behaviour matters too. Functions running container images scale down after five minutes without traffic in production and after 30 seconds in preview, and the container receives SIGTERM with a 30-second grace period. The default port is 80 unless PORT is set. Teams coming from a long-lived container platform tend to miss the shutdown contract and lose in-flight work.

If you are weighing this against a self-managed setup, the same trade-off appears in our comparison of Cloudflare Workers and Vercel Functions cost, and in the operational detail behind self-hosting Next.js without the Vercel adapter. The billing surface for the surrounding telemetry is covered in our note on Vercel custom metrics billing limits. For the container hygiene that keeps you under the 500 MB layer cap, see our write-up on Docker Compose init containers.

India-specific considerations

Vercel does not publish a region-scoped storage price for VCR, so the $0.10 per GB rate applies regardless of where your team sits. For Indian teams the sharper question is the Secure Compute gap. If a client's DPDP-driven security review requires a fixed egress IP to reach a managed database, a VCR-backed container function cannot satisfy it today, and the workload has to stay on a platform that supports static egress. Plan the registry migration and the compute migration as two separate decisions rather than one.

What is still unknown

Vercel has not published a retention or lifecycle policy for VCR images, so there is no documented answer to how long untagged images are billed or whether automatic pruning is planned. The company has also not said whether the "unlimited repositories" line in the June changelog was a policy change or an error. Secure Compute support is described as "not yet supported", which implies intent without a date. Until Vercel corrects the launch post or the limits page, plan against the caps.

FAQ

How eCorpIT can help

Registry migrations fail on the boring parts: a fat layer nobody split, a CI runner still holding a 12-hour token, an egress IP requirement discovered a week before go-live. Our senior engineering teams run container platform assessments that map image sizes, layer counts and network requirements against a target platform's real limits before anything moves. eCorpIT is CMMI Level 5 and ISO 27001:2022 certified, and our DevOps services and cloud migration services cover the pipeline rework as well as the copy. Tell us what you run today at /contact-us/.

References

  1. Manage Vercel Container Registry with Vercel CLI, Vercel changelog, 20 August 2026.
  1. Introducing VCR: Vercel Container Registry, Vercel changelog, 30 June 2026.
  1. Container Registry limits and pricing, Vercel documentation, last updated 3 August 2026.
  1. Vercel Container Registry, Vercel documentation, last updated 3 August 2026.
  1. Container Registry CLI Reference, Vercel documentation, last updated 3 August 2026.
  1. Container Images, Vercel documentation, last updated 7 July 2026.
  1. How to migrate from GHCR to Vercel Container Registry, Vercel Knowledge Base, published 29 July 2026, last updated 12 August 2026.
  1. Vercel Changelog, Vercel, entries for 19 and 20 August 2026.
  1. vercel vcr, Vercel CLI documentation, last updated 3 August 2026.
  1. Limits, Vercel documentation, last updated 3 August 2026.
  1. Does Vercel support Docker deployments?, Vercel Knowledge Base, published 3 November 2025, last updated 12 August 2026.

Last updated: 21 August 2026.

Frequently asked

Quick answers.

01 How many container repositories can one Vercel project have?
The limits page updated on 3 August 2026 caps repositories per project at 10 on Hobby, 1,000 on Pro and 5,000 on Enterprise. Vercel's launch changelog from 30 June 2026 still says unlimited. The migration guide updated 12 August 2026 repeats the capped figures, so treat the caps as current.
02 What does Vercel Container Registry storage cost?
VCR image storage is billed at $0.10 per GB, according to Vercel's container registry limits and pricing page last updated on 3 August 2026. The same rate is quoted in the GHCR migration guide, which recommends pruning tags no environment references before copying rather than mirroring the full history.
03 Which size limit rejects images most often?
The compressed image layer cap of 500 MB, not the 15 GB total image size. Total size is computed from compressed layers plus the config blob referenced by the manifest, so an image well under 15 GB still fails if one layer exceeds 500 MB. Manifest bodies cap at 4 MB and config blobs at 1 MB.
04 How long do vercel vcr credentials last?
The vercel vcr login command mints a short-lived, project-scoped OpenID Connect token and passes it to your container tool with the username oidc. Vercel documents the credentials as valid for 12 hours. For unattended runners, use a Vercel access token instead, with the Docker username set to the team ID.
05 Does Secure Compute work with custom container images?
No. Vercel's container images documentation, last updated 7 July 2026, states that Secure Compute and Static IPs are not yet supported with custom container images. Workloads that need a fixed egress IP for a database allowlist or a customer security requirement cannot run as VCR-backed Vercel Functions today.
06 Do I have to rebuild images to migrate from GHCR?
No. VCR accepts gzip and zstd layers, and GHCR images built with standard Docker tooling use gzip. Vercel recommends copying multi-platform tags with docker buildx imagetools create, which preserves every platform variant, then comparing manifest digests to confirm the copy is byte-identical.
07 Does VCR delete untagged images automatically?
Vercel publishes no automatic garbage collection or retention policy for VCR. The CLI provides vercel vcr image ls --untagged to list orphaned images and vercel vcr image rm to delete them, and both deletion commands are permanent. Untagged images continue to count toward the per-repository image cap and toward storage.
08 When does a Vercel Function running a container scale down?
Functions receiving no traffic scale down after five minutes in production environments and after 30 seconds in preview environments. On scale-in the container receives a SIGTERM signal with a 30-second grace period before forced termination. The default HTTP port is 80 unless the PORT environment variable overrides it.

About the author

Manu Shukla

Founder & Director

Founder of eCorpIT. Hands-on engineer leading senior-only delivery for AI apps, custom software, and cloud systems for global clients.

Subscribe

One engineering note a week. No fluff, no spam.

Senior-architect playbooks on AI agents, mobile apps, cloud, security, data, and marketing — delivered every Wednesday.

Past the reading

Read enough. Let's build something.

A senior architect responds in 24 working hours with scope, indicative cost, and a timeline. NDA before any technical conversation.