# Buildhound vs Actions Runner Controller

> Actions Runner Controller is GitHub's Kubernetes operator that scales self-hosted runners for GitHub Actions as ephemeral containers. It is free and open source, and runs on a cluster you operate. Buildhound runs jobs on machines you already have, macOS included, with GitHub-hosted as the fallback.

## Choose Actions Runner Controller when

- You already run Kubernetes and want runners on it.
- Your jobs are Linux containers.
- You want GitHub's own open-source controller and no vendor at all.

## Choose Buildhound when

- Your CI includes macOS, which it does not run.
- You have Macs or a Linux box but no cluster to look after.
- You want a fresh VM for each job rather than a container on a shared node, with GitHub-hosted as the fallback.

## Side by side

Actions Runner Controller's side is from its own pages ([source](https://docs.github.com/en/actions/concepts/runners/actions-runner-controller)), checked 17 October 2026.

### Price

| | Buildhound | Actions Runner Controller |
| --- | --- | --- |
| How it is priced | Flat, per machine. $10 a machine a month on a personal account, $24 in an organisation, counted only on days it runs a job. Public repositories free. | Free. Open source under Apache-2.0; you pay for the cluster. |
| macOS | Your Mac. A fresh macOS VM per job; Apple allows two per Mac. | Not offered. Runners are Linux containers on Kubernetes. |
| Linux | Your Mac or Linux box. A fresh Linux VM per job, arm64 on a Mac. | On your cluster. Container runners that scale with the queue. |

### Where it runs

| | Buildhound | Actions Runner Controller |
| --- | --- | --- |
| Machines | Yours. A spare Mac, a Linux box, or a laptop while plugged in and not in use. | Your Kubernetes cluster. |
| Each job | A fresh VM, destroyed after. It reaches the internet and never your network. | An ephemeral runner container. Created for the job and removed after. |
| Secrets | On your hardware. Only on a machine a person marked Trusted. | On your cluster. |

### When things change

| | Buildhound | Actions Runner Controller |
| --- | --- | --- |
| Setup | One prompt to your coding agent. Or two commands by hand. | Helm charts. The controller and a runner scale set for each label. |

## One line in runs-on

Actions Runner Controller:

```yaml
runs-on: arc-runner-set
```

Buildhound, on your machine while one can take the job and on GitHub-hosted when none can:

```yaml
runs-on: ${{ vars.BUILDHOUND_LINUX || 'ubuntu-latest' }}
```

Buildhound has no referral agreement with Actions Runner Controller. Source: https://buildhound.sh/compare/actions-runner-controller.
