GitHub Actions vs Buildkite

GitHub Actions is the CI built into GitHub: workflows in your repository run as jobs on fresh VMs that end within 6 hours. Buildkite is a separate CI platform whose hosted agents run each pipeline job for up to 8 hours on Linux in a VM that is destroyed after, with cache volumes to carry chosen paths forward.

The companies and products

GitHub Actions

GitHub Actions is GitHub's CI/CD service: workflows in your repository run as jobs on runners that GitHub hosts or that you host yourself.

GitHub Actions is a CI service, not a sandbox API. Each job on a GitHub-hosted runner gets a new VM, Linux and Windows on Azure and macOS on GitHub's own Mac fleet, with passwordless sudo, and the VM is gone when the job ends. It is built for building, testing and deploying the code in a repository, and GitHub's own Copilot cloud agent and the Claude and Codex agents on GitHub also run on Actions runners.

Buildkite

Buildkite is a CI and software delivery platform, and hosted agents are the build machines it runs for you.

You write Buildkite pipelines, and each job runs on a fresh virtual machine that Buildkite starts for that job and destroys when it ends; only cache volumes carry files to the next job. Hosted agents come in Linux and macOS on Apple M4, with Windows in private preview, and you can also run Buildkite's agent on your own machines. It is a CI service, not an agent sandbox, so this page compares the part where they overlap: a machine where an agent or a job does its work.

Which use cases each one fits

For each use case, Battleships prices every sandbox provider on the same workload and sorts them from the cheapest monthly bill up. “100th cheapest of 377” means 99 of the other 376 providers run that workload, with every feature it needs, for less. “With limits” means the provider runs it but misses something, so it is listed after every full match. Open a use case for its whole ranking and what each provider misses.

Use case and its workloadGitHub Actions: price rankBuildkite: price rankboat: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
A software factory needs agents that keep their checkout and Docker cache between tasks; GitHub Actions starts every job clean and Buildkite keeps only cache volume paths, while boat keeps the whole disk.
298th of 367, with limits
$5,853 a month
43rd of 367, with limits
$11,648 a month
3rd cheapest of 367
$634 a month
Always-on AI employees
50 machines 24/7 · 2 vCPU / 4 GB
An assistant that lives on its machine all month fits neither CI service, since jobs stop after 6 hours on GitHub Actions and 8 on Buildkite; boat has no session cap on paid plans.
333rd of 366, with limits
$10,692 a month
351st of 366, with limits
$17,564 a month
5th cheapest of 366
$657 a month
Code interpreter bursts
100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month
294th of 345, with limits
$721 a month
315th of 345, with limits
$1,587 a month
186th of 345, with limits
$2,000 a month
Sandboxes for your users
300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month
Neither takes inbound traffic for your users, and GitHub's terms rule out offering Actions as a service; boat gives each sandbox HTTPS on up to 50 ports and raw TCP.
308th of 361, with limits
$2,892 a month
326th of 361, with limits
$4,984 a month
Cheapest of 361
$209 a month
RL rollouts
1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month
304th of 360, with limits
$14,721 a month
316th of 360, with limits
$23,881 a month
34th of 360, with limits
$2,000 a month
Agent evals
250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month
303rd of 364, with limits
$1,962 a month
324th of 364, with limits
$3,884 a month
10th cheapest of 364
$200 a month
CI runners
40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month
Both are built for CI; GitHub Actions fits a GitHub repository with no extra service, Buildkite brings its own pipelines and cache volumes, and boat runs CI jobs on full VMs that keep a warm disk.
100th cheapest of 377
$1,012 a month
203rd of 377, with limits
$2,318 a month
4th cheapest of 377
$86 a month
24/7 dev boxes
1 machine 24/7 · 4 vCPU / 8 GB
A dev box needs SSH, open ports and a disk that stays; GitHub runners have none of these and Buildkite only offers a terminal into a running job.
279th of 368, with limits
$159 a month
354th of 368, with limits
$715 a month
18th cheapest of 368
$26 a month
Computer-use agents
50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month
GitHub runners are headless and Buildkite's desktop access is for a person debugging a macOS job; boat streams a 60fps Linux desktop with computer use built in.
292nd of 369, with limits
$1,768 a month
70th of 369, with limits
$3,500 a month
6th cheapest of 369
$200 a month
Browser-use agents
50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month
135th of 367, with limits
$942 a month
142nd of 367, with limits
$1,772 a month
7th cheapest of 367
$200 a month
Scraping & bots (startup scale)
50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month
134th of 346, with limits
$1,184 a month
142nd of 346, with limits
$2,354 a month
6th cheapest of 346
$90 a month
Mass scraping & bots (undetectable)
1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month
301st of 338, with limits
$28,971 a month
317th of 338, with limits
$46,814 a month
71st of 338, with limits
$1,800 a month
Parallel red teaming
200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month
70th of 360, with limits
$467 a month
85th of 360, with limits
$1,184 a month
2nd cheapest of 360
$200 a month
GPU eval jobs
10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month
Only GitHub Actions offers a GPU, with NVIDIA T4 larger runners; Buildkite's hosted shapes and boat's are CPU only.
Can't run itCan't run itCan't run it
macOS agents
5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month
Both host macOS, GitHub on Apple silicon and Intel and Buildkite on Apple M4 with current Xcode; boat runs Linux only.
25th of 36, with limits
$1,178 a month
35th of 36, with limits
$2,310 a month
Can't run it

