Compare

BuildPulse vs GitHub-hosted runners

Keep GitHub Actions, change the machine. The same jobs finish 2x faster on BuildPulse runners at half the cost of GitHub-hosted, and the only change is the runs-on label. Every number here is a list price or a public benchmark run.

2x

faster on the same jobs, measured at 4 vCPU

50%

less per build at the least, speed and rate compounded

33%

less per minute at 2 and 4 vCPU, list price to list price

3,000

free base minutes every month, at every size

At a glance

GitHub-hosted runnersBuildPulse runners
Price per minute$0.006 at 2 vCPU to $0.162 at 64, Linux x64$0.004 to $0.128, 21% to 33% less; arm64 18% to 50% less
Speed at 4 vCPUubuntu-latest, measured1.3x to 2.1x faster on Rust, TypeScript and Docker builds
Cost per build at 4 vCPUMeasured, list price to list price50% to 68% less
Free minutes3,000 standard-runner minutes a month on Team and Pro for private repos; none on larger runners3,000 base minutes a month on every account, at every size
Sizes2 to 64 vCPU, x64 and arm642 to 64 vCPU, x64 and arm64 (Graviton), plus Docker builder runners
BillingPer minute, rounded up per jobPer minute, rounded up per job, no minimums and no commitment
Config changeNoneThe runs-on label, per job

Speed, measured on real projects

We ran the same jobs on GitHub's ubuntu-latest and on a BuildPulse x64-4x, both at 4 vCPU, five runs a side, on October 23, 2026. A job's time is the sum of its phase steps, measured the same way on both sides, and every run is public. The cost columns price each median at the two list prices, so the saving per build compounds the faster finish with the cheaper minute.

WorkloadGitHub-hostedBuildPulseFasterGitHub costBuildPulse costPer build
Rust test and lintspotify-player, cargo test + clippy3m 51s1m 52s2.1x (52% less time)$0.046$0.01568% less
TypeScript install and typecheckopencode, bun install + turbo typecheck2m 3s1m 4s1.9x (48% less time)$0.025$0.00965% less
Docker image buildPostHog, no cache13m 7s9m 48s1.3x (25% less time)$0.157$0.07850% less

Medians of 5 runs a side at 4 vCPU on October 23, 2026: GitHub's ubuntu-latest larger runner against a BuildPulse x64-4x. Cost is each side's list price per minute, $0.012 against $0.008, before any free allowance. Each workload links to the public run.

Method, hardware and every run: the GitHub Actions benchmark and github.com/buildpulse/runner-benchmarks. Rerun it yourself: the workflows are in the repo.

Price per minute, size by size

GitHub charges for larger runners by the minute at a list price per size, and the same is true here. Each row is the same vCPU count and memory on both sides. The per-minute discount is 21% to 33% on x64 and 18% to 50% on arm64; the saving on a build is larger because the build also needs fewer minutes.

Linux x64

Linux x64MemoryBuildPulse $/minGitHub $/minPer minuteFree a month
2 vCPU · 2x8 GB$0.004$0.00633% less3,000 vs 3,000
4 vCPU · 4x16 GB$0.008$0.01233% less1,500 vs 0
8 vCPU · 8x32 GB$0.016$0.02227% less750 vs 0
16 vCPU · 16x64 GB$0.032$0.04224% less375 vs 0
32 vCPU · 32x128 GB$0.064$0.08222% less187 vs 0
64 vCPU · 64x256 GB$0.128$0.16221% less93 vs 0

Linux arm64

Linux arm64MemoryBuildPulse $/minGitHub $/minPer minuteFree a month
2 vCPU · 2x8 GB$0.0025$0.00550% less4,800 vs 3,000
4 vCPU · 4x16 GB$0.005$0.00838% less2,400 vs 0
8 vCPU · 8x32 GB$0.010$0.01429% less1,200 vs 0
16 vCPU · 16x64 GB$0.020$0.02623% less600 vs 0
32 vCPU · 32x128 GB$0.040$0.05020% less300 vs 0
64 vCPU · 64x256 GB$0.080$0.09818% less150 vs 0

GitHub-hosted larger runner list prices for Linux, September 2026. BuildPulse prices are the same ones on /pricing. Free a month is BuildPulse against GitHub at that size.

Free minutes, on both sides

GitHub includes 3,000 minutes a month on Team and Pro for private repos, and they cover standard runners only: GitHub's billing docs are explicit that larger runners are charged from the first minute even when quota is left. BuildPulse includes 3,000 base minutes on every account, renewed monthly, and larger sizes draw them proportionally, so the grant is worth the same money whichever size you run: 1,500 minutes at 4 vCPU, 750 at 8, 187 at 32. No credit card is needed to use them.

