Skip to content
800K+
jobs run last week
10min
install time
10x
cheaper

Shockingly cheaper
self-hosted runners

Up to 90% cheaper GitHub Actions runners. Faster builds. Fully self-hosted in your AWS account. No third-party.

nodejs/node

RunsOn 16 CPU
$0.15 22.08min
GitHub 16 CPU
$2.00 31.20min

gohugoio/hugo

RunsOn 16 CPU
$0.07 10.35min
GitHub 16 CPU
$0.72 11.18min

Easy to setup. 85% cheaper than GitHub Actions.

-
Maxime Laurenty, Head of Infrastructure at Spinergie

Our main repository saw an average decrease in CI runtime of 35%. Another repository could fully utilize 16 threads, which dropped its runtime by 75%.

-
Timo Schäfer, Software Engineer at Wikando
RunsOn - 10x cheaper GitHub Actions runners, self-hosted on AWS | Product Hunt

Make your runners fit your workflow needs, not the other way around.

Forget rigid runner configurations. Specify RAM, CPU, GPU, DISK size, instance type, static IP support, and more at runtime:

runs-on: ubuntu-latest # replace with ⤵️

A compatible 2-CPU x64 runner:

runs-on:
- runs-on=${{ github.run_id }}
- runner=2cpu-linux-x64

A 2-CPU ARM64 runner:

runs-on:
- runs-on=${{ github.run_id }}
- runner=2cpu-linux-arm64

A 16-CPU x64 runner with a custom image:

runs-on:
- runs-on=${{ github.run_id }}
- family=c7a+c7i
- cpu=16
- image=custom-image-x64

A specific instance type with 950GB of NVMe SSD local storage:

runs-on:
- runs-on=${{ github.run_id }}
- family=c7gd.4xlarge
- image=ubuntu24-full-arm64

A runner with a static egress IP, and SSH disabled:

runs-on:
- runs-on=${{ github.run_id }}
- runner=2cpu-linux-x64
- private=true
- ssh=false

A runner targetting a specific environment:

runs-on:
- runs-on=${{ github.run_id }}
- runner=2cpu-linux-x64
- env=staging

RunsOn currently supports 3 runner types:

Self-hosted GitHub Actions runners made simple

Finally get the runners your team deserves.

Forget manually maintained self-hosted runners that limit concurrency, or spending hours to setup and maintain Action Runner Controller (ARC) on your Kubernetes cluster. Simplicity, performance, and low-maintenance are the design goals of RunsOn.

Real Virtual Machines

No docker-in-docker or privileged security settings to tune. No Kubernetes. Optimized boot time in less than 30s.

Virtual MachineContainerHardwarehostshostsFull isolationLimited isolation

Unlimited Concurrency

RunsOn can handle hundreds of concurrent jobs at once. More than 150k jobs executed every day across all clients. The only limit is your AWS EC2 quota (which can easily be increased when needed).

GitHub ActionsRunsOnJob 1Job 2Job 3...Job 200

Spot Instances

Take advantage of unused capacity in AWS for up to 90% savings. Automatically fallback to on-demand instances when spot is not available. Learn more about spot instances.

EC2Spot Pricing💻💻💻💰 Savings$$$LaunchesLaunchesLaunches

Faster and Unlimited Caching

A local S3 bucket can act as the cache backend for dependency caching with unlimited size, as well as for Docker layers caching.

S3 BucketDependency CachingDocker Layer CachingAcceleratedAcceleratedUnlimited cache

Linux, Windows, GPU runners

Get access to native x64 and arm64 runners for Linux, as well as GPU and Windows runners, irrespective of your GitHub plan.

Runner TypesLinux x64Linux arm64Windows x64GPU

Fully Self-hosted on AWS

No third-party, no dependencies, fully self-hosted in your AWS account. See the security page for more details.

Your AWS accountRunsOnS3 CacheGitHub ActionsThird-partyRunner instances

Access private resources

RunsOn VPC can easily be peered with your existing VPCs, so that runners can access private services and resources.

Your VPCRunsOn VPCRunnerPrivate ResourcesInternal ServiceVPC Peering ConnectionYour AWS account

Static IPs supported

RunsOn can assign static IPs to your runners, so that they can access external services that filter on IP address.

Your AWS accountRunsOn VPCStaticIPStaticIPRunnerFirewalled external service

Bring your own images

RunsOn supports custom images for your runners, so that you can use your own base images.

RunnerRunsOn AMIRunnerCustom AMI

Full SSH access

Need to debug something? RunsOn supports SSH access to your runners.

