Now in beta — 500 free minutes, no credit card

GitHub Actions runners, billed by the minute.

Install the GitHub App, change one line in your workflow. Get ephemeral runners on bare metal in Falkenstein, Germany at $0.003/min 50% cheaper than GitHub-hosted ($0.006/min). No cloud account, no Terraform, no ops.

See pricing

500 minutes free · No credit card · Hosted in Germany

.github/workflows/ci.yml+1−1
jobs:  build:    runs-on: ubuntu-latest    runs-on: onctl-2

That's the entire migration. Same syntax, same secrets, same logs — just a different runner.

Zero setup. Change one line.

No cloud account. No infrastructure to manage. A GitHub App install and a single workflow line change is all it takes.

STEP 01

Install the GitHub App

One click to install on your org or repo. No cloud account, no IAM roles, no Terraform. The App subscribes to workflow_job webhooks — that's it.

STEP 02

Change one line in your workflow

Replace runs-on: ubuntu-latest with runs-on: onctl-2. Pick your size by name. The next push provisions a Firecracker microVM on our EU hosts.

STEP 03

Jobs run fast, VMs vanish

Each job gets a fresh ephemeral VM. When the job completes, the VM is destroyed immediately — no idle cost, no drift, no shared state between runs.

What happens on every push

push to GitHubwebhook firesVM spins upjob runsVM destroyedyou pay nothing idle

Isolation you can actually describe

One ephemeral microVM per job, destroyed afterwards, hosted in the EU. The longer version is on the security page.

Can another customer see my job?

No. Each job is its own Firecracker microVM. VMs on the same host cannot reach each other. Dashboard data is scoped to your GitHub App installation.

What is left after the job?

The VM is destroyed. We keep job metadata and usage duration — there is no auto-delete yet. We do not keep your source tree.

Where does it run?

Dedicated hosts in Falkenstein, Germany. No US region today.

Fast by default. Cheap by design.

Bare metal cloud gives 4–6x better price-per-core than AWS or GCP. We pass that advantage to you, not to our margin.

Prebaked images

Docker and the GitHub runner are already on disk. Boot skips apt-get and agent download. We have not published a measured queue-to-online p50.

Fully ephemeral

Every job gets its own Firecracker microVM, destroyed afterwards. VMs on the same host cannot reach each other. See the security page for what that does and does not guarantee.

EU infrastructure

Running on dedicated hosts in Falkenstein, Germany. We do not currently offer a US region, and we do not claim a GDPR certification.

No idle billing

Runners spin up on job queued, are destroyed on job completed. You pay for active compute only. Zero pool to maintain, zero reserved capacity cost.

Auto-healing

Watchdogs detect runners that never registered or jobs that never completed and reclaim the VMs automatically. No orphaned machines silently billing.

Live usage dashboard

See recent jobs and this month's vCPU-minutes versus the 500-minute ceiling.

GitHub App, no tokens

Installation token auth scoped per repo from the webhook payload. No personal access tokens, no org-level secrets to rotate, no leaked credentials.

Runner sizes

runs-on labelvCPURAMRate
onctl-2default28 GB$0.003/min
onctl-4416 GB$0.006/min
onctl-8832 GB$0.012/min
onctl-161664 GB$0.024/min

Billed per minute. GitHub Actions sets a 6h job timeout; ours will end the runner if the job never completes.

Head-to-head

onctl-runners vs GitHub hosted

Same GitHub Actions syntax. One line change. Up to 50% off your bill.

Size
GitHub hosted
onctl-runners
You save
2-vCPU
$0.006/min
$0.003/min
-50%
4-vCPU
$0.012/min
$0.006/min
-50%
8-vCPU
$0.022/min
$0.012/min
-45%
16-vCPU
$0.042/min
$0.024/min
-43%
Feature
GitHub hosted
onctl-runners
Prebaked runner image
Billed per minute
Ephemeral (fresh VM per job)
EU (Germany) hosted
GitHub App auth (no tokens)
Hard monthly minute cap
One-line workflow change
N/A

Migration takes 30 seconds

runs-on: ubuntu-latestruns-on: onctl-2

Pay only for what runs

No reserved capacity. No monthly minimum. You pay per minute of actual compute — billed at the end of the month.

Starter

Free500 min/mo included

Try onctl-runners with no commitment. No credit card.

  • 500 minutes free every month
  • 2-vCPU and 4-vCPU runners
  • Ephemeral, fully isolated VMs
  • GitHub App install
  • Community support
Most popular

Team

$0.003per minute (2-vCPU)

Pay only for what you use. Same runners as Starter, billed at the published rates when live billing is on.

  • All runner sizes (2–16 vCPU)
  • Billed per minute, no minimums beyond the first
  • 500 vCPU-min/month hard cap (then jobs wait)
  • Live usage dashboard
  • Founder support during beta

Enterprise

Customdedicated pools

If you need dedicated capacity or invoices, email us. There is no packaged SOC 2 / SSO / SLA offering today.

  • Talk to us about dedicated capacity
  • Invoice billing
  • Same microVM-per-job isolation as everyone else
  • Founder support during beta
Contact us

Docker layer caching and dependency caching included on Team plan. GPU runners billed separately — contact us for pricing.

Up and running in 2 minutes

No cloud account. No CLI to install. No infra to manage. Just a GitHub App and one line in your workflow.

1

Install the GitHub App

# Visit the link below and install on your org or repo
# https://github.com/apps/onctl-runners

# Select repositories → Install

One OAuth click. Grant access to the repos where you want onctl runners. The App subscribes to workflow_job webhooks automatically.

2

Update your workflow

# Before
jobs:
  build:
    runs-on: ubuntu-latest

# After — that's the only change
jobs:
  build:
    runs-on: onctl-2

Replace runs-on: ubuntu-latest. Push a commit. The next job runs on a fresh Firecracker microVM in Falkenstein.

3

Watch it run

# In your Actions tab you'll see:
# ✓ Runner registered: onctl-runners-abc123
# ✓ Job started        (2 vCPU, Falkenstein)
# ✓ Job completed
# ✓ Runner destroyed

Each run spins up a new VM and destroys it on completion. Check the dashboard at app.onctl.io for live job status and monthly spend.

Get your first 500 minutes free

No credit card. No commitment. Start with a free trial and upgrade when you're ready.

Common questions