mintwork

mintwork / runway

Run GitHub Actions jobs on your own AWS compute

Pick the machine per job with one runs-on line: a Firecracker MicroVM, an EC2 Spot instance, a Fargate task or a Lambda function, in your account, ended the moment the job finishes.

npx -y @mintwork/runway setup --owner <your-org> --region eu-central-1
npx -y @mintwork/runway status   # health, images, recent runners
runway setup deploying the stack, creating the GitHub App in the browser and building images (a real install, sped up), then a workflow using four compute types, then runway status listing a runner on each

The problem

GitHub's hosted runners are easy until you need more: a bigger machine, arm64, access to your VPC, or a bill that doesn't grow by the minute. Self-hosting usually means a fleet of always-on instances, a Terraform module to maintain, and runners that leak state from one job to the next.

runway puts a small dispatcher in your AWS account. Every job that asks for runway gets a machine of its own, launched for that job, registered as a single-use runner, and ended when the job finishes. Nothing runs, or bills, between jobs.

What it does

Set up in one command

You need AWS credentials that can create a CloudFormation stack, owner rights on the GitHub organization, and Node 22+. Setup takes about 10 minutes: it deploys the stack, opens a local page that creates runway's GitHub App, and builds the runner images.

npx -y @mintwork/runway setup --owner <your-org> --region eu-central-1

Then use it in any workflow:

jobs:
  test:
    runs-on: [runway, microvm]          # Firecracker VM, Docker included
  build:
    runs-on: [runway, ec2, spot, 8cpu]  # EC2 Spot, on-demand if Spot is short
  lint:
    runs-on: [runway, lambda]           # Lambda function, billed per millisecond

Your tools on the runners

The images are small on purpose. Use actions/setup-node and friends per job, or bake your tools into every image with a script, and change it whenever you like:

npx -y @mintwork/runway update --runner-tools ./runner-tools.sh

See adding or updating tools.

How is this different?

RunsOn runs excellent EC2 runners in your account, with a commercial licence for companies. terraform-aws-github-runner is the established module for large EC2 fleets. runway is MIT licensed, one command to set up, and adds MicroVMs, Fargate and Lambda, picked per job from runs-on.

Open source, MIT licensed

Built in CI and published to npm with signed provenance. The full docs, changelog and issues are on GitHub.