> ## Documentation Index
> Fetch the complete documentation index at: https://ona.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Environment classes

Environment classes define computing resources (instance type, disk size) for development environments.

## Default classes

| Class Name       | Instance Type             | Disk Size | Spot Instance |
| ---------------- | ------------------------- | --------- | ------------- |
| Small            | M6i Large (m6i.large)     | 45 GB     | No            |
| Regular          | M6i XLarge (m6i.xlarge)   | 80 GB     | No            |
| Large            | M6i 2XLarge (m6i.2xlarge) | 100 GB    | No            |
| Extra Large      | M6i 8XLarge (m6i.8xlarge) | 200 GB    | No            |
| Extra Large Spot | M7i 8XLarge (m7i.8xlarge) | 200 GB    | Yes           |
| GPU Large        | G5 4XLarge (g5.4xlarge)   | 300 GB    | No            |
| GPU Large Spot   | G5 4XLarge (g5.4xlarge)   | 300 GB    | Yes           |

## Create custom classes

1. Go to **Organization settings → Environment Classes** (under AWS runners)
2. Click **Add Environment Class**
3. Configure:
   * **Name** and **Description**
   * **Disk size**: Storage capacity
   * **Instance type**: Any x64 EBS-enabled type (e.g., t3.medium, m5.large, c5.xlarge)

<img src="https://mintcdn.com/gitpod-13c83c2b/OMcPDhR_rebioHbO/images/docs/ona/runners/aws-add-class-step-1.webp?fit=max&auto=format&n=OMcPDhR_rebioHbO&q=85&s=8c1304f0d918d04fa74f4b3607dc1389" alt="Environment class creation form showing name and description fields" width="1632" height="1328" data-path="images/docs/ona/runners/aws-add-class-step-1.webp" />

<img src="https://mintcdn.com/gitpod-13c83c2b/OMcPDhR_rebioHbO/images/docs/ona/runners/aws-add-class-step-2.webp?fit=max&auto=format&n=OMcPDhR_rebioHbO&q=85&s=92672420849bdb379ae131a1db04f355" alt="Environment class creation form showing disk size and instance type configuration" width="1624" height="1452" data-path="images/docs/ona/runners/aws-add-class-step-2.webp" />

## Modify classes

Only name and description can be edited after creation. To change disk size or instance type, create a new class and optionally disable the old one.

## Disable classes

When disabled:

* Existing environments continue running
* No new environments can use this class

## Use classes

Select environment classes when creating environments manually or via project configuration.

## Supported instance types

Requirements:

* EBS volume support
* X64 architecture (Intel or AMD)

<Note>ARM-based instance types (e.g., Graviton) are not currently supported.</Note>

Examples by category:

* **General purpose**: `t3.medium`, `t3.large`, `m5.large`, `m5.xlarge`
* **Compute optimized**: `c5.large`, `c5.xlarge`
* **Memory optimized**: `r5.large`, `r5.xlarge`
* **Storage optimized**: `i3.large`, `d2.xlarge`

### Considerations

* **Regional availability**: Not all types available in every region
* **Quotas**: Ensure sufficient AWS account quota
* **Costs**: Pricing varies by instance family
* **Instance generations**: Newer generations offer better price-performance
* **Storage**: Choose instances with more storage than RAM

See [AWS EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/) for details.

## Spot instance reclamation

When using AWS Spot instances, Ona automatically handles reclamation:

1. The environment on the reclaimed instance is terminated
2. A new instance is provisioned automatically
3. The EBS volume is reattached to the new instance
4. All data on the EBS volume is preserved

## GPU / CUDA workloads

To run NVIDIA CUDA workloads, select the **Data Science** environment class (`g5.4xlarge`) when creating an environment or configuring a project. See the [gpu-demo repository](https://github.com/ona-samples/gpu-demo) for a working `devcontainer.json` and Dockerfile with CUDA support via [containers.dev features](https://containers.dev/features).

## Best practices

* Standardize classes across your organization
* Limit to classes teams actually need
* Create specialized classes for specific workloads (data processing, frontend, etc.)
* Review usage patterns and adjust regularly
