# Runner providers

A runner provider is a service or autoscaler that starts a fresh runner for
each queued job and throws it away afterwards. This page says which ones
work with GitCafe [Actions](https://git.cafe/docs/ci/actions.md).

## GitCafe-hosted runners

GitCafe's own hosted runners (`ubuntu-latest`, `ubuntu-24.04`,
`ubuntu-22.04`) are started by GitCafe's fleet. The protocol the fleet uses
to learn about queued jobs is internal to GitCafe and closed to third
parties; you don't need to do anything to use hosted runners.

## Third-party runner services

Services that run GitHub Actions jobs on their own machines connect to
GitHub, not to GitCafe:

- **Depot, Namespace and hosted Ubicloud** serve github.com only.
- **Blacksmith, WarpBuild** and others that support GitHub Enterprise Server
  could serve GitCafe, but each needs to be set up by the vendor for your
  GitCafe server. None is available today.

A workflow whose `runs-on` names such a service's labels waits for a runner
until its run times out. Change `runs-on` to `ubuntu-latest` or to your own
[self-hosted runners](https://git.cafe/docs/ci/self-hosted-runners.md).

## Autoscalers you run yourself

**actions-runner-controller (ARC)** with runner scale sets,
**terraform-aws-github-runner** and **RunsOn** need GitHub's scale-set and
webhook APIs, which GitCafe doesn't offer yet; they don't work with GitCafe.

To start a fresh machine for each job with your own tooling, use
[ephemeral or just-in-time runners](https://git.cafe/docs/ci/self-hosted-runners.md#ephemeral-and-just-in-time-runners):
your script asks GitCafe for a JIT configuration, starts a machine with it,
and the runner unregisters itself after one job.