Key features

FeatureGitHub ActionsBuildkiteboat
Kind of productCI built into GitHub: jobs run from workflow files in a repositorySeparate CI platform: hosted agents run jobs from Buildkite pipelinesSandbox API: create, stop, fork and reach full VMs from your code
IsolationA new VM per job on Azure for Linux and Windows, GitHub's Mac cloud for macOSA VM per job, destroyed with its data after; Apple Virtualization framework on macOSFull VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts, with root and systemd
How long a job or machine runsUp to 6 hours per jobUp to 8 hours on Linux and 4 on macOS, longer on request; 4 hours on FreeNo session cap on paid plans; you set the time to live
Files between runsFresh VM each job; files carry over only through cache, artifacts or custom imagesCache volumes keep chosen paths after successful jobs, best effort, up to 14 daysThe whole disk is saved every minute and on stop; a stopped sandbox costs nothing
ForkNo; custom images are a template for new runnersEach job gets its own copy of the last committed cache volumeFork a running sandbox with its disk
Docker and nested virtualizationDocker, and /dev/kvm on Linux runners after adding the runner user to the KVM groupDocker on Linux; macOS has the Docker CLI but no daemon; /dev/kvm not documentedDocker, root, systemd and /dev/kvm on every machine
Reaching the machineNo inbound connectionsNo exposed ports; a terminal into a running job through the UI or bk job sshSSH, HTTPS URLs for up to 50 ports, raw TCP, dedicated IPv4 or IPv6
Desktop and computer useHeadless runners; browsers preinstalled for testsBrowser-based desktop access to debug a running macOS job; no computer-use API60fps Linux desktop with Chromium and a computer use API
Coding agentsCopilot cloud agent, plus Claude and Codex in preview, working on issues and pull requestsYou install Claude Code in your image or step and run it as a pipeline jobClaude Code, Codex and five more preinstalled, driven from outside with a prompt, steer and events API
Keeping API keys outSecrets enter the job as inputs or environment variables, hidden from logsAnthropic proxy: jobs call it with the job token and Buildkite sets the keyCredentials proxy for model providers and any HTTPS API; switch to another account when credits run out
Operating systemsLinux x64 and arm64, Windows x64 and arm64, macOSLinux AMD64 (ARM64 on Enterprise), macOS on Apple M4, Windows Server 2022 in private previewLinux x64 only
GPUsLinux and Windows larger runners with an NVIDIA T4NoneNone
Biggest machineLarger runners in several sizes, billed at their own ratesLinux up to 8 vCPU / 32 GB on Pro and 64 vCPU / 256 GB on Enterprise; macOS up to 12 vCPU / 56 GBUp to 16 vCPU / 32 GB on the $100 plan and above
RegionsAzure; larger runners can join your Azure network across the US, EU and APACUS East Coast onlyEU only (Germany, Finland, France), with EU data residency
Every feature Battleships tracks (43)
FeatureGitHub ActionsBuildkiteboat
Full VM (own kernel)YesYesYes
Docker insideYesYesYes
Nested virtualizationYesNoYes
RootYesNot publishedYes
SystemdNoNoYes
Desktop GUINoYesYes
BrowserYesYesYes
Computer-use APINoNoYes
SSHNoYesYes
Persistent diskNoYesYes
Pause/resumeNoNoYes
Automatic snapshotsNoYesYes
Fork/cloneNoYesYes
Live fork (no pause)NoNoYes
Memory forkNoNoNo
Custom image (Docker or snapshot)YesYesYes
≥24 h sessionsNoNoYes
Idle auto-stopYesYesNo
Wake on requestNoNoNo
HTTPS preview URLsNoNoYes
Raw TCP inboundNoNoYes
Public IPv4NoNoNo
Egress allowlistYesNoNo
Secret proxyNoYesYes
Secret proxy for any APINoNoYes
Preinstalled agentsYesNoYes
Agent harness APIYesNoYes
MCP serverYesYesNo
GPUYesNoNo
WindowsYesYesNo
Arm64YesYesNo
Self-hostingYesYesNo
BYOCNoNoNo
Open sourceYesNoNo
Scoped API keysNot publishedNot publishedYes
Spend limitsYesNot publishedYes
Usage per sandbox (API)YesNoYes
Audit logsYesNot publishedNo
SSOYesYesNo
SOC 2YesYesNo
HIPAANoNoNo
EU data residencyYesNoYes
Zero data retentionNot publishedNot publishedYes

