Self-hosted runner feature comparison

1 month ago1 min read
Last updated • Read time
Cloud
This document is applicable to CircleCI Cloud
Server v4+
This document is applicable to CircleCI Server v4+

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

Comparison matrix

FeatureDescriptionMachine RunnerContainer 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

AMD64/ARM64 with nodeSelector

Job Isolation

How jobs are kept separate

VM-level

Container-level

Scaling

How runner capacity scales with demand

Manual/custom

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

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 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 - Open preview.

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.