Skip to content

Compare

BerryBox vs. self-hosted runners. Same runner, no fleet.

Both run your jobs on GitHub’s official Actions runner. With self-hosted runners, you operate the machines, the autoscaler and the images. With BerryBox, you change one runs-on line, every job gets a fresh VM and you pay by the second while it runs.

From $0.002/min · billed by the second · queue and startup free

Who does the work
TaskSelf-hostedBerryBox
Provision the machinesYouBerryBox
Scale runners with demandYouBerryBox
Build and patch imagesYouBerryBox
Start each job on a clean VMYouBerryBox
Isolate runners on the networkYouBerryBox
Change runs-onYouYou

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. 1

    Connect GitHub

    Sign in, install the GitHub App and choose the private repositories it can use.

  2. 2

    Add credit and pick a size

    Top up from $20 through Stripe, then enable a runner size for your team.

  3. 3

    Change runs-on

    Point a job at a BerryBox label. Jobs on other labels, including your self-hosted runners, stay where they are.

.github/workflows/ci.yml
jobs:  test:    runs-on: berrybox-2vcpu-ubuntu-2404was [self-hosted, linux, x64]    steps:      - uses: actions/checkout@v7      - run: make test

Runner 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.