Orkestia
Blog
Product pages

Runner groups

Every runner group is a purpose, an integration, and a backend kind — the catalog of kinds you can create, and which page covers each one

A runner group is the long-lived pool you configure. Compute stays in your account (or on your laptop, for DevKit). Orkestia is the control plane.

The create wizard at runners.orkestia.dev asks three independent questions. The public docs used to collapse those into “AWS / Azure / Kubernetes.” This section names every kind the platform actually stores.

The conceptual model (control plane vs execution, warm pools, reconcile-loop scaling) stays on Runners concepts. The operational lifecycle (provision → scale → decommission) stays on Runner management. These pages are the kind catalog.

Three axes, not one

AxisFieldWhat it answers
PurposepurposeWhat work this pool is for
Integrationintegration_typeWhich job source (if any) the runner binary registers with
Backend kindbackend_typeWhere each execution physically runs

The create form keeps purpose and integration consistent (an agent pool forces integration=none; a GitLab pool sets purpose=gitlab_runner). The server stores them as separate enums — do not invent extra combinations in automation that the wizard would refuse.

Full purpose catalog: Purposes & integrations.

Backend kinds

backend_type is the kind. The create form lists the required config keys. Exact workflow names live in the live catalog — treat the names below as orientation, not a contract.

Production

Kind (backend_type)ConnectionShapePage
fargateAWSECS / Fargate tasksFargate
ec2_auto_scalingAWSEC2 Auto Scaling group + ECS capacity providerEC2 Auto Scaling
ec2_vmAWSOne EC2 instance per executionEC2 VM
kubernetesKubernetesOne pod per execution in a namespace you nameKubernetes
azure_container_apps_jobAzureContainer Apps JobsAzure Container Apps
azure_vmssAzureVirtual Machine Scale SetAzure VMSS
azure_vmAzureOne Azure VM per executionAzure VM
devkitnoneLaptop / hosted broker — no cloud connectionDevKit

Kubernetes groups carry production fleets. Azure Container Apps is the Azure path. Azure VM and VMSS are production-shaped, not a claim of a live fleet. AWS Fargate and EC2 are the original CI path.

Beta

Kind (backend_type)ConnectionShapePage
gceGCPOne Compute Engine VM per executionGCE
cloud_runGCPCloud Run JobsCloud Run

Treat beta kinds as partial: provisioning and launch exist in the provider libraries; warm-pool reconcile, health-reap, and multi-region are not uniformly GA. Confirm the current runner.* surface in reference.orkestia.dev before committing a production pipeline.

Reserved / do not create

Kind (backend_type)Why it existsWhat to use instead
eksLegacy label still accepted in the databaseKubernetes against an EKS cluster connection
do_app_job, do_dropletNo DigitalOcean runner backendAWS, Azure, Google Cloud, or Kubernetes
mgc_vmNot a runner kind. Magalu Cloud is the mgc.* APIMagalu for the API, not a runner group

New groups should use kubernetes for any conformant cluster — EKS, AKS, GKE, Magalu, or your own. The eks value is a reserved alias, not a second product.

Pick a kind

Fargate

Serverless AWS tasks. Default AWS CI and agent path.

EC2 Auto Scaling

Persistent ASG capacity behind ECS.

EC2 VM

Dedicated instance per execution, full warm-pool controller.

Kubernetes

Pods on any conformant cluster you already run.

Azure Container Apps

Job executions on an Azure Container Apps environment.

Azure VMSS

Scale-set capacity in Azure.

Azure VM

One Azure VM per execution.

GCE

Compute Engine VMs (beta).

Cloud Run

Cloud Run Jobs (beta).

DevKit

Cloudless local (or hosted) coding broker.

Purposes & integrations

github_actions, gitlab_runner, agent, generic — and the job-source grant each one needs.

Create path

  1. Connect the cloud (or skip it for DevKit): AWS, GCP / Azure / Magalu / Kubernetes.
  2. Open Add runner group in the Runners app. Stage 2 is Runner type — that list is this catalog, filtered by the connection you picked.
  3. Set purpose + integration. Agent pools must be created as purpose=agent; you cannot flip a CI pool later. See Agent runner groups.
  4. Fill the backend's required config keys. The create form lists them.
  5. Submit. Provisioning is runner.group-creation / runner.environment-provision-*. The group is usable only after it reaches active.
A group binds to one backend kind and one connection. There is no cross-cloud spill inside a group. Multi-cloud orgs run multiple groups.