What the minute includes

Caching

Docker layer, dependency and build caches that survive across runs, with an included storage allowance.

Docker builder runners

NVMe-backed Docker builder runners from 4x to 32x, at the same per-minute price as the standard runner of the same size.

Fixed egress IPs

Runners leave from four fixed addresses you can allowlist today, and a dedicated egress IP is available on request.

Flaky test detection

Every run is parsed for flaky tests and per-test timing. No second tool, no separate bill.

The migration is one line

Change the runs-on label on a job. Steps, actions, secrets, caches and matrix stay as they are. Move one workflow, compare the run times side by side for a day, and move the rest or change the line back.

# .github/workflows/ci.yml
jobs:
  test:
-   runs-on: ubuntu-latest
+   runs-on: bp-ubuntu-latest-x64-4x
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm test

Labels follow one pattern, bp-ubuntu-latest-<x64|arm64>-<size>, from 2x to 64x. The GitHub Actions runner page has the setup steps.

Your month, every size

Rather think in minutes than in builds? This is the bill calculator from /pricing. Pick a size and compare a month on GitHub-hosted runners with the same jobs on ours, free allowances taken off on both sides.

vCPU

A month of CI at 10,000 GitHub minutes on 4 vCPU x64

runs-on: bp-ubuntu-latest-x64-4x

GitHub-hosted

$120

10,000 min · none included · 10,000 × $0.012

GitHub charges larger runners from the first minute, even when your plan has quota left.

BuildPulse

$28

5,000 min · 1,500 free · 3,500 × $0.008

Twice the speed, half the minutes.

See the benchmark →

You pay

77% less

at 10,000 GitHub minutes a month

$0.008/min, not $0.012/min, for half as many minutes, and the first 1,500 free every month.

Linux x64MemoryBuildPulseGitHubDepotTotal vs GitHub
2 vCPU8 GB$0.004$0.006$0.00667% less
4 vCPU16 GB$0.008$0.012$0.01267% less
8 vCPU32 GB$0.016$0.022$0.02464% less
16 vCPU64 GB$0.032$0.042$0.04862% less
32 vCPU128 GB$0.064$0.082$0.09661% less
64 vCPU256 GB$0.128$0.162$0.19260% less

Per-minute list prices for the same size, September 2026. Depot also charges a monthly plan fee.

3,000 free minutes a month

On every account, renewed monthly. Larger runners use them proportionally faster, so the grant is worth the same whichever size you run.

Flaky test detection included

Every run is parsed for flaky tests and per-test timing. No second tool, no separate bill.

Caching included

Docker layer, dependency and build caches that survive across runs, with no per-GB storage line.

Need your CI to reach a private registry or database behind an allowlist? Our runners leave from four fixed addresses you can allowlist today, and a dedicated egress IP is available on request. Talk to us.

FAQ

How is a minute billed?

Per minute, rounded up to the next whole minute per job, the same way GitHub bills. There are no minimums and no commitment, and the first 3,000 base minutes each month are free on every size: 1,500 minutes at 4 vCPU, 750 at 8.

How many jobs can run at once?

Concurrency comes from a per-organization CPU quota rather than a per-plan seat count, and the quota is raised on request. Running jobs in parallel costs nothing extra; you pay for the minutes they use.

Is arm64 available?

Yes. Every size is available on arm64 (Graviton) under bp-ubuntu-latest-arm64 labels, priced below the x64 size with the same vCPU count: $0.0025 a minute at 2 vCPU against GitHub’s $0.005.

How is a job isolated?

Each job runs on a fresh runner that is discarded when the job ends, so nothing from one job is visible to the next. Your repository secrets stay in GitHub and reach the job the same way they do on a GitHub-hosted runner. BuildPulse runs the fleet; there is nothing to patch or secure on your side.

Does it work on public repositories?

Yes. GitHub asks you to allow self-hosted runners on public repositories first: in your organization’s Actions settings, open Runner groups, pick Default and check “Allow public repositories”.

What if it is not faster on my repository?

Change the line back. The free minutes cover the trial, and nothing else in your workflow moved.

Comparing managed runners instead? See BuildPulse vs Depot. On CircleCI or Semaphore, the same machines are priced next to those vendors' own in the CircleCI and Semaphore runner docs.

Move one workflow and time it

Change the runs-on label on one job and watch the run times next to GitHub's for a day. Everything else in your workflow stays where it is.

3,000 free minutes every month · No credit card required