Semaphore vs GitHub Actions with compiler.dev runners
Last updated
Semaphore is a hosted CI/CD service with transparent per-minute machine pricing and a pipeline model built around blocks and parallel jobs. It is a credible alternative to GitHub Actions, particularly for teams that care about fast test parallelism. If your code is on GitHub, though, you can usually get the same speed gain by changing the runner rather than the platform. Here is how they compare.
How Semaphore pricing works
Semaphore's pricing page (checked October 2026) lists pay-per-minute compute:
| Machine | Per minute |
|---|---|
| Ubuntu ARM, 2 vCPU | $0.003 |
| Ubuntu ARM, 4 vCPU | $0.006 |
| Ubuntu ARM, 8 vCPU | $0.012 |
| Ubuntu x64, 2 vCPU | $0.0075 |
| Ubuntu x64, 4 vCPU | $0.015 |
| macOS, 4 vCPU | $0.09 |
| Self-hosted agent, any machine | $0.0025 |
The free tier is $15 of credit per month, which the page says is roughly 2,000 minutes on x64 2 vCPU. Other limits listed: 20 concurrent jobs by default (more on request), 20 GB a month of egress and 100 GB of artifact storage included, then $0.35 per GB egress and $0.07 per GB storage, and 9.6 GB of cache storage per project. Optional extras include a dedicated cache server or private Docker registry at $400 a month each, and support tiers from $50 a month.
The page does not list an 8 vCPU x64 option, so the closest like-for-like comparison with our default machine is the 4 vCPU x64 at $0.015.
Side by side
| Semaphore | GitHub Actions + compiler.dev | |
|---|---|---|
| Pricing model | Pay per minute by machine type, free credit monthly | GitHub plan, plus per-minute runner credit |
| Linux x64 per minute | $0.0075 (2 vCPU), $0.015 (4 vCPU) | $0.003 (2 vCPU), $0.006 (4 vCPU), $0.012 (8 vCPU) |
| macOS | $0.09/min (4 vCPU) | $0.028/min (7-core), $0.055/min (14-core), early access |
| Config | .semaphore/semaphore.yml, blocks and jobs | .github/workflows/*.yml |
| Caching | cache store / cache restore CLI | actions/cache plus machine caches |
| Self-hosted | $0.0025/min agent fee | Self-hosted runners |
| Ecosystem | Smaller, focused on core CI features | Largest marketplace |
| Where it runs | Semaphore cloud, or your own agents | GitHub, jobs on compiler.dev VMs |
Per-minute prices only mean something at equal speed. A 4 vCPU Semaphore minute and a 4 vCPU compiler.dev minute ($0.006) are the direct comparison; our 8 vCPU box at $0.012 is cheaper per minute than Semaphore's 4 vCPU.
Where Semaphore is genuinely better
- Transparent, simple pricing. Machine type and price are on one page, with no credit conversion and no per-seat fee on the pay-per-minute model.
- Cheap ARM. Ubuntu ARM at $0.003 for 2 vCPU is a low rate if you build for ARM.
- Pipeline model. Blocks run in sequence or in parallel, and jobs inside a block fan out. Promotions model deployment gates in a clear way.
- Test parallelism features. Semaphore has built-in tooling for splitting tests across parallel jobs and its own test reports and flaky test views.
- Self-hosted agents for a flat fee. $0.0025 per minute on any machine is a simple model for hybrid setups.
The case for GitHub Actions on faster runners
Actions gives you native pull request integration, required checks, merge queue and the biggest library of reusable steps. A second CI means a second place to read logs, a second set of secrets and webhook plumbing.
The main objection is runner speed and cost. compiler.dev runs standard workflows on 8 vCPU / 16 GB Linux, a fresh VM per job, at $0.012 per minute, with dependency, git and Docker layer caches ready on the machine. GitHub's own 8-core larger runner is $0.022. In our benchmarks, Next.js + Go + Kafka + Redis went from 1m16s to 0m44s and Turborepo + Next.js + tRPC + MySQL from 3m29s to 1m53s versus GitHub-hosted runners. We did not benchmark Semaphore. If Semaphore's parallel blocks are what make you fast today, replicate that with a matrix, see test sharding on GitHub Actions.
Rates are on the pricing page, and the runner size picker helps you choose a size.
Migration sketch
A Semaphore pipeline:
version: v1.0
name: CI
agent:
machine:
type: e1-standard-4
os_image: ubuntu2204
blocks:
- name: Test
task:
prologue:
commands:
- checkout
- cache restore deps-$(checksum package-lock.json)
- npm ci
- cache store deps-$(checksum package-lock.json) node_modules
jobs:
- name: Unit
commands: [npm run test:unit]
- name: Lint
commands: [npm run lint]
The GitHub Actions equivalent:
name: ci
on: [push, pull_request]
jobs:
test:
runs-on: [self-hosted, Linux, compiler-ci]
strategy:
matrix:
task: [test:unit, lint]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run ${{ matrix.task }}
Things to adjust:
- Machine
typebecomes the runner you pick. Our default is 8 vCPU; pick another size if your job is small. - A block with a prologue that every job shares becomes repeated setup steps, since each job gets a clean machine. Caches keep that cheap, see caching guide.
- Promotions become jobs with
needs:and anenvironmentwith approvals. - Secrets move from Semaphore secrets to GitHub secrets.
Install the GitHub App when you are ready to try it.
FAQ
Is Semaphore free?
There is $15 of free credit a month, which Semaphore says is about 2,000 minutes on x64 2 vCPU (checked October 2026). After that it is pay per minute.
Is Semaphore cheaper than GitHub Actions?
On 2 vCPU x64, Semaphore is $0.0075 per minute against GitHub's $0.006. On larger machines the answer depends on the provider. Use the cost calculator with your own minutes.
Does Semaphore work with GitHub?
Yes, it connects to GitHub repositories. Results show as checks, though as a separate system alongside Actions.
How hard is it to migrate from Semaphore?
Usually small. The pipeline concepts map to jobs, matrices and needs. Plan more time for promotions and any custom Docker images.
Related
- Actuated vs compiler.dev: MicroVM RunnersActuated vs compiler.dev: microVM runners on servers you own at $150 a month per server vs hosted per-minute runners. Costs, effort and who each suits.
- Bitbucket Pipelines vs GitHub Actions with compiler.dev runnersBitbucket Pipelines vs GitHub Actions on compiler.dev runners: per-user pricing, build minutes, Jira integration, and a bitbucket-pipelines.yml migration.
- Blacksmith vs compiler.dev: Runner Price and SpeedBlacksmith vs compiler.dev for GitHub Actions runners: public prices checked October 2026, caching, macOS, free tiers, fallback, and who each suits.
- BuildJet vs compiler.dev: After the ShutdownBuildJet shut down its GitHub Actions runners on 31 March 2026. Here is how compiler.dev compares as a replacement, and the label changes you need.