GitHub Actions vs CircleCI

GitHub Actions is CI built into GitHub, with jobs of up to 6 hours on runners in Azure and an open-source runner you can host for free. CircleCI is a separate CI platform that works with your Git host, with jobs of 1 to 5 hours by plan, newer M4 Pro Macs, more GPU types and a self-hosted Server edition.

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.

CircleCI

CircleCI is a CI and CD platform that runs your pipeline jobs on machines it hosts, or on runners you host.

You describe jobs in a config file, and each job runs on a fresh Docker container or a machine VM (Linux, Arm, Windows, macOS on Apple M4 Pro, or GPU on Scale), then the machine is discarded. Files move between jobs only through caches, workspaces and artifacts. It is a CI service, not an agent sandbox, so this page compares where they overlap: a machine where a job or an agent does its work. CircleCI also has Chunk, a toolkit that starts its own agent tasks in CircleCI Cloud from a prompt.

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 rankCircleCI: price rankboat: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
A coding agent that builds a whole app needs one machine for hours with its files in place, and both throw the machine away after each job, at 6 hours on GitHub Actions and 3 hours on CircleCI Performance.
298th of 367, with limits
$5,853 a month
333rd of 367, with limits
$8,692 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, while boat has no session cap on paid plans and keeps the disk.
333rd of 366, with limits
$10,692 a month
340th of 366, with limits
$13,137 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
285th of 345, with limits
$572 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
316th of 361, with limits
$3,702 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
310th of 360, with limits
$17,882 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
318th of 364, with limits
$2,877 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
This is what both are built for; in our CI runners scenario GitHub Actions comes to $1,012 a month and CircleCI to $4,302, while boat runs the same jobs on full VMs for $86 but has no pipeline service.
100th cheapest of 377
$1,012 a month
136th cheapest of 377
$4,302 a month
4th cheapest of 377
$86 a month
24/7 dev boxes
1 machine 24/7 · 4 vCPU / 8 GB
A dev box has to stay up and keep what you installed; both CI services start each job from a fresh image, and only CircleCI offers SSH, through a job rerun.
279th of 368, with limits
$159 a month
197th of 368, with limits
$508 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
Both run headless jobs with no desktop to drive, while boat streams a 60fps Linux desktop with Chromium and computer use.
292nd of 369, with limits
$1,768 a month
320th of 369, with limits
$2,589 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
116th of 367, with limits
$1,293 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
70th cheapest of 346
$860 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
274th of 338, with limits
$17,532 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
80th of 360, with limits
$852 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
Both have GPU runners for CI, a T4 on GitHub Team and Enterprise and T4, A10G and V100 classes on CircleCI Scale, but neither is priced in this scenario, and boat has no GPUs.
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 Actions on M1, M2 Pro and Intel runners, CircleCI on Apple M4 Pro with Xcode; boat runs Linux only.
25th of 36, with limits
$1,178 a month
34th of 36, with limits
$2,262 a month
Can't run it

Key features

