Introducing Tenki's code reviewer: deep, context-aware reviews that actually find bugs.Try it for Free
Runners
Jun 2026

CI Vendor Shutdowns Are a Pattern, Not a Fluke

Hayssem Vazquez-Elsayed
Hayssem Vazquez-Elsayedproduct

Share Article:

On February 6, 2026, BuildJet announced it was shutting down. Runners stopped on March 31. Two months later, on April 7, Cirrus Labs announced it was joining OpenAI. Cirrus CI shuts down on June 1, 2026. Two managed CI platforms gone in the span of a few months, for completely different reasons, with the same outcome for every team that depended on them: forced migration under a deadline someone else set.

This isn't a coincidence. It's a pattern that's been building for years in the CI runner market, and it has real implications for how engineering leaders should evaluate their next platform.

Two shutdowns, two different failure modes

BuildJet was a straightforward managed runner service for GitHub Actions. Change one line in your workflow file, get faster builds. Their shutdown announcement on February 6 was honest about the reason: GitHub had closed the performance gap that BuildJet was built to fill. Faster hardware, larger runner options, native ARM support. The product thesis eroded. BuildJet gave teams about eight weeks to migrate back to GitHub-hosted runners.

Cirrus CI was something different. Cirrus Labs built a full CI platform with its own configuration language, its own runner infrastructure, and a genuinely innovative approach to macOS CI through Tart, their open-source Apple Silicon virtualization tool. Projects like PostgreSQL, Bitcoin Core, and Podman ran on Cirrus CI. The team never raised outside capital. They built carefully, charged fairly, and earned real loyalty.

Then OpenAI came calling. Fedor Korotkov, Cirrus Labs' founder, framed the move around "the era of agentic engineering" and joining OpenAI's Agent Infrastructure team. It's a talent acquisition. The CI product isn't being absorbed into OpenAI. It's being discontinued. Teams get less than two months to rewrite their entire CI configuration.

Different causes. Same result. Your CI breaks on a date you didn't choose.

What acquisition actually means for a CI product

When a CI company gets acquired, the acquirer almost never cares about your CI workflows. They want the team. They want the infrastructure expertise, the systems knowledge, maybe the virtualization IP. The product you depend on is, at best, in maintenance mode. At worst, it gets a sunset date.

The Cirrus CI case is textbook. OpenAI hired a team with deep experience in virtualization, build environments, and developer tooling. That expertise is now pointed at agent infrastructure. The engineers who understood your macOS build quirks are working on something else entirely. No one at OpenAI is going to fix a caching bug in Cirrus CI.

BuildJet's case is the other failure mode: the product thesis didn't survive market evolution. GitHub kept investing in runners, narrowed the gap, and BuildJet's differentiation evaporated. The founders were candid about it. But candor doesn't extend your migration window.

Both outcomes share a root cause: the vendor's incentive structure changed. Either someone offered a better deal than running your CI, or the economics stopped working. In either case, you're the one rewriting YAML on a deadline.

The hidden cost of a forced CI migration

The WarpBuild team published a migration guide for Cirrus CI users, and it's honest about the scope: "This migration is bigger than a runner label swap. You're moving from Cirrus CI's .cirrus.yml configuration format to GitHub Actions workflow files. For simple setups, expect a few hours. For complex multi-platform configurations, plan for a day or two."

A day or two sounds manageable. But that estimate only covers the YAML rewrite. The real migration cost is everything around it:

  • Runner label rewrites across every workflow file in every repository. If you hardcoded vendor-specific labels, you're doing find-and-replace across your entire org.
  • Cache strategy adjustments. BuildJet had its own cache action. Cirrus CI had built-in cache directives with folder and fingerprint config. Neither maps 1:1 to the next platform.
  • Environment parity testing. Your builds passed on the old platform's OS image with its pre-installed tools. The new platform's image has different versions, different paths, different default configs. Tests that passed for months start failing for reasons unrelated to your code.
  • Secret re-provisioning. Cirrus CI used encrypted variables in its config files. Those need to move to GitHub Actions secrets or your vault of choice. Every secret needs to be rotated, re-scoped, and verified.
  • Review gate reconfiguration. If your merge requirements referenced specific CI check names from the old vendor, those branch protection rules are now broken. PR gates silently stop enforcing.
  • Compliance documentation. If your SOC 2 narrative or security questionnaire responses reference the old CI vendor by name, those documents need updating too.

For a team with 20-30 repositories and non-trivial CI, this easily stretches into a multi-week project. And it's entirely unplanned work. Nobody's sprint had "rewrite CI because vendor got acquired" in the backlog.

Why CI runner companies are acquisition targets

