# 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          |
|-----------------------|---------------------|
| Arm IP:               | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
| Tags:                 | CI-CD, AWS Graviton, Linux, AWS Cloud Formation, GitHub, 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?
Upon completion of this Learning Path, you will be able to:
- Install RunsOn, a self-hosted runner manager, in your AWS account.
- Execute GitHub Actions workflows on Arm runners.

### Prerequisites
Before starting, you will need the following:
- 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.
