Deploy anywhere.
One config.
Multi-provider Docker Swarm deployments. Hetzner, Scaleway, and more. No state files. Config is state.
Multi-provider
Hetzner and Scaleway today. Same interface, same pipeline. Swap with a config change.
Idempotent
Every deploy is safe to re-run. Resources are named deterministically from config. No UUIDs, no state files.
Branch deploys
Isolated environments per branch. Own server, firewall, network, tunnel, DNS. Zero conditional logic.
workspace: "myapp"
compute:
provider: hetzner
credentials: { api_key: $HETZNER_TOKEN }
servers:
master: { region: nbg1, instance_type: cax11 }
web: { region: nbg1, instance_type: cax11 }
services:
web:
port: 80
replicas: 4
runs_on: [master, web]
db:
image: postgres:17
volumes: [postgres_data:/var/lib/postgresql/data]