Bellwether

CI test selection and flake control

Run the tests your change can break. Skip the rest.

Bellwether records what every test loads, then runs only the ones a pull request can reach, and prints the reason for every test it leaves out. Flaky tests stop blocking merges. The whole suite still runs every night.

  • 1,400 engineering teams
  • 71% median CI time cut
  • Free for open source

What Bellwether does on every pull request

One CLI step before your test command. Everything else happens in the map it keeps.

All features
A server aisle with rows of black mesh-door cabinets and cables overhead

Why we built it

Most of a test suite cannot fail on most commits

We spent years on build infrastructure watching engineers wait 40 minutes for tests that could not see their change. Bellwether has run in production pipelines since 2021, and it still only skips a test when it can print the reason.

Teams using it
1,400
Median CI time cut
71%
Recording overhead
4%
Who we are

From first recording to a shorter run

Setup is two lines in the pipeline file. The first recording is the only slow part, and nothing is skipped until it finishes.

Turquoise fibre patch cables plugged into rows of ports

Record

One full run with the recorder attached. It notes every file each test opens, imports or requires.

Code on a dark screen, shot at an angle with a shallow focus

Select

On each pull request, the diff is walked against the map. Only tests that can reach a changed file are picked.

Two people typing on backlit keyboards, seen from above

Run

Your own test command reads the selection file. Shards are balanced by each test’s recorded duration.

Hands on a laptop keyboard with code open on the screen, seen from above

Audit

Every skipped test is listed with its reason, and a full run each night checks the map is still true.

What would selection save your pipeline?

Move the sliders to match your suite. The selection rate comes from real suites of the same size.

Your pipeline
3,108
38 min
60
25

CI minutes saved per month

39,892

That is 665 machine hours, and a wait per push of 38 min → 5.4 min.

Tests per run 412 of 3,108

Median selection for a suite this size: 13%

CI spend saved
$1,277
Bellwether Team
−$600
Net per month
$677
Start a 14-day trial

Counts 21 working days and adds one full nightly run (30 a month) plus 0.4 min per run for the map lookup. Median selection by suite size (under 500 / 2,000 / 10,000 / above): 34% / 21% / 13% / 8%. Engineer waiting time is not priced in.

Tick a file, watch the suite shrink

A small repository with 18 tests. Pick what the pull request changed and Bellwether picks the tests. Try the base image.

Changed in this pull request

Tick the files your change touches.

packages/billing/

packages/core/

packages/search/

packages/jobs/

apps/web/settings/

docs/

./

3 of 18 tests selected

run time 2m 43s

Full suite: 13m 54s. Every skipped test keeps its reason in the skip report.

  • billing/proration_spec.rb runs
  • billing/invoice_totals_spec.rb runs
  • billing/coupon_stacking_spec.rb skipped
  • billing/tax_region_spec.rb skipped
  • api/accounts/merge_spec.rb runs
  • api/webhooks/retry_spec.rb skipped
  • api/auth/session_spec.rb skipped
  • search/indexer_spec.rb skipped
  • search/ranking_spec.rb skipped
  • search/facet_counts_spec.rb skipped
  • jobs/scheduler_spec.rb skipped
  • jobs/backoff_spec.rb skipped
  • web/checkout_flow_spec.ts skipped
  • web/checkout_errors_spec.ts skipped
  • web/settings_form_spec.ts skipped
  • core/money_spec.ts skipped
  • core/result_spec.ts skipped
  • core/clock_spec.ts skipped

Bellwether, run-everything or hand-cut shards

The three ways teams usually handle a slow suite, side by side for a 3,000-test suite that takes 38 minutes.

What you get BellwetherRun everythingManual sharding
Wait per push 6–9 minutesThe full suite, 38 minutesSuite ÷ shards, about 12 minutes on 4
CI minutes billed About 15% of the suite100% of the suite100% plus setup on every shard
Catches what the change can break Yes, plus a full run nightlyYesYes
Flaky tests Quarantined with both runs attachedBlock the merge until retriedBlock the merge until retried
Upkeep None, the map rebuilds itselfNoneRebalancing shard lists by hand
Cost From $0 for open source, $24 a seatYour CI billYour CI bill plus engineer hours

$0 for open source, $24 a seat for everyone else

Every plan gets selection, flake quarantine and the skip report. Team adds private repositories and shard balancing.

Compare plans

Open source

$0 free for public repositories

Unlimited committers. Community support in the forum.

  • Test selection on every pull request
  • Flake quarantine
  • The skip report
  • 90 days of history
Start free

Enterprise

$1,900 per month, from

Annual contract. Self-hosted map store, SSO and audit log.

  • Everything in Team
  • Self-hosted map store
  • SAML SSO and SCIM
  • Audit log export
  • 99.9% uptime SLA
Talk to us

Engineers on the time they got back

Wait per push before and after, measured on each team’s main pipeline over a month.

CI per push 38 min down to 7 min

“We stopped arguing about which tests to skip on Fridays. The skip report settles it, and the nightly run has caught two stale entries in six months, both before anyone merged.”
Priya NandakumarStaff engineer, payments platform · 140 engineers

CI per push 52 min down to 11 min

“Our four hand-balanced shards drifted every sprint. Now one pipeline step picks the tests and spreads them by recorded duration. Nobody owns a shard list any more.”
Jonas WendtBuild lead, logistics SaaS · 60 engineers

CI per push 24 min down to 6 min

“Contributors used to wait half an hour to learn a typo fix passed. On the open-source plan it costs us nothing and the queue on release week is finally short.”
Dara OkaforMaintainer, open-source ORM · 300 contributors

Shipped lately, and written down

Changelog

All releases
  1. v2.14 New

    Slow-shard summary in every run

  2. v2.13 New

    First-party recorder for Go test

  3. v2.12 Improved

    Random seeds kept with quarantined runs

  4. v2.11 Improved

    More lockfiles treated as global by default

Questions teams ask in the first week

Setup, security and billing. The full list has more, and a person answers the contact form.

All questions

Setup

How long does setup take?

Two lines in the pipeline file and one full recording run. The recording takes as long as your suite plus about four percent. Until it finishes, Bellwether selects every test, so nothing changes for your team on day one.

Which CI systems and test runners does it support?

Anything that can run a shell step: hosted runners, self-hosted runners and build farms alike. Test runners with a first-party recorder are RSpec, Minitest, pytest, Jest, Vitest, Go test, JUnit 5 and Cargo test. Others work through the generic file-access recorder.

Security

Does Bellwether need our source code?

No. The recorder runs inside your pipeline and sends file paths, test identifiers and durations. File contents never leave your runner.

Where is the map stored?

On Open source and Team, in our EU region (Frankfurt), encrypted at rest with per-account keys. On Enterprise you can run the map store in your own cloud account and we never see it.

Billing

Who counts as an active committer?

Anyone who pushed a commit that Bellwether ran against in the billing month. Bots, release automation and people who only read the dashboard are not counted.

Is the open-source plan really free?

Yes, for public repositories under an OSI-approved licence, with no seat limit and no run limit. Private repositories need the Team plan.

Record one suite this afternoon.

Nothing is skipped until the first map is built, so you can install it today and decide next week.