Skip to content

Abstract Types

Kyku uses abstract types so your config works across providers without modification. Each provider maps abstract values to their cloud-native equivalents.

These are the portable sizes. microxlarge stay on the original burst/shared families. 2xlarge and up step onto larger general-purpose machines.

Abstract ~vCPU / RAM AWS GCP Hetzner DO
micro 1 / 1 GB t3.micro e2-micro cax11 s-1vcpu-1gb
small 2 / 2 GB t3.small e2-small cax21 s-1vcpu-2gb
medium 2 / 4 GB t3.medium e2-medium cax31 s-2vcpu-4gb
large 2 / 8 GB t3.large e2-standard-4 cax41 s-4vcpu-8gb
xlarge 4 / 16 GB t3.xlarge e2-standard-8 ccx13 s-8vcpu-16gb
2xlarge 8 / 32 GB t3.2xlarge e2-standard-16 ccx33 g-8vcpu-32gb
4xlarge 16 / 64 GB m6i.4xlarge e2-standard-32 ccx43 g-16vcpu-64gb
8xlarge 32 / 128 GB m6i.8xlarge n2-standard-48 ccx53 g-32vcpu-128gb

Exact vCPU and memory still follow the provider SKU. The ~ column is only a portable hint.

To pin a specific provider-native type, use a provider map:

instanceType: {
aws: 'm5.large',
gcp: 'n2-standard-2',
hetzner: 'ccx13',
}

Unlisted providers fall back to the abstract mapping.

Abstract AWS GCP Hetzner DO
ubuntu-22.04 ami-0c55b… (varies by region) ubuntu-os-cloud/ubuntu-2204-lts ubuntu-22.04 ubuntu-22-04-x64
ubuntu-24.04 ami-0e86e2… (varies by region) ubuntu-os-cloud/ubuntu-2404-lts ubuntu-24.04 ubuntu-24-04-x64
debian-12 ami-0c… (varies by region) debian-cloud/debian-12 debian-12 debian-12-x64

Custom images use the provider-native identifier directly:

image: 'ami-0c55b159cbfafe1f0' // Passes through unmapped on AWS
Abstract AWS GCP Hetzner DO
us-east us-east-1 us-east1 us-east nyc1
us-west us-west-2 us-west2 us-west sfo3
eu-central eu-central-1 europe-west1 eu-central fra1
eu-west eu-west-1 europe-west2 eu-west lon1
ap-southeast ap-southeast-1 asia-southeast1 sgp1
region: {
aws: 'eu-west-2',
gcp: 'europe-west2-a',
}

Databases use a separate instance type map:

Abstract AWS RDS GCP Cloud SQL
micro db.t3.micro db-f1-micro
small db.t3.small db-g1-small
medium db.t3.medium db-custom-2-8192
large db.t3.large db-custom-4-16384
xlarge db.t3.xlarge db-custom-8-32768
2xlarge db.t3.2xlarge db-custom-16-65536
4xlarge db.m6i.4xlarge db-custom-32-131072
8xlarge db.m6i.8xlarge db-custom-48-196608