Why Apex
Why Apex instead of GitHub-hosted runners
The same workflow file, jobs that start in seconds on a warm runner, one subscription with included minutes, and a run that tells you what happened.
Keep the file, change the runner
GitHub Actions won because the workflow file is good. Nobody wants to rewrite it, and with Apex nobody has to: the same YAML, the same marketplace actions, and a check run on the pull request for every job.
What changes is everything around the file.
Jobs start in seconds on a warm runner
A job starts as soon as a runner is free. A machine that has just finished a job stays up for five minutes and takes the next one at once; when none is free, one is started for the job, which takes about a minute. Larger runners are one label away and included in the plan. Every step is timed against its own history, so the slow part of a run is named rather than searched for.
One subscription, not a meter
Per-minute, per-size billing turns a busy week into an expensive one and makes a bigger machine a budget conversation. Each Apex plan includes a monthly allowance of standard minutes. A 4-core runner draws two and an 8-core four, and minutes past the allowance cost half GitHub's standard rate. Across the teams we have modelled, that comes to about half the cost of the GitHub-hosted runner minutes they were paying for, at the usage each plan is sized for — with larger runners drawing from the allowance rather than billed at their own rate. How we compare sets out exactly what that measures and the cases where it does not hold.
It tells you what happened
Four questions come up constantly on any CI, and answering them today means reading a log, re-running a job to see whether it fails twice, or rebuilding an environment by hand.
Apex answers them on the run itself: a verdict for every workflow on every push naming the filter that
said no, flaky tests named as a disagreement at one commit, every step timed against its own history,
and a one-line local repro with secrets named and never carried (apex reproduce, not yet available to
customer accounts).
You can run it before you push
The engine that plans your runs also runs on your laptop and in your editor. apex validate points at
the line, apex lsp puts completion and hover on workflow files, and apex run executes the whole job
locally. The push-and-see loop stops being how workflows get written. The apex CLI is on npm as
@apex-actions/cli. See what that looks like.
Reversible
Once you are set up, disable Actions on the moved repositories and each push runs once, on Apex. To go back, uninstall the App and re-enable Actions, and the next push runs on GitHub-hosted runners. There is no migration project because there is no migration.
Same workflows. One subscription.
Every plan starts with a 10-day trial, without a card.