Small CI runner companies are structurally vulnerable. The market dynamics work against long-term independence:

  • Thin margins. You're reselling compute. The margin between what you pay AWS/GCP and what you charge customers has to cover engineering, support, and growth. That margin gets squeezed every time the cloud providers or GitHub drop prices.
  • Platform dependency. If your product exists because GitHub Actions runners are slow, your product thesis evaporates the moment GitHub ships faster runners. BuildJet said exactly this.
  • Talent is the real asset. Engineers who can build low-latency VM orchestration, custom kernel optimizations, and Apple Silicon virtualization are rare. That expertise is worth more to a well-funded AI company than the CI product's ARR.

This means that for any CI runner vendor you evaluate, you should be asking: what happens if the founders get a nine-figure offer from an AI lab tomorrow? Is CI their entire business, or a stepping stone?

What independence means for a CI vendor's roadmap

At Tenki, independence isn't a branding choice. It's a product architecture decision that shapes how we set our roadmap and price our runners.

CI runners and code review are the entire business. Not a side project. Not a product-market-fit experiment on the way to something else. No parent company is going to redirect Tenki's engineering team toward a different product category next quarter. The roadmap stays pointed at making GitHub Actions builds faster and code review deeper because that's the only thing the company does.

That matters in concrete ways. When Tenki's runners are 30-50% faster and 50% cheaper than GitHub's default runners (verified across real projects like Citrea and n8n on the benchmarks page), the investment behind those numbers is long-term. And when Tenki ships AI code review at $0.50 per review alongside those runners, it's because the products reinforce each other. Faster CI plus better review isn't two product bets hedging against each other. It's one thesis: ship better code, faster.

How to evaluate a managed runner platform

If you're choosing a managed runner provider right now, especially if you're migrating off one that just shut down, here's what to evaluate beyond the spec sheet:

  1. Is CI the vendor's entire product, or one of several? A company whose only revenue comes from CI runners is structurally motivated to keep that product excellent. A company where CI is a growth experiment alongside three other products might pivot away from it.
  2. Who owns the company? VC-backed companies with investors looking for an exit have a different calculus than bootstrapped or independently funded companies. Both can work fine, but the acquisition risk profile is different.
  3. What's the vendor's differentiation beyond speed? "Faster runners" is a feature GitHub can close the gap on, as BuildJet learned. A vendor whose differentiation includes review integration, caching innovations, or compliance tooling has a moat that pure speed doesn't provide.
  4. How deep is the integration with GitHub? A platform that works within the GitHub Actions ecosystem (same workflow syntax, same marketplace, same OIDC) means your migration path out is a label swap, not a full rewrite. Teams leaving Cirrus CI are learning this distinction the hard way.
  5. What's the vendor's track record of focus? Look at the release cadence. Has the product been getting regular updates? Is the team growing or shrinking? A vendor that ships quarterly improvements to their core product is a different bet than one that's been quiet for six months.

Make your next migration a two-day task, not a two-week one

Regardless of which platform you pick next, you can structure your CI configuration to minimize migration pain. Here's what to check right now:

Abstract your runner labels. Don't scatter vendor-specific runner labels across 40 workflow files. Define them as variables or in a reusable workflow, so swapping vendors means changing one file instead of forty.

# .github/workflows/runner-config.yml (reusable workflow)
on:
  workflow_call:
    outputs:
      runner-label:
        value: tenki-linux-x64-4
        # Change this one value to migrate platforms

# .github/workflows/ci.yml
jobs:
  setup:
    uses: ./.github/workflows/runner-config.yml
  build:
    needs: setup
    runs-on: ${{ needs.setup.outputs.runner-label }}

Use the standard cache action. BuildJet had buildjet/cache@v4. Cirrus CI had its own cache directives. If you'd used actions/cache@v4 from the start, the cache step survives any runner swap.

Pin your base images. If your CI depends on specific tool versions, pin them in your workflow rather than relying on whatever the runner image ships. A setup-node@v4 with an explicit version works on any runner. Relying on the pre-installed Node on a specific vendor's image doesn't.

Keep secrets in GitHub, not the vendor. Store secrets in GitHub Actions' native secret management (or a dedicated vault like HashiCorp Vault). If your secrets live in the CI vendor's proprietary system, you're adding another dependency that breaks when the vendor disappears.

Audit your branch protection rules. Check which CI status checks are required for merge. If they reference vendor-specific check names, document what each one does so you can recreate the equivalent gates on a new platform quickly.

The pattern isn't going away

BuildJet and Cirrus CI won't be the last CI vendors to shut down. The structural dynamics that made them vulnerable haven't changed. AI labs are still hiring, VC-backed devtools companies are still getting acquired, and GitHub is still incrementally improving its own runners.

The lesson isn't "don't use managed runners." Managed runners are worth it. The performance and cost benefits are real. The lesson is to pick a vendor whose business model and ownership structure give you confidence they'll still be running your builds in two years, and to structure your CI so that if they're not, the migration is measured in days, not weeks.

Tags

#github-actions-runners#migration-guide#ci-cd-architecture#platform-engineering#vendor-risk

Recommended for you

What's next in your stack.