# Use RunsOn to deploy managed, self-hosted Arm runners for GitHub Actions

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/github-actions-runner/)
- [About RunsOn and before you begin](https://learn.arm.com/learning-paths/servers-and-cloud-computing/github-actions-runner/before_you_begin/)
- [Install RunsOn in your AWS account](https://learn.arm.com/learning-paths/servers-and-cloud-computing/github-actions-runner/install-runs-on/)
- [Execute GitHub Actions workflows on Arm runners](https://learn.arm.com/learning-paths/servers-and-cloud-computing/github-actions-runner/execute-workflows/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/github-actions-runner/_next-steps/)

## About this Learning Path

|  |  |
| --- | --- |
| Skill level: | Introductory |
| Reading time: | 15 min |
| Last updated: | 14 Sep 2026 |

|  |  |
| --- | --- |
| Author: | Cyril Rohr , RunsOn<br>[GitHub](https://github.com/crohr)<br>[LinkedIn](https://linkedin.com/in/cyrilrohr) |
| Arm IP: | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
| Tags: | [CI-CD](https://learn.arm.com/tag/ci-cd) [AWS Graviton](https://learn.arm.com/tag/aws-graviton) [Linux](https://learn.arm.com/tag/linux) [AWS Cloud Formation](https://learn.arm.com/tag/aws-cloud-formation) [GitHub](https://learn.arm.com/tag/github) [AWS EC2](https://learn.arm.com/tag/aws-ec2) |

### Who is this for?

This Learning Path is for developers who want to use Arm runners offered by AWS to execute GitHub Actions workflows.

### What will you learn?

After completing this Learning Path, you'll be able to perform the following tasks:

- Install RunsOn, a self-hosted runner manager, in your AWS account.
- Execute GitHub Actions workflows on Arm runners.

### Prerequisites

Before starting, you'll need the following prerequisites:

- An [Amazon Web Services account](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/aws/)
- A GitHub account (personal or organizational)

### Summary

You’ll deploy RunsOn in AWS with CloudFormation and use it to run GitHub Actions on Arm-based runners. First, you’ll connect the AWS account, configure the GitHub app and license, and target an Arm64 runner with `runs-on`. RunsOn provisions a Graviton-based EC2 instance so that you can verify an on-demand self-hosted runner.

### Frequently asked questions

**How do I trigger a test workflow in a new repository?**

Save the workflow as `test.yml` in the `.github/workflows/` directory, then add and commit the file. Push the commit to GitHub to trigger the GitHub Actions workflow.

**Which AWS account or sub-account should I use to install RunsOn?**

Sign in to the AWS account where you want to manage runners. For better isolation and security, install RunsOn in its own AWS sub-account if possible.

**How do I modify my GitHub Actions workflow to use an Arm runner?**

Update the `runs-on` section to request a RunsOn-managed Arm64 runner, for example: `runs-on: [self-hosted, runner=1cpu-linux-arm64, run-id=${{ github.run_id }}]`. This change instructs RunsOn to launch an Arm-based EC2 instance for the job.

**What result should I expect to confirm that RunsOn is working?**

After pushing a workflow with the updated `runs-on` value, the job should start in about 30 seconds. In the Actions UI, the job runs on an Arm-based Amazon EC2 instance.

**How do I customize the Arm runner's EC2 instance type?**

Update the `runs-on` labels to select the required runner size, such as `runner=2cpu-linux-arm64`. Add a `family` label, such as `family=r8g`, when you want to select a specific Graviton family. Use the [RunsOn job-label documentation](https://runs-on.com/configuration/job-labels/) for additional CPU, memory, and disk customization options.
