If your CircleCI bill runs past a few thousand dollars a month, or your team runs out of credits before the month ends, look at where the credits go. Most of them pay for compute minutes on cloud resource classes. CircleCI self-hosted runners take those minutes off the credit meter: you bring the machines, and CircleCI keeps orchestrating the pipeline. CircleCI ships the runner agent and leaves the fleet and its scaling to you. cirunner.dev plans to run that fleet for you. CircleCI is on our roadmap and does not work with cirunner.dev today. GitHub Actions and GitLab CI are live in early access; if you want CircleCI next, vote for it on the early-access form.
Where your CircleCI credits go
CircleCI's cloud executors come in resource classes, and each class costs a set number of credits per minute. Bigger classes cost more per minute. A compile-heavy job that runs for 40 minutes, many times a day, adds up across a month, and the credit balance you bought runs low. Teams then buy more credits, cut pipeline runs, or move jobs to smaller classes and wait longer.
Runner jobs follow different billing. According to CircleCI, runner execution does not consume compute credits. Your account still needs at least one credit, storage and network egress can still cost credits, and the number of runner tasks you can run at once depends on your plan (Free, Performance or Scale). Check CircleCI's pricing page for the current concurrency numbers.
That moves the cost of those jobs from credits to whoever runs the machines. If you run them yourself, you pay your cloud bill and the engineering hours to keep the fleet going.
What running a CircleCI runner involves today
- Create a resource class named
namespace/namein the web app or withcircleci runner resource-class create, and store the resource class token CircleCI shows once. - Install machine runner 3 on Linux, macOS or Windows, or run container runner on Kubernetes through the Helm chart.
- For one job per machine, set
runner.mode: single-taskand destroy the VM when the process exits. CircleCI does not ship a VM autoscaler for machine runner: you poll the unclaimed-tasks API per resource class and resize a cloud autoscaling group yourself. - Install compilers and tools on the host image, since machine runner jobs use the host as it is.
Our CircleCI self-hosted runners guide covers the install on each OS, container runner and the scaling setup.
How a custom CircleCI runner from cirunner.dev will work
Once we support CircleCI, you will create a resource class such as my-org/cirunner, paste its token into cirunner.dev and pick the machine: cores and memory, x86 or ARM, a GPU if you need one. You keep your CircleCI config. Jobs target the class the same way they target any self-hosted runner, with machine: true and resource_class: my-org/cirunner. For each unclaimed task we start a fresh VM running a single-task runner, and we destroy the VM after the job. A build cache persists between jobs. CircleCI does not charge compute credits for that runner time; we bill you per compute minute, and when the queue is empty no VMs run.
CircleCI cloud vs. your own runners vs. cirunner.dev
| CircleCI cloud resource classes | Your own self-hosted runners | cirunner.dev (planned) | |
|---|---|---|---|
| Billing | Credits per minute, higher for bigger classes | No compute credits for runner time, plus your cloud bill and hours | No compute credits for runner time, our per-minute price |
| Machine | CircleCI's resource class catalog | Whatever you provision | You pick cores and memory, x86 or ARM, optional GPU |
| Scaling | CircleCI handles it | You poll the API and resize instance groups | We scale with your queue, down to zero |
| Isolation | Fresh environment per job | Single-task mode plus your own teardown | Fresh VM per job, destroyed afterwards |
| Upkeep | None | Host images, runner upgrades, tokens | None on your side |
Who it is for
A good fit if:
- Your CircleCI bill runs to thousands of dollars a month, or you run out of credits before the month ends.
- Most of those credits go to long jobs: C, C++, Rust, Android/Gradle, a game engine or CUDA builds.
- You want those jobs off the credit meter without building and running the runner fleet yourself.
Not a fit if:
- Your jobs finish in a few minutes on a medium Docker resource class and your plan's credits cover them.
- You need a CircleCI runner this week. We are not there yet; the guide gets you running on your own machines.
FAQ
Are CircleCI self-hosted runners free?
CircleCI does not charge compute credits for runner execution on the Free, Performance and Scale plans. You need at least one credit on the account, storage and network usage can cost credits, and you pay for the machines yourself, or pay us per compute minute once we support CircleCI.
How many CircleCI runners can I run at once?
CircleCI sets a runner concurrency limit per plan, with Free lower than Performance and Scale. You can connect more runners than the limit; only the limit's worth of tasks run at the same time. Check the CircleCI pricing page for the numbers on your plan.
Can I get a managed CircleCI runner today?
Not from us yet. CircleCI is on the cirunner.dev roadmap. Vote for it on the early-access form and we will tell you when it ships. If you also use GitHub Actions, see managed GitHub Actions runners, which are live in early access.
Does a CircleCI machine runner support ARM?
Yes. Machine runner supports ARM64 Linux and Apple silicon Macs, and container runner supports ARM64 Kubernetes nodes.
Want managed CircleCI runners?
CircleCI is on the roadmap. Vote for it on the early-access form and tell us what your monthly CircleCI bill looks like, so we know which platform to add next.
Vote for CircleCI runners