FeatureGitHub ActionsCircleCIboat
Kind of productCI service built into GitHub; workflows live in the repositorySeparate CI platform; pipelines run from a config file in your repositorySandbox API: create, stop, fork and reach machines from your code
IsolationNew VM per job on Azure (Linux, Windows) or GitHub's Mac cloud, with passwordless sudoContainers on the Docker executor; a fresh VM per job on machine, Windows and macOS executorsFull VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts, with root and systemd
How long one job or machine runsUp to 6 hours per job on every plan1 hour on Free, 3 on Performance, 5 on ScaleNo session cap on paid plans; you set the time to live
Files after a runFresh VM each job; carry files with cache, artifacts or custom imagesMachine is discarded; carry paths with caches, workspaces and artifactsWhole disk saved every minute and on stop; a stopped sandbox costs nothing
ForkNo; custom images are a template for new larger runnersNo fork of a job; Chunk sidecar snapshots replace the source sidecarFork a running sandbox with its disk
Docker and nested virtualizationDocker and KVM on Linux runners, after adding the runner user to the KVM groupDocker and sudo on machine executors; nested virtualization on the Android machine imageDocker, root, systemd and /dev/kvm on every machine
Getting into the machineNo inbound connections and no first-party SSHRerun a job with SSH, for the user who started it; no exposed portsSSH, HTTPS URLs for up to 50 ports, raw TCP, dedicated IPv4 or IPv6
Desktop and computer useHeadless runners; browsers preinstalled for testsHeadless jobs; browsers in images for testsLinux desktop streamed at 60fps, Chromium, computer use API
Coding agentsCopilot cloud agent, plus Claude and Codex in public preview, working on issues and pull requests on Actions runnersChunk starts CircleCI's own agent tasks from a prompt; other agents you install in a job yourselfClaude Code, Codex and five more preinstalled, driven from outside with a prompt, steer and events API
Keeping API keys out of the machineSecrets enter the job as inputs or environment variablesContexts inject secrets as environment variables; OIDC for cloud loginsCredentials proxy for model providers and any HTTPS API; switch a credential to another account when credits run out
Operating systemsLinux x64 and arm64, Windows x64 and arm64, macOS on M1, M2 Pro and IntelLinux on x86 and Arm, Windows, macOS on Apple M4 Pro with XcodeLinux x64 only
GPUsNVIDIA T4 larger runners on Team and Enterprise CloudP4, T4, A10G and V100 classes on the Scale planNone
Self-hostingOpen-source runner under MIT on your own machines, free to useSelf-hosted runners, and CircleCI Server on your own Kubernetes on AWS or GCPNo
RegionsAzure; larger runners can join your Azure network in regions across the US, EU and APACUS only: AWS us-east-1 and us-east-2, GCP us-east1 and us-central1EU only (Germany, Finland, France), with EU data residency
Every feature Battleships tracks (43)
FeatureGitHub ActionsCircleCIboat
Full VM (own kernel)YesYesYes
Docker insideYesYesYes
Nested virtualizationYesYesYes
RootYesNot publishedYes
SystemdNoNoYes
Desktop GUINoNoYes
BrowserYesYesYes
Computer-use APINoNoYes
SSHNoYesYes
Persistent diskNoNoYes
Pause/resumeNoNoYes
Automatic snapshotsNoNoYes
Fork/cloneNoNoYes
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 proxyNoNoYes
Secret proxy for any APINoNoYes
Preinstalled agentsYesNoYes
Agent harness APIYesYesYes
MCP serverYesYesNo
GPUYesYesNo
WindowsYesYesNo
Arm64YesYesNo
Self-hostingYesYesNo
BYOCNoNoNo
Open sourceYesNoNo
Scoped API keysNot publishedNot publishedYes
Spend limitsYesNot publishedYes
Usage per sandbox (API)YesYesYes
Audit logsYesYesNo
SSOYesYesNo
SOC 2YesYesNo
HIPAANoNoNo
EU data residencyYesNoYes
Zero data retentionNot publishedNot publishedYes

Performance

GitHub ActionsNot measured
CircleCINot measured
boat26.69 runs/s

There is no comparable CPU measurement for GitHub Actions runners or CircleCI executors: neither was part of the StarSling hpc-sandbox-benchmarks run. On that Node.js build-and-test 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 CircleCI 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 monthCircleCI, 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$96 · Performance · 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$508 · Performance · 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$5,714 · Performance · 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$1,617 · Performance · 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$3,562 · Performance · 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, such as 2,000 on Free, and larger and GPU runners are always billed.

CircleCI: CircleCI bills in credits per minute for the machine class a job uses. Free includes 30,000 credits a month, Performance starts at $15 a month, and more credits cost $15 per 25,000; Scale is custom and billed annually.

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

Limits in those scenarios

For agent work the job limit bites first: 6 hours on GitHub Actions and 3 hours on CircleCI Performance, after which the machine and everything on it is gone, so none of the agent scenarios fit either one as priced. For many jobs at once, GitHub stops at 500 concurrent jobs on Enterprise Cloud and CircleCI at 80 on Performance, so 1,000 short jobs wait in a queue on both. boat's limits are a sandbox count per plan and starts per minute, and its $2,000 plan queues starts above 90 a minute.

ScenarioGitHub ActionsCircleCIboat
One coding agent, workdays
  • Team: sessions capped at 6 h
  • missing persistent disk
  • different kind of product: CI runner
  • Performance: sessions capped at 3 h
  • missing persistent disk
  • different kind of product: CI runner
None that bite
One agent that never stops
  • Team: sessions capped at 6 h
  • missing persistent disk
  • different kind of product: CI runner
  • Performance: sessions capped at 3 h
  • missing persistent disk
  • different kind of product: CI runner
