Comparison
GitHub Actions runner pricing compared
What a GitHub Actions minute costs on GitHub-hosted runners and on the managed providers that replace them, how each one bills, and what you get for the price beyond compute.
Updated
How much do GitHub Actions runners cost?
A standard GitHub-hosted Linux runner with 2 cores costs $0.006 per minute, and the same runner on arm64 costs $0.005. Windows is $0.010 per minute and macOS $0.062, as of September 2026. Every plan includes some free minutes for standard runners, standard runners are free in public repositories, and GitHub does not charge per minute for self-hosted runners today.
| Capability | Label | vCPU | RAM | Per minute |
|---|---|---|---|---|
| Linux 1-core x64 | ubuntu-slim | 1 | 5 GB | $0.002 |
| Linux 2-core x64 | ubuntu-latest | 2 | 8 GB | $0.006 |
| Linux 2-core arm64 | ubuntu-24.04-arm | 2 | 8 GB | $0.005 |
| Windows 2-core x64 | windows-latest | 2 | 8 GB | $0.010 |
| Windows 2-core arm64 | windows-11-arm | 2 | 8 GB | $0.010 |
| macOS 3-core M1 | macos-latest | 3 | 7 GB | $0.062 |
| macOS 4-core Intel | macos-15-intel | 4 | 14 GB | $0.062 |
The ubuntu-slim runner is a container rather than a full virtual machine and stops jobs after 15
minutes. In public repositories the standard Linux and Windows runners get 4 vCPU and 16 GB of RAM, free of charge.
Larger runners: GitHub and CRACI by size
GitHub prices larger runners per size, from $0.012 per minute for a 4-core Linux x64 runner to $0.252 for 96 cores. CRACI charges the same $0.002 per vCPU-minute at every size from 1 to 32 vCPU, on x86-64 and ARM64 alike.
| Capability | CRACI | GitHub Linux x64 | GitHub Linux arm64 |
|---|---|---|---|
| 2 vCPU | $0.004 | $0.006 | $0.005 |
| 4 vCPU | $0.008 | $0.012 | $0.008 |
| 8 vCPU | $0.016 | $0.022 | $0.014 |
| 16 vCPU | $0.032 | $0.042 | $0.026 |
| 32 vCPU | $0.064 | $0.082 | $0.050 |
| 64 vCPU | Not offered | $0.162 | $0.098 |
| 96 vCPU | Not offered | $0.252 | Not offered |
Against GitHub on Linux x64, CRACI lists about 33% lower at 2 and 4 vCPU and about 22% lower at 32 vCPU. On ARM64 CRACI lists 20% lower at 2 vCPU and the same at 4 vCPU; above that GitHub's arm64 larger runners list lower, and at 32 vCPU CRACI costs about 28% more. Memory differs too. A CRACI compute unit is 1 vCPU with 3 GB of RAM; a standard GitHub 2-core runner has 8 GB. GitHub larger runners also need a Team or Enterprise Cloud plan and never draw on included minutes.
How GitHub bills Actions minutes
GitHub rounds each job up to the next whole minute and charges the per-minute rate of the runner it used. Minutes included in your plan are spent first, on standard runners only. For GitHub's price at every size on Linux, Windows and macOS, see GitHub Actions pricing.
- Included minutes per month: 2,000 on Free, 3,000 on Pro and Team, 50,000 on Enterprise Cloud.
- Rounding: "GitHub rounds the minutes and partial minutes each job uses up to the nearest whole minute." A 10-second lint job is billed as a full minute.
- Larger runners: "always charged for, even when used by public repositories or when you have quota available."
- Public repositories: standard GitHub-hosted runners are free.
- Self-hosted runners: GitHub's billing docs describe self-hosted usage as free. You pay for the machines.
GitHub's self-hosted runner charge: postponed, not cancelled
In December 2025, GitHub announced two changes together. Hosted runner prices dropped by up to 39% on January 1, 2026, and that cut went ahead. It also announced "a new $0.002 per minute GitHub Actions cloud platform charge" for self-hosted runner usage from March 1, 2026. The charge drew a strong reaction from teams that run their own hardware, and within days GitHub was "postponing the announced billing change for self-hosted GitHub Actions to take time to re-evaluate our approach."
As of October 2026, the charge is not in effect, GitHub's billing docs still describe self-hosted runner usage as free, and no new date has been announced. GitHub has not withdrawn the idea either. Its reasoning still stands: it says it has "real costs in running the Actions control plane" and that self-hosted usage was "largely being subsidized by the prices set for GitHub-hosted runners." Budget for it coming back in some form.
As announced, the charge would have worked like this:
- Rate: $0.002 per minute of self-hosted runner usage, on top of what the machines cost you.
- Scope: private repositories only. Runner usage in public repositories stays free.
- Included minutes: usage subject to the charge would count toward the minutes included in your plan, the same pool your GitHub-hosted jobs draw from.
- GitHub Enterprise Server: not affected.
| Capability | Platform charge per month |
|---|---|
| 10,000 minutes | $20 |
| 50,000 minutes | $100 |
| 100,000 minutes | $200 |
| 500,000 minutes | $1,000 |
For a team running 100,000 self-hosted minutes a month, that is about $200 a month, or $2,400 a year, for the same hardware it already pays for. Small next to the machines and the people who keep them running, but it removes the "self-hosted runners are free" line from the cost model.
What a job really costs: per-minute vs per-second billing
For pipelines with many short jobs, how a provider meters matters as much as its list price. A job that runs for 30 seconds is billed as one minute on GitHub, and as 30 seconds on CRACI.
Example, illustrative inputs: 20,000 jobs a month on 2 vCPU Linux x64, each running 90 seconds.
- GitHub-hosted: each job rounds up to 2 minutes, so 40,000 minutes × $0.006 = $240 before included minutes.
- CRACI: 30,000 minutes metered per second × $0.004 = $120, 50% less for the compute.
Plans change the totals. GitHub Team includes 3,000 minutes. CRACI has no monthly fee or included minutes: you pay for build minutes only. Long jobs converge toward the list-price gap, about 33% on 2 vCPU x64.
GitHub Actions pricing: what a minute costs and how to cut it
Who this is for
You run GitHub Actions and the runner is up for review. The bill has grown, jobs queue, or a customer asked for an
SBOM and provenance for each release. The managed providers on this page all plug in the same way: you connect them
to your GitHub organization and change the runs-on label on a job. Workflows, actions and the GitHub UI
stay as they are, so you can trial one job at a time.
We build CRACI, so weigh that in. Every other product is described from its own documentation and pricing pages, and we say where another option fits better.
How to choose
- Which operating systems do you need? CRACI is Linux only today; Windows and macOS are on the roadmap. GitHub, Blacksmith, Depot, Namespace and WarpBuild also offer Windows and macOS.
- What shape are your jobs? Memory per vCPU ranges from 2 GB to 4 GB across these products, so compare prices at the memory your builds need, not only the vCPU count.
- Many short jobs? Metering then matters as much as list price. GitHub rounds each job up to the whole minute; CRACI and Depot meter by the second.
- Are Docker image builds the bottleneck? CRACI offers local, remote and bind mount layer caches, and Blacksmith, Depot, Namespace and WarpBuild all have layer caching of their own.
- Do you need to show what went into a release? Only CRACI records the packages each job fetched and turns that record into an SBOM with a stated completeness.
- Do you need to control what a build can reach? CRACI, Depot and Namespace attach an egress policy to the runner. StepSecurity adds one to runners you already have.
Runner providers at a glance
CRACI, Blacksmith and WarpBuild list 2 vCPU Linux x64 below GitHub's $0.006 per minute, and Namespace lower still within plan minutes. Prices are each vendor's list prices for Linux runners in US dollars, as of September 2026 (CRACI as of October 2026).
For every size, ARM64, Windows, macOS and the CI platforms' own runners, with charts per vCPU and a cost calculator, see CI runner prices compared.
| Capability | CRACI | GitHub-hosted | Blacksmith | Depot | Namespace | WarpBuild |
|---|---|---|---|---|---|---|
| Setup | GitHub App, then runs-on: craci | Built in | GitHub App, then a new label | Connect the org, then a new label | Runner profile as the label | A new runs-on label |
| 2 vCPU Linux x64, per minute | $0.004 | $0.006 | $0.004 | $0.006 after plan minutes | $0.002 in plan, $0.003 overage | $0.004 |
| 2 vCPU Linux ARM64, per minute | $0.004 | $0.005 | $0.0025 | $0.006 | Not stated | $0.003 |
| RAM at 2 vCPU | 6 GB | 8 GB | 8 GB on x64 | 8 GB | 4 GB | 8 GB |
| Largest Linux size | 32 vCPU | 64 cores | 32 vCPU | 64 vCPU | 64 vCPU | 32 vCPU |
| Metering | Per second | Rounded up to the minute | Not stated | Per second | Per minute, 1 minute minimum | Per minute |
| Included usage | $0.004 per 2 vCPU minute, no monthly fee | 2,000 to 50,000 minutes by plan | 3,000 free minutes per month | Developer $20 per month, 2,000 minutes | Team $100 per month, 100,000 unit minutes | Not stated |
| Windows and macOS | Linux only today | Windows in beta | ||||
| Docker layer caching | Not stated | |||||
| Egress policy on the runner | Typed sources, fails closed | Azure private networking | Static IPs | IP and hostname rules | Domain rules, advisory mode | BYOC security groups |
| SBOM of what each job fetched | Completeness per job | Syft scan of images | ||||
| Signed build provenance | No signed provenance | Attestations, SLSA L2 or L3 | BuildKit image attestations |
- Included
- Partly
- Not included
- On the roadmap
The options
CRACI
A Linux GitHub Actions runner built around supply chain security that runs builds about twice as fast as GitHub-hosted runners, thanks to faster hardware, shorter queue times and caching. Sizes run from 1 to 32 compute units of 1 vCPU and 3 GB RAM each, on x86-64 and ARM64 at the same rate, though ARM64 capacity is limited. Billing is $0.002 per vCPU-minute, metered per second, with no monthly fee. While each job runs, a package-aware proxy records what it fetched, including packages restored from CI caches, and produces a CycloneDX or SPDX SBOM with a completeness state per job and per cache. Egress policies are default deny or allow, validated before the job, and fail closed. The API returns SBOMs, network traces and provenance; CRACI does not sign provenance and claims no SLSA level. Best for teams that ship software and must show what went into each release. Container layer caching is available: local, remote and bind mount caches. Watch out for Linux only today and no customer-hosted runners yet; both are on the roadmap.
GitHub-hosted runners
The default. Each job gets a fresh virtual machine, there is nothing to operate, and Linux, Windows and macOS are available. The standard 2-core Linux x64 runner is $0.006 per minute, arm64 is $0.005, and larger runners go up to 64 cores. Plans include 2,000 to 50,000 minutes a month, and standard runners are free on public repositories. For provenance, GitHub's artifact attestations provide SLSA v1.0 Build Level 2, or Level 3 with reusable workflows. Best for Windows and macOS jobs, public repositories, and usage that fits the included minutes. Watch out for per-job rounding to the whole minute. The dependency graph describes the repository, not a specific build.
CRACI vs GitHub-hosted runners
Blacksmith
A managed runner service focused on speed and cost. You install its GitHub App and swap labels. As of September 2026, 2 vCPU Ubuntu x64 is $0.004 per minute and ARM is $0.0025, with 3,000 free x64 minutes a month per organization. It offers Ubuntu on x64 and ARM from 2 to 32 vCPU, Windows in public beta, and macOS on Apple M4, plus a colocated cache and Docker layer caching on sticky disks at $0.50 per GB per month. Blacksmith says its runners are twice as fast as GitHub-hosted runners; that is its figure. Best for faster, cheaper Actions with Docker caching. Watch out for static IPs rather than an egress policy, and no build SBOM or provenance among its documented features.
Depot
Build acceleration: GitHub Actions runners, a remote Docker build service with a persistent NVMe layer cache, and
remote caching for tools like Bazel and Gradle. You connect your organization and change the label, for example to
depot-ubuntu-24.04. The 2 vCPU, 8 GB Linux runner is $0.006 per minute beyond plan minutes, Arm at the
same rate, up to 64 vCPU. Egress filters allow or deny IPs, CIDRs and hostnames on Linux runners, and
depot build can generate an SPDX SBOM of the image with Syft. Depot describes its runners as up to 3x
faster than GitHub-hosted. Best for CI dominated by Docker image builds, or runners in your own AWS
account. Watch out for an SBOM that describes the image, not the whole job.
Namespace
Managed runners on hardware Namespace operates, across Linux on AMD64 and ARM64, Windows (Team plan and above) and
macOS. You create a runner profile and reference it in runs-on. A 2 vCPU, 4 GB Linux runner is $0.002
per minute within plan minutes and $0.003 in overage; usage has a one-minute minimum per job. Cache volumes keep
data on local storage across runs. Its egress policies run in block mode or in advisory mode, which records
decisions without blocking so you can build an allowlist from real traffic. Best for low list
prices, macOS, and trialing an egress policy before enforcing it. Watch out for 2 GB of RAM per
vCPU, and egress logs that show domains rather than packages.
WarpBuild
Hosted runners, or the same runners in your own AWS, GCP or Azure account (bring your own cloud, BYOC). You change
runs-on to a WarpBuild label such as warp-ubuntu-latest-x64-2x. Linux runs on x86-64 and
arm64 from 2 vCPU and 8 GB to 32 vCPU, alongside Windows and macOS on Apple M4 Pro. As of September 2026, 2 vCPU is
$0.004 per minute on x86-64 and $0.003 on arm64, billed per minute; BYOC is $0.002 plus your cloud bill. It offers
container-layer caching, snapshot runners and remote Docker builders. WarpBuild advertises builds two to ten times
faster. Best for runners in your own cloud. Watch out for no documented per-job
egress policy on hosted runners.
We also compare CRACI one to one with RunsOn, which runs runners in your own AWS account, Ubicloud and Avrea.
The DIY option: self-hosted runners
You can also run your own. Actions Runner Controller (ARC) is a Kubernetes operator that orchestrates and scales self-hosted runners for GitHub Actions, with runner scale sets that grow and shrink with the number of workflows running. As of October 2026, GitHub's billing docs describe self-hosted runner usage as free; the platform charge it announced for self-hosted runners is postponed, not cancelled.
What GitHub does not cover is everything around the runner. Its documentation says that with self-hosted runners "you are responsible for updating the operating system and all other software," and warns that they do not have guarantees around running in ephemeral clean virtual machines. Hosts, patching, isolation and egress control are yours to build and keep running. Self-hosting is the right answer when a job must run inside your network or on hardware you own; CRACI does not offer customer-hosted runners yet; they are on the roadmap for Enterprise.
Managed vs self-hosted runners: a cost model
Adding egress control to runners you keep
If you want to stay on GitHub-hosted or self-hosted runners, StepSecurity's Harden-Runner adds egress control without changing runners. It is an agent that watches outbound connections, processes and file writes in each job, ties them to the step that caused them, and can block anything not on an allowlist after an audit period. It has full support on GitHub-hosted Linux runners, audit mode on Windows and macOS, and, on the Enterprise tier, self-hosted VMs, bare metal and ARC. As of September 2026, the Community tier is free for public repositories and Enterprise is $16 per contributing developer per month, with runner costs separate. It records destinations, processes and files, not a package-level SBOM.
How CRACI fits
Most of these products compete on speed, price and platforms, and several do that well. CRACI is about twice as fast as GitHub-hosted runners too, but it competes on what the runner records and controls. It is the only option here that turns every job into a record of the packages it fetched and runs it under an egress policy validated before it starts. That record then feeds vulnerability monitoring and SBOM exports in CycloneDX or SPDX. It automates a significant part of the software supply chain visibility and evidence that companies need for their wider Cyber Resilience Act compliance process.
CRACI is not the right choice when:
- You need Windows or macOS runners. Keep those jobs elsewhere; the choice is per job.
- Runners must live in your own cloud account or on your hardware.
- The lowest ARM64 price per minute is the goal. Blacksmith and WarpBuild list lower ARM prices.
CRACI runs builds about twice as fast as GitHub-hosted runners, thanks to faster hardware, shorter queue times and caching. The other providers' speed figures are their own, and we have not benchmarked them against CRACI. How much faster your builds get depends on the workload, so the fair test is one of your own jobs. CRACI charges only for build minutes, with no monthly fee. See CRACI pricing for current terms, or book a demo to price your own pipeline.
Weighing the runner against the rest of your security stack? See software supply chain security tools compared for how runners fit next to ASPM, SCA, package firewalls and SBOM tools.
GitHub Actions runner pricing FAQ
Short answers to the questions teams ask when the Actions bill comes up for review.
How much do GitHub Actions runners cost per minute?
As of September 2026, GitHub lists its standard 2-core Linux x64 runner at $0.006 per minute, 2-core Linux arm64 at $0.005, 2-core Windows at $0.010 and macOS at $0.062. Larger Linux x64 runners run from $0.012 for 4 cores to $0.252 for 96 cores. CRACI charges $0.002 per vCPU-minute, so its 2 vCPU runner is $0.004 per minute on x86-64 and ARM64, metered per second.
How many free GitHub Actions minutes do I get?
GitHub includes 2,000 minutes a month on Free, 3,000 on Pro and Team, and 50,000 on Enterprise Cloud. Included minutes apply to standard runners only; larger runners are always billed. Standard runners are free in public repositories.
How does GitHub round Actions minutes?
GitHub rounds the minutes and partial minutes each job uses up to the nearest whole minute. A 10-second job is billed as one minute, and a 61-second job as two. CRACI meters per second, so a short job costs only the seconds it ran.
Are self-hosted GitHub Actions runners free?
GitHub does not charge per minute for self-hosted runners as of October 2026. It announced a $0.002 per-minute platform charge for self-hosted runners in private repositories from March 1, 2026, then postponed it to re-evaluate its approach. It has not been cancelled, and no new date has been announced. You still pay for the machines and the time to maintain them.
Did GitHub change Actions pricing in 2026?
Yes. On January 1, 2026, GitHub reduced its hosted runner prices by up to 39%, which is why the standard 2-core Linux runner now lists at $0.006 per minute. The $0.002 per-minute self-hosted runner charge announced at the same time was postponed, not cancelled, and has no new date as of October 2026.
What is the cheapest GitHub Actions runner?
It depends on the size and architecture. For 2 vCPU Linux x64, Namespace lists $0.002 per minute within plan minutes, and Blacksmith, WarpBuild and CRACI list $0.004. On ARM, Blacksmith and WarpBuild list lower prices than CRACI. CRACI competes on what each build records and controls, not on being the lowest price.
Do I have to rewrite my workflows to switch runners?
No. Every managed runner on this page keeps your workflows on GitHub Actions. You connect the provider to your GitHub organization and change the runs-on label, so you can move one job at a time. On CRACI that label is runs-on: craci.
Does CRACI offer Windows or macOS runners?
Not yet. CRACI runs Linux on x86-64 and ARM64 today, with Windows and macOS on the roadmap. The runner is chosen per job, so Windows and macOS jobs can stay on GitHub-hosted runners while Linux jobs move.
See what your pipeline costs on CRACI
Book a demo and we will compare runner cost, build time and the SBOM of one of your own workflows with the runner you use today.
Book a demo