Your AWS accountRunsOn VPCRunnerSSH

1-click install in your AWS account

Get your first self-hosted runner up and processing a job on GitHub in less than 10 minutes.

RunsOn is available in 10 AWS regions. Follow the installation guide to setup RunsOn, or watch the demo below to see how it works:

Flat-based pricing

”You should charge way more for this” - A common feedback from users.

No middleman, a single flat license fee (free for non-commercial use) irrespective of minutes used. You only pay for your EC2 usage, billed directly by AWS. Even better if you have unused AWS credits!

Some users report more than $30k in savings, EVERY MONTH.

Look at the pricing calculator to see how much you can save compared to GitHub runners. And we regularly benchmark RunsOn against other third-party and official runners.

Join companies that get faster CI, at lower cost

RunsOn is used by companies of all sizes, from startups to large enterprises.

Millions of runners have been launched with RunsOn since its inception in January 2024.
RunsOn can count on the following sponsors to support the project, thanks ❤️:

Some of RunsOn’s other awesome users and feedback:

I've been testing Kubernetes with ARC: more complex, each runner takes ~25 seconds to boot (on an existing node), far less attractive than the simplicity of RunsOn.

-
Tim Petricola, Software Engineer at Alan

Less than 10 min to test, install and use the product. You can finetune any workflow (CPU, RAM, machine type/size..) depending on your needs. The cache download speed is blazing fast thanks to amazon s3 endpoint. Pricing is transparent, pay only what you use with no overage.

-
Christopher Brookes, SRE at Choose

With RunsOn, we have increased CI/CD performance and reliability at a fraction of the cost of official or private hosted runners – it's a no-brainer for any DevOps team using GitHub actions at scale.

-
Oliver GĂĽnther, DevOps Team at OpenProject

We've just started using self hosted runners, and we were looking into possible solutions, including running them in Kubernetes, but then we found RunsOn: it's definitely what we needed! The fact that instances are compatible with the github hosted runners made the transition very smooth.

-
Michele Sorcinelli, Site Reliability Engineer at Citizens Advice UK

Low maintenance

RunsOn comes as a CloudFormation stack that you install in your own AWS account (10 regions supported). One-click install, one-click upgrades.

The server receives workflow events from GitHub Action, and launches ephemeral EC2 instances to fulfill the workflow job requirements (see architecture).

No need to manage a Kubernetes cluster with Action Runner Controller (ARC), or deploy complicated, half-maintained stacks.

CloudFormation stack

Observable

RunsOn automatically publishes metrics for consumed minutes across repository, workflows, runner types, and result (success, failure).

Can be used to monitor the most expensive workflows, detect anomalies, and gain insights into failure rates of your workflows.

Integrated CloudWatch metrics

Scalable

If you are concerned about scalability, some users are running many thousands of jobs EVERY HOUR, without any issues:

Job stats

10x cheaper, for 10 minutes of work

You can always switch back to official runners at any time.

Get started →

FAQ

Is RunsOn for me?

Most likely YES: If you spend more than $100/month on GitHub Actions, or find yourself constantly babysitting your own self-hosted runners, then you will definitely get a meaningful return on investment by switching to RunsOn. You also get access to custom ARM runners and GPUs, irrespective of your GitHub plan, even on the free tier.

Is this better than Action Runner Controller (ARC)?

If you are already heavily invested into Kubernetes, then ARC might not be too much work for you to setup and operate. However, RunsOn is much simpler to install, requires zero maintenance, and has a much better feature set than ARC: flexible runner types, 1-1 compatible images, integrated caching, real VMs, static IPs, fast boot times.

Is this better than the Philips Terraform AWS GitHub Runner?

Philips Terraform module is entirely Open-Source and free, contrary to RunsOn where you pay a small license fee for commercial use (non-commercial use is free). The terraform module is harder to setup and operate, and has a more limited feature set: no image compatibility with GitHub, slower boot times in ephemeral mode, fixed runner types, no integrated caching, hard to debug failure modes due to extensive use of lambdas.

Is this better than [other 3rd-party provider]?

There are great 3rd-party providers for self-hosted GitHub Actions runners (benchmarked here). However they are 3rd-parties, so you must be aware of the security implications of using them. RunsOn is fully self-hosted, does not depend on third-parties, has the best pricing, and features you won’t find over there at the same price point (unlimited concurrency, SSH access, static IPs, fast and consistent boot times, the widest choice of instance types, etc).

What about security?

RunsOn is fully self-hosted, and does not depend on third-parties. You can deploy it in your own AWS account, and have a look at our dedicated security page for more details.

Learn more