None that bite
50 agents in parallel
  • Team: sessions capped at 6 h
  • missing persistent disk
  • different kind of product: CI runner
  • Performance: sessions capped at 3 h
  • missing persistent disk
  • different kind of product: CI runner
None that bite
Sandboxes for your users
  • different kind of product: CI runner
  • Performance: max 80 concurrent
  • different kind of product: CI runner
None that bite
1,000 short jobs at once
  • Enterprise Cloud: max 500 concurrent
  • different kind of product: CI runner
  • Performance: max 80 concurrent
  • different kind of product: CI runner
  • 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 lives on GitHub and you want CI with no extra service, jobs up to 6 hours, free self-hosted runners, or Copilot, Claude and Codex working on your issues and pull requests.

  • Already inside GitHub. If your code is on GitHub, workflows run from pushes and pull requests with no second service, account or webhook to set up.
  • A free runner you host. Teams with their own machines can run the open-source runner on them, and GitHub charges nothing for those minutes.
  • Longer jobs and more regions. Jobs can run up to 6 hours on any plan, and larger runners can join your Azure network in the US, EU or APAC.

Use CircleCI when

you want a CI platform apart from your Git host, Apple M4 Pro Macs for iOS builds, more GPU types, SSH into a failed job, or the whole service on your own Kubernetes.

  • Newer Macs for Apple builds. Teams building iOS or Mac apps get Apple M4 Pro machines with many Xcode versions, even one job at a time on Free.
  • More GPU choices. Teams whose tests need a GPU can pick T4, A10G or V100 classes on the Scale plan.
  • SSH into a failed job, or host the whole platform. You can rerun a job with SSH to debug it, and CircleCI Server runs the whole service on your own Kubernetes.

Where boat fits

Both are CI services, and for building and testing code you should pick one of them. If what you are really running is AI agents that work for hours, keep their files, run servers people visit or click through a browser, both CI services make you squeeze that into short jobs on throwaway machines. boat gives each agent a full Linux VM that stays.

A machine that outlives the job

An agent on GitHub Actions stops at 6 hours, and on CircleCI Performance at 3. Both throw the machine away, so the next job reinstalls tools and reclones the repo, or you pay to save and restore caches each time.

Reachable from outside, with a desktop

Neither takes inbound traffic: GitHub runners have no ports or SSH, and CircleCI only lets the job's author SSH into a rerun. A preview server or a webhook needs a third-party tunnel, and there is no screen for computer use.

Agents driven from outside, keys kept out

GitHub's agents work through issues and pull requests, and CircleCI's Chunk runs only its own tasks. Both put secrets in the job as environment variables, where an agent hit by a prompt injection can read them.

Use boat when what you run is AI agents on Linux: one full VM that keeps its disk and runs past any job limit, with Docker and /dev/kvm, a 60fps desktop, URLs you can reach and real API keys kept out of the machine. Compare it one to one: boat vs GitHub Actions and boat vs CircleCI.

Questions people ask

Is GitHub Actions cheaper than CircleCI?

In our CI runners scenario, yes: GitHub Actions comes to $1,012 a month against $4,302 on CircleCI. For one coding agent on workdays it is $80 against $96, though neither fits that job, because both cap how long a job runs. boat runs the CI scenario for $86 a month.

Which is faster, GitHub Actions or CircleCI?

We have no comparable CPU measurement for either: neither was part of the hpc-sandbox-benchmarks run. boat did 26.69 runs per second on that test at 4 vCPU / 8 GB.

How long can a job run on each?

Up to 6 hours on GitHub Actions on every plan. On CircleCI it is 1 hour on Free, 3 on Performance and 5 on Scale. A boat sandbox has no session cap on paid plans.

Can GitHub Actions and CircleCI run Docker?

Yes. Both run Docker on their Linux VMs, and both support KVM for Android emulators: GitHub after you add the runner user to the KVM group, CircleCI on its Android machine image. boat has Docker, systemd and /dev/kvm on every machine.

Can I run AI coding agents on GitHub Actions or CircleCI?

GitHub runs Copilot, and Claude and Codex in preview, on Actions runners for work on issues and pull requests. CircleCI has Chunk for its own agent tasks, and on either you can install an agent as a job step. The run ends with the job, and the agent can read the secrets passed in.

Is boat SOC 2 compliant?

SOC 2 is in progress. We're open about where we stand: live status at status.ascii.dev and our data retention policy at docs.boat.dev/data-retention.

Try boat

Install the CLI, then run boat new.

7-day free trial

More comparisons