CI runners · your hardware · zero idle cost

Self-hosted GitHub Actions runners
on the hardware you already own.

Baremetal turns the Macs and Linux machines you own into a self-scaling fleet of single-use runners — so your builds run fast, isolated, and disposable, without paying for hosted CI.

Connect a runner host — run this on the computer that will run CI jobs:
curl -fsSL https://baremetal.run/install.sh | bash -s -- cjt_…
Just managing your fleet? Set up the CLI on your work computer.

Free while in beta · no credit card · your keys stay on the control plane

Hosted CI is expensive, slow, or fragile. Usually all three.

Hosted minutes are costly

Hosted runners — macOS especially — are the most expensive minutes you can buy, billed at a steep multiplier you don’t control.

Self-managed runners rot

Persistent runners accumulate state, leak secrets between jobs, and need babysitting to scale up and down.

You already have machines

A Mac mini or a Linux box sitting on a shelf can outrun cloud CI — if something safely turns it into ephemeral runners.

From zero to running in four steps

1

Connect GitHub

A guided flow creates a GitHub App scoped to your org or a single repo. The private key stays in restricted server-side storage, separate from the product database and your runner machines.

2

Add your machines

One command on each Apple Silicon Mac or Linux box installs the agent and joins it to your workspace. No notarization, no inbound ports — the machine dials out.

3

Define a pool

Pick an image, a size, and a warm-runner count. Baremetal targets that many ready runners; set the warm target to zero to release idle capacity.

4

Push code

Every job gets a fresh, single-use VM — a Tart VM on a Mac, a KVM VM on Linux. It runs your workflow, then is destroyed. No state leaks between jobs, ever.

Built the way you’d build it yourself — if you had the time

Ephemeral, single-job runners

A clean VM per job, torn down afterwards. No leftover caches, credentials, or state between builds.

Auto-scaling, scale-to-zero

Pools track queued demand and can idle down to zero with a zero warm target. You pay for electricity, not idle cloud minutes.

Your hardware

Runs on the Macs and Linux machines you already own. No per-minute bill — including the priciest CI tier there is, hosted macOS.

Bring your own GitHub App

You own the integration. The key stays on the control plane and is used to mint short-lived, single-job runner registrations.

Tenant isolation

Agents and the runners scheduled onto them are label-fenced to your workspace. Your machines are never shared — this is not a marketplace.

Mac & Linux, hardware-accelerated

Real macOS VMs on Apple Silicon via Tart, Linux VMs via QEMU/KVM, with nested virtualization for workloads like Android emulators — honouring each platform’s limits.

Choose your CI setup

Setup, architecture, cost and troubleshooting in our GitHub Actions runner guides.

GitHub Actions on bare metal

Plan a fleet on your own hardware, compare persistent and ephemeral runners, and connect your first workflow.

Self-hosted macOS runners

Use an Apple Silicon Mac for Xcode builds and tests in clean Tart VMs. Plan images, memory and concurrency.

Runner cost calculator

Compare hosted bills with hardware, power and maintenance. Enter your own numbers to estimate monthly costs and break-even volume.

Security you can actually verify

GitHub App keys stay on the control plane, separate from the product database. Single-use runners destroyed after every job. Outbound-only connections. The dashboard has zero database access — every action goes through an authenticated API. We only claim what the architecture backs.

Read the security model →
  • 🔐 Server-side GitHub App keys and short-lived runner registrations
  • ♻️ Fresh VM per job, destroyed afterwards
  • 🚪 No inbound ports — your machines dial out
  • 🧱 Label-fenced isolation — your hardware is never shared
  • 🛡️ Server-only database access; owner/admin gates on every change

Free while we’re in beta

$0/ during beta
  • ✓ Unlimited runners on your own machines
  • ✓ Unlimited workspaces, pools, and connections
  • ✓ Auto-scaling and scale-to-zero
  • ✓ Server-side key custody & ephemeral runners
  • ✓ No credit card required
Get started free →

You run on your own hardware, so there’s no per-minute charge. Pricing for any future paid plans hasn’t been set yet.

Frequently asked

What do I need to run it?

A machine you own — an Apple Silicon Mac (M1 or newer) with Homebrew, or any Linux box with KVM (hardware virtualization) — plus a GitHub org or repo you administer. Either way you install a tiny agent with one command.

Do you charge per build minute?

No. Your jobs run on your own hardware, so there is no per-minute compute charge from us. Baremetal is free while we are in beta.

Where do my GitHub App keys live?

In restricted storage on the control-plane server, separate from the product database. They are not sent to your runner machines. They are used only to mint short-lived, single-job runner registration tokens.

Is my hardware ever shared with another customer?

Never. Agents and the runners scheduled onto them are fenced to your workspace by label. Baremetal orchestrates your hardware for you — it does not rent it out.

Do I have to open ports on my network?

No. Every connection is outbound: your machine dials the cloud backend. Nothing reaches into your machines, which keeps it NAT- and firewall-friendly.

What happens to a job’s data when it finishes?

The entire VM is destroyed. Each job starts from a pristine image and leaves nothing behind, so secrets and artifacts never survive into the next job.

Put your hardware to work.

Connect GitHub, add a machine, and watch your first ephemeral runner come online in minutes.

Get started free →