Skip to content
Ephemeral runners for self-hosted Gitea

Runners that exist only while the job does.

Your Gitea queues a job. A fresh machine boots, joins your tailnet, runs it, and is destroyed. Nothing idles, nothing drifts, and you are billed for the minutes you used.

Stop babysitting a runner

You provision a runner that sits idle most of the time

With self-hosted Gitea runners, you keep infrastructure online, maintain it, and pay for it — even when there's nothing to build.

Traditional self-hosted runner

Always on. Mostly idle.

You keep a machine online 24/7, but it only does real work for a few minutes each day.

12am6am12pm6pm12am
Building Idle (still paying)

Ephemeral runners

A fresh runner for every job.

A machine appears when a job is queued, runs it, and is gone. No idle time. No leftover infrastructure.

12am6am12pm6pm12am
Building No runner (no cost)

You pay for idle capacity

The runner sits unused most of the day, but you're still paying for the server, storage, and bandwidth.

No idle time, no wasted spend

You only pay for the minutes your jobs actually run.

Manual scaling

You have to anticipate demand, provision machines, and adjust capacity by hand — or risk slow builds.

No maintenance burden

Runners are fresh each time, with the latest base image and security updates. Nothing drifts, nothing to patch.

Your runner builds for about an hour a day. You pay for

~23 hours of idle time

Let the job create the runner — and the runner disappear when it's done.

How it works

Connect it once. Then forget it.

Three steps, and no runner left running.

  1. 1

    Connect your Gitea

    An org-scoped token and a runner registration token. Your secrets never leave your Gitea.

    gitea.yourcompany.dev
    Connect your Gitea
    Paste your registration token Connect
  2. 2

    Map labels to machines

    Decide what ubuntu-latest means and what build-heavy gets. Change it whenever you like.

    Which labels do we cover?
    ubuntu-latest build-heavy
    Machine for this label 4 vCPU Bigger machines for the labels that need them.
  3. 3

    Push, and forget it

    A job queues, a machine appears, runs it, and is destroyed. You see minutes, not machines.

    This month Within cap
    Jobs run
    1,284
    Minutes billed
    3,940
    Idle cost
    €0
    Nothing ran idle. 1,284 jobs, 3,940 minutes billed, and no machine left running.
What you get

Everything a runner needs, and nothing to maintain.

You configure labels. We do the rest.

  • gitea.yourcompany.dev
    Queued: build-heavy

    Spawned on demand

    A queued job brings a machine up within seconds, and it is destroyed the moment the job ends.

    • Boots when a job is queued
    • Destroyed when it finishes
    • No machine between runs
    • Machine spawned
    • Job completed
    • Machine destroyed

    One job, enforced by Gitea

    Every worker registers as ephemeral, so Gitea revokes its credentials the moment a job is assigned. It cannot take a second one.

    • Ephemeral registration, server-side
    • Reaches one host on your tailnet
    • Destroyed after every job
  • This month €61
    €150 Your cap

    Billed per minute

    You pay for the minutes a job actually ran. Idle hours do not exist here, because idle machines do not.

    • Per-minute billing
    • A spend cap you set
    • Nothing charged for idle
Why it pays off

Not cheaper. Never idle.

A small always-on runner is a few euros a month. This is about the hours it does nothing, the jobs that queue behind each other, and the patching you never asked for.

A runner you keep online

One machine, always on

It works for minutes a day and waits for the rest. The waiting is the part you pay for and maintain.

Machines you run
One, always
Parallel jobs (one box)
One at a time
Docker, buildx, the base image (and the drift)
Yours
A bigger machine
A migration
Assumes one always-on runner and a normal working day of pushes. Your split depends on how much you actually build.
Idle hours you pay for ~23 / day

With Runner Pool

A machine per queued job

Machines appear for the job and are destroyed after it. There is nothing between runs to pay for or to patch.

A machine per queued job
€49 / month
Parallel jobs, as many as you allow
Included
Patching, drift and upkeep
Included
Base, per organisation €49 / month

Runner Pool costs €49 / month

plus €0.15 to €0.45 per hour of actual job time, billed per minute. Nothing for the hours you do not use.

Questions

What people ask before connecting an instance.

Get early access

Runner Pool is not open yet. Leave your email and we will write when it is.