Performance

GitHub ActionsNot measured
BuildkiteNot measured
boat26.69 runs/s

There is no comparable CPU measurement for GitHub Actions hosted runners or for Buildkite hosted agents: neither was part of the StarSling hpc-sandbox-benchmarks run. On that Node.js benchmark at 4 vCPU / 8 GB, boat did 26.69 runs per second on dedicated AMD Ryzen 9 9950X hosts.

Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. GitHub Actions and Buildkite have no published run in this suite yet, so there is no like-for-like number to compare.

Pricing in five scenarios

Each bill is priced from the providers' public price lists by the open Battleships engine, with the cheapest plan that runs the scenario.

ScenarioGitHub Actions, a monthBuildkite, a monthboat, a month
One coding agent, workdays
4 vCPU / 8 GB, 50 GB disk, 8 hours a day, 22 days a month, files kept between days
$80 · Team · with limits$166 · Pro · with limits$20 · $20/mo
One agent that never stops
4 vCPU / 8 GB, 50 GB disk, running 24/7 all month
$354 · Team · with limits$715 · Pro · with limits$26 · $20/mo
50 agents in parallel
50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside
$3,814 · Team · with limits$7,677 · Pro · with limits$317 · $20/mo × 3 seats
Sandboxes for your users
2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once
$1,092 · Enterprise Cloud · with limits$2,204 · Pro · with limits$200 · $100/mo × 2 seats
1,000 short jobs at once
2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month
$2,721 · Enterprise Cloud · with limits$4,787 · Pro · with limits$2,000 · $2000/mo · with limits

GitHub Actions: GitHub bills per minute per job, rounding each job up to the next whole minute, from $0.006 a minute for 2-core Linux. Plans include monthly minutes for standard runners only, and public repos use standard runners for free.

Buildkite: Buildkite Pro costs $30 per active user a month and includes 4,000 Linux vCPU minutes, then $0.004 per vCPU minute on Linux and $0.02 on macOS, metered to the second. Enterprise pricing is custom.

Buildkite: Plans start at $20 a month, and the whole fee is usage credit spent per second while sandboxes run. A stopped sandbox costs nothing and keeps its disk.

Limits in those scenarios

Neither CI service fits the agent scenarios as a sandbox: GitHub Actions jobs end after 6 hours with nothing kept on disk, and Buildkite jobs end after 8 hours with only cache volume paths kept. For 1,000 short jobs at once, GitHub Enterprise Cloud stops at 500 concurrent jobs, and Buildkite Pro shares one pool of 256 Linux vCPU, so most jobs wait in the queue. boat's $2,000 plan queues starts above 90 a minute and allows fewer starts a day than that burst needs.

ScenarioGitHub ActionsBuildkiteboat
One coding agent, workdays
  • Team: sessions capped at 6 h
  • missing persistent disk
  • different kind of product: CI runner
  • different kind of product: CI runner
  • files survive a stop only in cache volume paths: packages installed elsewhere reset
  • egress price not published
None that bite
One agent that never stops
  • Team: sessions capped at 6 h
  • missing persistent disk
  • different kind of product: CI runner
  • different kind of product: CI runner
  • sessions end after 8 h: needs restarts to run 24/7
  • files survive a stop only in cache volume paths: packages installed elsewhere reset
  • egress price not published
None that bite
50 agents in parallel
  • Team: sessions capped at 6 h
  • missing persistent disk
  • different kind of product: CI runner
  • different kind of product: CI runner
  • files survive a stop only in cache volume paths: packages installed elsewhere reset
  • egress price not published
None that bite
Sandboxes for your users
  • different kind of product: CI runner
  • Pro: max 128 concurrent
  • Pro: max 256 vCPU running at once (needs 600)
  • different kind of product: CI runner
  • egress price not published
