# Deploy CircleCI Arm Native Workflows on AWS EC2 Graviton

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/)
- [Get Started with CircleCI on AWS Graviton](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/background/)
- [Create an AWS EC2 Arm64 Graviton Instance](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/instance/)
- [Install CircleCI CLI](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/circlecli-installation/)
- [Create a resource class in CircleCI](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/resource-class/)
- [Install CircleCI machine runner on AWS Graviton](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/circleci-runner-installation/)
- [Verify CircleCI Arm64 Self-Hosted runner](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/validation/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/circleci-on-aws/_next-steps/)

## About this Learning Path

| Skill level:       | Introductory       |
|--------------------|--------------------|
| Reading time:      | 30 min             |
| Last updated:      | 31 Jul 2026        |

**Author:** Annie Tallund, Arm  
[GitHub](https://github.com/annietllnd) | [LinkedIn](https://linkedin.com/in/annietallund)

**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](https://learn.arm.com/tag/aws)
- [Linux](https://learn.arm.com/tag/linux)
- [CircleCI](https://learn.arm.com/tag/circleci)
- [Bash](https://learn.arm.com/tag/bash)
- [Git](https://learn.arm.com/tag/git)

### Who is this for?
This is an introductory topic for developers and DevOps engineers who want to set up and run CircleCI Arm native workflows on Linux Arm64 virtual machines. You'll use Amazon EC2 instances powered by AWS Graviton (Neoverse N1) and self-hosted runners.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Create an Amazon EC2 Arm64 virtual machine
- Install and configure CircleCI self-hosted machine runners on Arm64
- Verify the runner by running a simple workflow and test computation

### Prerequisites
Before starting, you will need the following:
- An [AWS account](https://aws.amazon.com/free/) with billing enabled
- A CircleCI account
- Basic understanding of CircleCI workflows, jobs and resource classes

### Summary
You’ll deploy CircleCI Arm-native workflows on Amazon EC2 instances powered by AWS Graviton. Using the AWS Management Console, you’ll provision an Arm-based instance (for example, `m6g.large`) on Linux and install the CircleCI CLI to work with configurations and pipelines from the terminal. In the CircleCI dashboard, you’ll create a resource class to link a self-hosted machine runner to the correct namespace. Then, you’ll install the CircleCI machine runner on the Arm64 instance using the CircleCI package repository for Debian/Ubuntu systems. By the end, you’ll execute a workflow and test computation to verify that jobs run on the self-hosted Graviton runner as configured.

### Frequently asked questions

<details>
<summary>Which EC2 instance and AMI should I select to follow the steps?</summary>
Use an Amazon EC2 instance powered by AWS Graviton, such as `m6g.large`, and choose a Linux AMI such as Ubuntu in the AWS Management Console. You’ll follow a console-based instance launch workflow.
</details>

<details>
<summary>What should I install before setting up the CircleCI CLI?</summary>
Install curl, tar, gzip, coreutils, gpg, and git using your package manager. These tools enable downloading, verifying, and extracting the CLI.
</details>

<details>
<summary>What do I need before creating a resource class for the self-hosted runner?</summary>
Access the CircleCI dashboard and ensure an organization/namespace is available. The resource class links your runner to that namespace so jobs can target it.
</details>

<details>
<summary>How do I confirm the machine runner is installed and connected?</summary>
After adding the CircleCI package repository and installing the runner, the agent registers to your resource class. Running the sample workflow should start on the EC2 instance and complete the test computation.
</details>

<details>
<summary>What should I check if a job does not run on the self-hosted runner?</summary>
Verify the job targets the resource class you created, the EC2 instance is running, and the runner process is installed on that instance. Then re-run the workflow from the CircleCI dashboard.
</details>
