Keep the file. Change everything else.
Apex Actions is an independent CI service that runs workflows written for GitHub Actions — the same YAML, the same marketplace actions, a check run on the pull request for every job. Jobs start in seconds on a warm runner, one subscription covers everyone, and every run tells you why it happened, which test flaked and where the time went.
Typically about a third less than the cost of the GitHub-hosted runner minutes you pay for, at the usage each plan is sized for.How we compare*
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
- run: pnpm test✓ test · passed in 18s · why it ran, what was slow, what flaked
Why teams switch
- About a third less
- than the cost of the GitHub-hosted runner minutes you pay for
- At the usage each plan is sized for.*
- Seconds
- from push to a running job on a warm runner; about a minute when a machine has to start
- Same YAML
- your Linux workflows run as written: no rewrite, no fork, no migration branch
Compared against GitHub-hosted Linux (x64) list rates published at github.com/pricing, retrieved 6 September 2026 — x64 because that is the runner `ubuntu-latest` uses, so it is what your workflows cost on GitHub today without changing them. GitHub's arm64 runners are cheaper per minute and require changing `runs-on`. Runner minutes only — GitHub seat licences are excluded, because you keep paying them after you switch. GitHub and GitHub Actions are trademarks of GitHub, Inc. Apex Actions is not affiliated with GitHub, Inc.
How it works
Six steps, in this order. Two of them happen on github.com, and none of them change your workflow files.
Pick a plan
Every plan starts with a free trial, without a card. Start here — the trial is attached to a plan, so this one comes first.
Sign in with GitHub
Continue with GitHub, using the account you already have. We ask first, so everything after it happens under your name.
Create your Account
Your company’s Account in Apex — its name and billing address. You are its Owner, and it can hold several GitHub organisations on one bill.
Install the App
Connect a GitHub organization sends you to GitHub. Choose an organisation you own, or your personal account, and its repositories; GitHub returns you to Apex, which connects it to your Account. Your workflow files stay exactly as they are.
Start your trial
Continue to your trial, choose the plan — each shows its price — and accept the terms. The trial starts on your Account, and it is still no card.
Push
The next push produces a check run for each job, with each step’s result and time and any annotations. The full log is in the Apex dashboard.
Eight questions you ask every week
The right-hand column is what an Apex run tells you without being asked. The left is the workflow most teams have built around GitHub-hosted runners.
Why did nothing run?
- GitHub-hosted
- An empty run list — you open the workflow file and work out which filter said no
- Apex Actions
- Every push leaves a verdict for every workflow, including the ones that ran nothing, naming the filter that said no
Which test is flaky?
- GitHub-hosted
- Re-run the job and see whether it passes the second time; keep a list of the ones that do
- Apex Actions
- Named automatically: a test that disagreed with itself at the same commit. A warning on the check run, never a second failure
Why was this run slow?
- GitHub-hosted
- Step timings are on the run; comparing them with last week is yours to do
- Apex Actions
- Every step timed against its own history, per matrix leg; the slower ones called out on the run
Reproduce a failed job locally
- GitHub-hosted
- Rebuild the environment by hand from the workflow file
- Apex Actions
- The exact command, from the stored run — secrets named, never carried. Not yet available to customer accounts
Larger runners
- GitHub-hosted
- A higher per-minute rate for each size
- Apex Actions
- Included in the plan; a 4-core job draws 2× from the allowance
Time to first job
- GitHub-hosted
- A queue position at busy hours
- Apex Actions
- Seconds on a warm runner; about a minute when one has to start
Your workflow files
- GitHub-hosted
- As they are
- Apex Actions
- As they are — same YAML, same actions, a check run per job
The bill
- GitHub-hosted
- Per minute, per size, plus a seat for each person
- Apex Actions
- One subscription with included minutes, unlimited people
| Question | GitHub-hosted | Apex Actions |
|---|---|---|
| Why did nothing run? | An empty run list — you open the workflow file and work out which filter said no | Every push leaves a verdict for every workflow, including the ones that ran nothing, naming the filter that said no |
| Which test is flaky? | Re-run the job and see whether it passes the second time; keep a list of the ones that do | Named automatically: a test that disagreed with itself at the same commit. A warning on the check run, never a second failure |
| Why was this run slow? | Step timings are on the run; comparing them with last week is yours to do | Every step timed against its own history, per matrix leg; the slower ones called out on the run |
| Reproduce a failed job locally | Rebuild the environment by hand from the workflow file | The exact command, from the stored run — secrets named, never carried. Not yet available to customer accounts |
| Larger runners | A higher per-minute rate for each size | Included in the plan; a 4-core job draws 2× from the allowance |
| Time to first job | A queue position at busy hours | Seconds on a warm runner; about a minute when one has to start |
| Your workflow files | As they are | As they are — same YAML, same actions, a check run per job |
| The bill | Per minute, per size, plus a seat for each person | One subscription with included minutes, unlimited people |
Same workflows. One subscription. Unlimited people.
GitHub and GitHub Actions are trademarks of GitHub, Inc. Apex Actions is not affiliated with GitHub, Inc.
Features
Everything your CI should have done already
Jobs start in seconds
A job starts on a warm runner in seconds, or on a new machine in about a minute.
Learn moreOne subscription, not a meter
A monthly plan with included minutes, and larger runners that draw from the same allowance.
Learn moreRun it before you push
The engine runs on your machine too — validate as you type, run the job locally, push once.
Learn moreYour workflows, unchanged
Same YAML, same marketplace actions, a check run per job. Pick a plan, create your Account, install the App, start the trial, and push.
Learn moreWhy did this run happen?
A verdict for every workflow, flaky tests named, every step timed against history, and a one-line local repro.
Learn moreSecure by default
OIDC without long-lived keys, protected environments, resolved permissions, and secrets that never touch a log.
Learn more
Same workflows. One subscription.
Every plan starts with a 10-day trial, without a card.