Self-hosted runners

Self-hosted runners let you run RWX tasks on runners in your own cloud account. RWX provisions and tears them down using credentials you grant.

Self-hosted runners are not enabled by default.

RWX supports self-hosted runners on AWS.

To enable them, or to discuss support for other clouds, contact us.

Managing self-hosted runners

You can manage self-hosted runners in your organization settings.

When creating an AWS self-hosted runner, you'll be prompted for:

  • Label — Used to target the runner from an RWX task.
  • Region — The AWS region that hosts your runners.
  • AWS account ID — The 12-digit account that hosts your runners.
  • Subnet IDs — The subnets runners launch into. They must have public egress.
  • Security group IDs — The security groups attached to your runners.

After you create the runner, you are given a Terraform module that creates the necessary IAM resources in your AWS account.

Targeting a runner

Set runner.self-hosted on a task to the label of the runner you created:

tasks:
  - key: hello-self-hosted
    runner:
      self-hosted: my-self-hosted-runner
    run: echo hello

Mixing self-hosted and RWX-managed runners

Because runner.self-hosted is set per task, a single run can use both kinds of runner. Send only the tasks that need your network to a self-hosted runner, and leave the rest on RWX-managed runners.

For example, a task that connects to a database only reachable from inside your network runs self-hosted, while your lints keep running in RWX:

tasks:
  - key: lint
    run: npm run lint

  - key: integration-tests
    runner:
      self-hosted: my-self-hosted-runner
    run: npm run test:integration

Limitations

Self-hosted runners do not support: