---
title: "Self-hosted runner feature comparison"
description: "Compare the features of CircleCI machine runner and container runner, see the key differences, and decide which runner to choose for your jobs."
platform: "Cloud, Server"
doc_version: "unversioned"
last_updated: "2026-10-14"
---

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

# Self-hosted runner feature comparison

This page offers a comparison of the features available for CircleCI machine runner vs. CircleCI container runner.

## Comparison matrix

| Feature | Description | Machine Runner | Container Runner |
| --- | --- | --- | --- |
| **Environment** | Where jobs run and how resources are managed | Full VM/bare metal | Kubernetes Pods |
| **Configuration File** | Primary file for runner setup | YAML config (location depends on OS) | Helm `values.yaml` |
| **Resource Control** | How compute resources are allocated | System level | Kubernetes limits |
| **Architecture Support** | CPU architectures available for builds | [Depends on OS](https://circleci.com/docs/runner/runner-overview/#available-self-hosted-runner-platforms) | AMD64/ARM64 with `nodeSelector` |
| **Job Isolation** | How jobs are kept separate | VM-level | Container-level |
| **Scaling** | How runner capacity scales with demand | [Manual/custom](https://circleci.com/docs/runner/runner-scaling/#scaling-data) | Kubernetes-based auto-scaling |
| **Service Containers** | Support for additional services in build | Not supported | Extensive support with resource controls |
| **Execution Modes** | How runner handles job execution | `single-task` or `continuous` | Pod-based execution |
| **Docker Support** | How Docker-in-Docker is handled | Native OS support | Possible with [Third-Party Tools](https://circleci.com/docs/runner/container-runner/#building-container-images) |
| **Resource Cleanup** | How build environments are cleaned after jobs | Working directory cleanup | Container lifecycle |

## Feature Highlights

**Machine Runner**

*   Latest generation of machine-based runners.
    
*   Full access to underlying operating system.
    
*   Ideal for workflows requiring VM-level isolation.
    
*   Consistent [Environment Variables](https://circleci.com/docs/reference/variables/#built-in-environment-variables) with `CIRCLECI_RUNNER_*` prefix.
    
*   Supports SSH connectivity for debugging.
    

**Container Runner**

*   Kubernetes-native solution for container-based workflows.
    
*   Fine-grained resource allocation and constraints.
    
*   Supports service container configurations with pattern matching.
    
*   Advanced node selection via Kubernetes annotations.
    
*   Custom security contexts and volume mounting.
    
*   Support for spot instances via tolerations.
    
*   Configurable resource limits for primary and service containers.
    
*   Supports SSH connectivity for debugging. Refer to [Enable Rerun Job With SSH](https://circleci.com/docs/runner/container-runner-installation/#enable-rerun-job-with-ssh).
    

## Key differences

**Machine runner** offers full VM isolation with the newest configuration patterns and improved controls.

**Container runner** leverages Kubernetes for:

*   Container-based isolation.
    
*   Better scaling capabilities.
    
*   Advanced resource management.
    
*   Multiple architecture support.
    

## When to choose each runner

**Machine runner**: Choose for full system access, custom system dependencies, or when Kubernetes is not available.

**Container runner**: Best for cloud-native applications, teams using Kubernetes, and workloads that benefit from container orchestration.