BerryBox vs.
self-hosted runners.
Same runner, no fleet.
Side by side
What you run,
and what you pay for.
Setup
BerryBox
Install the GitHub App, add credit and change runs-on to a berrybox-* label.
Self-hosted runner
Provision machines and install the runner on them. To scale with demand, add an autoscaler such as Actions Runner Controller on Kubernetes or the Terraform module for AWS.
Upkeep
BerryBox
None for you. There’s no runner fleet, autoscaler or image to maintain, and nothing to patch.
Self-hosted runner
You keep the operating system and all other software up to date. With automatic runner updates off, a runner not updated within 63 days of a new version stops getting jobs.
Isolation
BerryBox
Every job gets a fresh EC2 VM. The VM and its disk are destroyed when the job ends.
Self-hosted runner
Up to you. GitHub doesn’t guarantee self-hosted runners a clean VM per job, and says untrusted workflow code can compromise one persistently. For autoscaled fleets, it recommends ephemeral runners that take one job each.
Network
BerryBox
Runners accept no inbound traffic and can’t reach private IP ranges.
Self-hosted runner
Whatever network the machine sits on, which lets jobs reach private services. GitHub asks you to check which sensitive services it can reach, such as cloud metadata endpoints.
Shared state
BerryBox
No cache or disk is shared between customers. Caches never cross teams or repositories.
Self-hosted runner
Up to you. An organization-level runner can take jobs from many repositories, so GitHub warns that a compromise can have a wide impact.
Cost
BerryBox
$0.002/min for 2 vCPU / 8 GiB, billed by the second with no minimum duration. Billing starts when your job runs. Queue time, VM startup and platform failures are free.
Self-hosted runner
GitHub doesn’t charge for self-hosted runner minutes. You pay for the machines and their upkeep.
Platforms
BerryBox
Ubuntu 24.04 on x64 only: 2 to 16 vCPU, with 4 or 8 GiB of memory per vCPU.
Self-hosted runner
Linux, Windows or macOS, on x64 or ARM64, on hardware you choose.
Repositories
BerryBox
Private repositories. Public repositories and fork pull requests aren’t supported yet.
Self-hosted runner
GitHub advises against self-hosted runners on public repositories, where anyone can open a pull request that runs code on them.
When to self-host
Sometimes your own runner
is the better choice.
You have spare hardware
Spare machines you already own are cheaper than BerryBox. GitHub doesn’t charge for self-hosted runner minutes, so capacity you’ve already paid for runs CI at no extra per-minute cost.
Jobs must reach a private network
BerryBox runners can’t reach private IP ranges, so a job that needs a database, registry or service inside your network can’t run on BerryBox. A self-hosted runner inside that network can.
You need ARM, macOS, Windows or GPUs
BerryBox runs Ubuntu 24.04 on x64 only. GitHub’s runner also supports Windows, macOS and ARM64, and on your own machines you pick the hardware, GPUs included.
You can use both.
runs-on is set per job. Jobs that need your network or hardware stay on your runners, and the rest can move to BerryBox. Switching back is the same one-line change.
Switching
One line per job.
Start with one.
GitHub still schedules your workflow and shows the results. BerryBox supplies the machine: Ubuntu 24.04 with the official Actions runner, Docker, Buildx and Compose.
- 1
Connect GitHub
Sign in, install the GitHub App and choose the private repositories it can use.
- 2
Add credit and pick a size
Top up from $20 through Stripe, then enable a runner size for your team.
- 3
Change runs-on
Point a job at a BerryBox label. Jobs on other labels, including your self-hosted runners, stay where they are.
jobs: test: runs-on: berrybox-2vcpu-ubuntu-2404was [self-hosted, linux, x64] steps: - uses: actions/checkout@v7 - run: make testRunner labels
- berrybox-2vcpu-ubuntu-24042 vCPU · 8 GiB
- berrybox-4vcpu-ubuntu-24044 vCPU · 16 GiB
- berrybox-8vcpu-ubuntu-24048 vCPU · 32 GiB
- berrybox-16vcpu-ubuntu-240416 vCPU · 64 GiB
- berrybox-memory-2vcpu-ubuntu-24042 vCPU · 16 GiB
Memory-optimized 4, 8 and 16 vCPU labels follow the same pattern. If your own runner image has other tools baked in, add setup steps for them. All prices · Migration guide
Sources
Where these facts come from
GitHub’s documentation was checked on November 11, 2026. Runner details change, so the links show the current text.
GitHub Docs
Self-hosted runnersFree to use. You update the operating system and all other software.
GitHub Docs
Hardening for self-hosted runnersClean VMs, public repositories, organization-level runners and network access.
GitHub Docs
Self-hosted runners referenceSupported systems, autoscaling, ephemeral runners and the 63-day update rule.
GitHub Docs
Actions Runner ControllerGitHub’s Kubernetes operator for autoscaling self-hosted runners.
GitHub Docs
GitHub Actions billingSelf-hosted runner usage is free.
github-aws-runners
terraform-aws-github-runnerA Terraform module for autoscaling self-hosted runners on AWS.
BerryBox Docs
Billing and spending limitsRates, per-second billing and what isn’t charged.
BerryBox Docs
Supported workloadsOperating system, CPU architecture and repository support.
BerryBox Docs
Caches and artifactsCaches never cross teams or repositories.
BerryBox