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.
500 minutes free · No credit card · Hosted in Germany
jobs: build: runs-on: ubuntu-latest runs-on: onctl-2That'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.
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.
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.
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
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 label | vCPU | RAM | Rate |
|---|---|---|---|
| onctl-2default | 2 | 8 GB | $0.003/min |
| onctl-4 | 4 | 16 GB | $0.006/min |
| onctl-8 | 8 | 32 GB | $0.012/min |
| onctl-16 | 16 | 64 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.
Migration takes 30 seconds
runs-on: ubuntu-latestruns-on: onctl-2Pay 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
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
Team
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
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
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.
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.
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.
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.