> ## 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.

# Costs & budgeting

Costs for runner infrastructure only. Does not include development environment costs or license fees.

> [!NOTE]
>
> AWS pricing varies by region. Check [AWS pricing](https://aws.amazon.com/pricing/) for current rates.

## Billable resources

| Resource | Purpose |
| - | - |
| ECS Service | Manages environments |
| DynamoDB Table | Stores environment state |
| S3 Bucket | Docker and image caches |
| ECR Repository | Dev container image cache (when [enabled](https://ona.com/docs/ona/runners/devcontainer-image-cache.md)) |
| EBS Snapshots | [Base snapshot cache](https://ona.com/docs/ona/runners/aws/base-snapshots.md) for eligible Enterprise runners |
| CloudWatch Logs | Runner task logs |
| Lambda Functions | CloudFormation Custom Resources for network configuration and capacity provider lifecycle (negligible / free tier) |

## Base snapshot costs

For eligible Enterprise AWS runners, Ona maintains [base snapshots](https://ona.com/docs/ona/runners/aws/base-snapshots.md) to reduce environment startup time.

* Ona meters each initial build, daily refresh, retry, and replacement as normal environment usage while its background environment runs.
* AWS bills the EC2 instance and EBS volume used during each build as part of your cloud bill.
* AWS bills EBS snapshot storage. Ona does not meter snapshot storage separately.

Ona normally keeps one compatible successful snapshot for each eligible runner. During a refresh, the previous snapshot remains available until its replacement is ready, so both snapshots can appear on the AWS bill for a short time.

## Baseline costs

* **ECS task**: Less than \$8/month (covered by AWS free tier), fixed regardless of environment count
* **Other services** (DynamoDB, S3, CloudWatch): Less than 1% of runner cost

## Viewing costs in AWS Cost Explorer

### Runner costs

1. Open AWS Cost Explorer
2. Group by **Usage Type**
3. Filter by CloudFormation stack name (find it at **Settings → Runners**):
   * Tag: `aws:cloudformation:stack-name`
   * Or: `aws:ecs:clusterName`

![Stack Name Filter](https://mintcdn.com/gitpod-13c83c2b/-CSjSbIr1VxJFl5t/images/docs/flex/runners/aws_stack_name_filter.png?fit=max\&auto=format\&n=-CSjSbIr1VxJFl5t\&q=85\&s=3c3b44768f2fbd531719769221c4e0e7)

### Environment costs

Filter by environment ID using the **Name** tag with value `gitpod-environment-<ID>`. Find the ID via **Copy ID** in environment details.

![Environment ID Filter](https://mintcdn.com/gitpod-13c83c2b/-CSjSbIr1VxJFl5t/images/docs/flex/runners/aws_environment_id_filter.png?fit=max\&auto=format\&n=-CSjSbIr1VxJFl5t\&q=85\&s=d11f2c6dc33aa87d1d12d0cc03a7c82f)

## EC2 instance tagging

EC2 instances inherit tags from the CloudFormation template for cost allocation and access control.

**Add tags:**

1. Open your runner's CloudFormation stack
2. Select **Update** → **Use current template**
3. Add tags in format `Key=Value`
4. Complete the update

> [!NOTE]
>
> Tag changes don't apply to the running ECS task immediately. Force a new deployment: **ECS → Clusters → your cluster → Service → Update → Force new deployment**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.