None that bite
1,000 short jobs at once
  • Enterprise Cloud: max 500 concurrent
  • different kind of product: CI runner
  • Pro: max 128 concurrent
  • Pro: max 256 vCPU running at once (needs 2,000)
  • different kind of product: CI runner
  • egress price not published
  • max 2,400 starts/day (needs ~6,667)
  • max 600 starts/hour (needs ~1,000)
  • bursts above 90 starts/min are queued (a burst of 333 takes ~4 min to start)

Which one should you use?

Use GitHub Actions when

your code is on GitHub and you want CI right inside it, or you need Windows, arm64, macOS or a T4 GPU, or the Copilot, Claude or Codex agents on your pull requests.

  • Already in your GitHub repo. If your code lives on GitHub, Actions runs from pushes and pull requests with no second service to sign up for or wire up.
  • More platforms, including GPUs. Teams that need Windows on arm64, Intel macOS or an NVIDIA T4 GPU get hosted runners for each, which Buildkite does not offer.
  • Free minutes and your own network. Public repos use standard runners free, plans include minutes, and larger runners can join your Azure network outside the US.

Use Buildkite when

you want a dedicated CI platform with its own pipelines, jobs longer than 6 hours, cache volumes, macOS on Apple M4 or Linux build machines up to 64 vCPU.

  • Longer jobs. Builds that run past 6 hours fit: Buildkite Linux jobs go up to 8 hours, and support can allow longer.
  • Files that carry forward. Cache volumes keep chosen paths, such as a dependency or Git cache, for the next job without uploading them as artifacts.
  • Big Linux machines and per-second billing. Heavy builds can use up to 64 vCPU and 256 GB on Enterprise, billed per second with no minimum per job.

Where boat fits

GitHub Actions and Buildkite are both CI services: each job gets a fresh machine that is thrown away when it ends. If what you are really running is agents that work for hours or days, keep their files, serve a preview or need a desktop, look at boat. It is not a CI service, but it gives each agent one full Linux VM that stays.

A machine that keeps its state

Jobs end after 6 hours on GitHub Actions and 8 on Buildkite, and each starts clean apart from caches. An agent reinstalls tools and reclones every run; boat saves the whole disk every minute and has no session cap on paid plans.

Reachable from outside

Neither CI service accepts inbound connections, so a preview server or webhook needs a third-party tunnel inside the job. boat gives each sandbox SSH, HTTPS URLs on up to 50 ports and raw TCP.

Agents driven from outside, keys kept out

On both, an agent is a job you start and read through logs, with secrets inside the VM or a proxy for Anthropic only. boat lets you prompt and steer seven preinstalled agents by API, and its proxy covers any HTTPS API.

Use boat when what you are running is agents on Linux for hours or days: one full VM that keeps its disk, Docker and /dev/kvm, a 60fps desktop, URLs you can reach and coding agents you drive from outside. Compare it one to one: boat vs GitHub Actions and boat vs Buildkite.

Questions people ask

Is GitHub Actions cheaper than Buildkite?

In the scenarios we priced, GitHub Actions came out lower: one agent running all month is $354 on GitHub Actions and $715 on Buildkite, and 50 agents in parallel are $3,814 versus $7,677. Neither fits those agent scenarios, and boat came to $26 and $317 for the same two.

Which is faster, GitHub Actions or Buildkite?

We have no comparable CPU measurement for either one. boat did 26.69 runs per second on the StarSling Node.js benchmark at 4 vCPU / 8 GB.

How long can a job run on each?

GitHub-hosted runners stop a job after 6 hours. Buildkite hosted agents allow up to 8 hours on Linux and 4 on macOS, and support can allow longer runs. A boat sandbox has no session cap on paid plans.

Do files persist between jobs?

On GitHub Actions each job starts on a new VM, and files carry over only through the cache, artifacts or a custom image. On Buildkite, paths you declare as cache volumes are saved after successful jobs, best effort, for up to 14 days. boat saves the whole disk every minute and on stop.

Can GitHub Actions and Buildkite run Docker and Android emulators?

Both run Docker on Linux. GitHub Linux runners expose KVM for Android emulators once you add the runner user to the KVM group, while Buildkite does not document /dev/kvm. boat has Docker and /dev/kvm on every machine.

Can I run AI coding agents on them?

Yes, as CI jobs: GitHub runs its Copilot cloud agent and Claude and Codex on Actions runners, and on Buildkite you install Claude Code in a step and call its Anthropic proxy. The agent stops when the job ends. On boat seven agents are preinstalled and you prompt and steer them by API.

Try boat

Install the CLI, then run boat new.

7-day free trial

More comparisons