Vercel CI
Intro
Vercel CI is a continuous integration service from Vercel, launched in public beta on October 28, 2026 and available on all plans. It is built on Turborepo: it reads the task graph in turbo.json, runs only the tasks a push could actually affect, restores the rest from Remote Cache, and gives each task its own right-sized machine. Vercel built it because coding agents now open far more pull requests than humans, and each one waits on CI.
Announcement: Introducing Vercel CI · Changelog: Vercel CI is now in beta · Docs: vercel.com/docs/ci
Explain
Key points
- Does strictly less work: most CI systems rerun the whole workflow on every push, even for a one-line change. Vercel CI uses the Turborepo task graph to skip tasks whose inputs did not change. As Malte Ubl (@cramforce) of Vercel put it on X: "Only changed the backend? No need to run the linter on the frontend."
- No workflow YAML: you tag tasks in
turbo.jsonwith"tags": ["ci"]. There is no separate CI config to drift out of sync with your build system, and Remote Cache is on by default. - Per-task compute: each remaining task runs on its own isolated machine, powered by Hive, Vercel's compute layer, and starts as soon as its dependencies finish. Dependencies are installed once per run and cached across pushes.
- Speed claim: Vercel says its internal push-to-"CI passed" time is 2-6x faster than before, and Vercel CI has already run nearly 8 million tasks across Vercel's repos and the private beta.
- Requirements and limits: Turborepo 2.11.7+ and Vercel CLI 64.3.1+. The beta currently supports GitHub repos, Linux and git-push triggers. Early testers on X note the per-minute price is higher than GitHub's runners, so the savings come from running fewer tasks.
- Roadmap: advanced observability, a
vc cicommand for distributed execution before you push, and finer-grained test selection before general availability.
Usage
How to get started
- Make sure the repo uses Turborepo (add
turbo.jsonand theturbopackage if not; it also works in single-package repos). - Tag the tasks you want CI to run:
{
"tasks": {
"lint": { "tags": ["ci"] }
}
}
- Push. Every task tagged
ciruns on each push, but only when affected by the change.
Vercel also suggests prompting your coding agent with: "Set up Vercel CI for this repository. Run npx skills use vercel/ci@setup and follow the skill's instructions."
Good fits
- Monorepos where most pushes touch only one package
- Teams whose coding agents open many small pull requests
- Projects already using Turborepo Remote Cache
Tip
Compare a few real commits against your current CI before switching: one early tester saw 35s vs 96s, but mostly because 9 of 10 tasks came from cache.