---
title: "Using the Arm VM execution environment"
description: "Learn how to configure a your jobs to run in the Arm VM execution environment."
platform: "Cloud, Server"
doc_version: "unversioned"
last_updated: "2026-10-15"
cloud_plans: "Free, Performance, Scale"
version_control: "All supported providers"
---

> For current CircleCI product defaults, deprecated patterns, and Cloud/Server differences, see [AGENTS.md](https://circleci.com/docs/AGENTS.md).
>
> For the complete documentation index and site structure, see [llms.txt](https://circleci.com/docs/llms.txt).

# Using the Arm VM execution environment

**Cloud plans:** Free, Performance, Scale

**Version control:** [All supported providers](https://circleci.com/docs/guides/integration/version-control-system-integration-overview/)

You can access the Arm VM (virtual machine) execution environment for a job by using the machine executor and specifying a Linux virtual machine image that includes Arm resources. You then specify an Arm resource class.

<Tabs>
<Tab title="Cloud">

```yaml
# .circleci/config.yml
jobs:
  my-job:
    machine:
      image: ubuntu-2404:current
    resource_class: arm.medium
    steps:
      - run: uname -a
      - run: echo "Hello, Arm!"
```

</Tab>
<Tab title="Server">

```yaml
# .circleci/config.yml
jobs:
  my-job:
    machine:
      image: arm-default
    resource_class: arm.medium
    steps:
      - run: uname -a
      - run: echo "Hello, Arm!"
```

</Tab>
</Tabs>

## Available resource classes

The following Arm resources are available as part of the [`machine` executor](https://circleci.com/docs/reference/configuration-reference/#available-linux-machine-images-cloud):

### Gen1

| Class | vCPUs | RAM | Disk Size | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `arm.medium` (default) | 2 | 8GB | 100 GB | **Yes** | **Yes** |
| `arm.large` | 4 | 16GB | 100 GB | **Yes** | **Yes** |
| `arm.xlarge` | 8 | 32GB | 100 GB | **Yes** | **Yes** |
| `arm.2xlarge` | 16 | 64GB | 100 GB | **Yes** | **Yes** |

**Using server?** Check with your systems administrator whether you have access to the Arm execution environment.

### Gen2 Beta

**Arm gen2 for the machine executor is currently in beta.** Performance and pricing are tentative and may change when this feature becomes generally available.

| Class | vCPUs | RAM | Disk Size | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `arm.medium.gen2` | 2 | 8GB | 100 GB | **Yes** | **No** |
| `arm.large.gen2` | 4 | 16GB | 100 GB | **Yes** | **No** |
| `arm.xlarge.gen2` | 8 | 32GB | 100 GB | **Yes** | **No** |
| `arm.2xlarge.gen2` | 16 | 64GB | 100 GB | **Yes** | **No** |

For pricing and plans information, see the [resource class pricing overview](https://circleci.com/product/features/resource-classes/).

### View resource usage

To view the compute resource usage for the duration of a job in the CircleCI web app:

1.  In the [CircleCI web app](https://app.circleci.com), select your org from the org cards on your user homepage.
    
2.  Select **Pipelines** from the sidebar and locate your pipeline from the list. You can use the project, branch, date, and status search options to help.
    
3.  Select the job you want to access by selecting the job name.
    
4.  Select the **Resources** tab to view CPU and RAM usage for the duration of the job.
    

You can use these insights to decide whether to make changes to the job’s configured resource class.

> **Image:** Resources tab

Figure 1. Resources tab in web app for a job

## Arm VM generations

### Gen2 Beta

Resource classes running on gen2 infrastructure offer significant performance and cost improvements over their gen1 equivalents.

#### Performance improvements

Using more modern compute, gen2 instances deliver up to 73% faster performance compared to gen1 equivalents, based on benchmarks measured during the beta period. Actual performance gains depend on your specific workloads, and this figure may change when Arm gen2 becomes generally available.

#### Using gen2

To use a gen2 resource class, specify an `arm.large.gen2` or equivalent class in your job configuration:

```yaml
# .circleci/config.yml
jobs:
  my-job:
    machine:
      image: ubuntu-2404:current
    resource_class: arm.large.gen2
    steps:
      - run: uname -a
      - run: echo "Hello, Arm!"
```

Gen2 resource classes for the Arm VM execution environment are available on CircleCI Cloud only.

## Images with Arm support

Arm resources are accessible by using the machine executor when using one of the following images:

### Gen1

#### Ubuntu 20.04 - focal

*   `ubuntu-2004:current` - most recent, recommended for all users.
    
*   `ubuntu-2004:2023.07.1`
    
*   `ubuntu-2004:2023.04.2`
    
*   `ubuntu-2004:2023.02.1`
    
*   `ubuntu-2004:2022.10.1`
    
*   `ubuntu-2004:2022.07.1`
    
*   `ubuntu-2004:2022.04.1`
    
*   `ubuntu-2004:202201-02`
    
*   `ubuntu-2004:202201-01`
    
*   `ubuntu-2004:202111-02`
    
*   `ubuntu-2004:202111-01`
    
*   `ubuntu-2004:202107-01`
    
*   `ubuntu-2004:202104-01`
    
*   `ubuntu-2004:202101-01`
    
*   `ubuntu-2004:202011-01` - deprecated as of Feb 3, 2021.
    

#### Ubuntu 22.04 - jammy

*   `ubuntu-2204:current` - most recent, recommended for all users.
    
*   `ubuntu-2204:2023.07.1`
    
*   `ubuntu-2204:2023.04.2`
    
*   `ubuntu-2204:2023.02.1`
    
*   `ubuntu-2204:2022.10.2`
    
*   `ubuntu-2204:2022.07.2`
    

### Gen2 Beta

Arm gen2 resource classes are only supported on the following images and tags:

*   `ubuntu-2404:current`
    
*   `ubuntu-2404:edge`
    
*   `ubuntu-2604:current`
    
*   `ubuntu-2604:edge`
    

For a full list of machine executor images, see the [CircleCI Developer Hub](https://circleci.com/developer/images?imageType=machine). And for announcements about image updates, see [CircleCI Discuss](https://discuss.circleci.com/c/ecosystem/circleci-images/64).

## Limitations

*   CircleCI supports only 64-bit `arm64` architectures.
    
*   In CircleCI Server, Arm resources are only available when using the EC2 provider for VM service or machine provisioner. No Arm instances are available in GCP.
    
*   If you run into issues with orbs, or if there is software you require that is not available in the image, [submit a feature request](https://circleci.canny.io/cloud-feature-requests).
    

## Arm on Docker

For further information on using Arm with the Docker execution environment, see the [Using the Docker Execution Environment](https://circleci.com/docs/guides/execute/using-docker/#arm) page.