Labels and machines

How the runs-on label picks a job's machine: size, architecture, GPUs, Windows, a provider, or on-demand only.

The runs-on label says which machine a job gets. superci alone is the default machine. Add parts, separated by dashes, to ask for something else.

runs-on: superci-8cpu-32gb

What a label can say

PartExampleMeaning
CPUssuperci-8cpuEight CPUs. Memory follows: 4 GB for each CPU.
Memorysuperci-8cpu-64gbMemory in GB.
Disksuperci-200diskDisk in GB.
Architecturesuperci-arm64Arm machines. x64 is the default.
Windowssuperci-windowsA Windows machine.
A GPUsuperci-gpuAny GPU. Name one to choose it: superci-l4.
On-demandsuperci-ondemandNever a spot machine. See Spot machines.
A providersuperci-awsOnly this provider: aws, cloudflare or modal.

Parts combine in any order: superci-16cpu-arm64-ondemand.

GPUs that can be named: t4, l4, a10g, l40s (AWS and Modal), and a100, h100, h200, b200 (Modal).

The default machine

runs-on: superci gives each provider’s standard machine:

ProviderStandard machine
AWS4 CPUs, 8 GB, 60 GB disk
Cloudflare4 CPUs, 12 GB, 20 GB disk
Modal2 CPUs, 8 GB, 64 GB disk

Under Workflows in the dashboard you can set your own default (say, 8 CPUs on arm64). A label that says nothing else then gets that machine.

Which provider runs it

A job goes to the first provider in your order that can run its machine. A provider that cannot (Cloudflare has no 16-CPU containers, only AWS has Windows) is passed by. If no provider you have added can run the machine, the job fails at once on GitHub, saying why, instead of waiting.

The largest machine

A label may ask for at most 32 CPUs, and 8 GB of memory for each CPU allowed. You can raise or lower that under Workflows → Limits. A label that asks for more is refused with a message.

Your own label

The word superci is your control plane’s label. If you set another when deploying it, every example here uses that word instead.