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]