Skip to content

Overview

Kyku is a universal infrastructure provisioning tool. Write TypeScript once, deploy anywhere — AWS, GCP, Hetzner, or DigitalOcean.

Provisioning infrastructure typically means learning a DSL (HCL for Terraform, Bicep for Azure) or managing verbose SDK calls. Kyku abstracts the cloud provider away entirely:

  • Same config, any provider — Your infrastructure.ts works on AWS, GCP, and Hetzner without modification. Switch providers by changing one string.
  • Abstract typesinstanceType: 'small' maps to t3.small (AWS), e2-small (GCP), or cpx11 (Hetzner) transparently.
  • Auto-inferred dependencies — Reference a Vpc object from a Vm and the dependency graph is built automatically. No explicit depends_on.
  • Encrypted state by default — Secrets (passwords, tokens) are encrypted with AES-256-GCM. Safe to commit to version control.
  • Auto-subnetsdistributeAcrossAzs: 3 creates public and private subnets across availability zones in one line.
Kyku Terraform
Language TypeScript HCL
Abstraction Abstract types → provider-native Provider-native only
Dependencies Auto-inferred from object refs Explicit depends_on
State encryption Built-in (AES-256-GCM) Manual or paid
Multi-provider Single config, single run Separate configs per provider
  • Unified API — Same resource classes for every provider. One import, any cloud.
  • Abstract types'medium' resolves to t3.medium, e2-medium, or cpx21 per provider.
  • Auto-inferred dependenciesvm.network = myVpc creates a Vm → Vpc edge automatically.
  • Auto-subnetsdistributeAcrossAzs: 3 injects 3 public + 3 private subnets.
  • Plan/Apply — Preview every change with human-readable diffs before committing.
  • Encrypted state — AES-256-GCM with PBKDF2 key derivation. Safe in git.
  • Parallel execution — Independent resources provision concurrently.
  • Multi-provider — Mix AWS and GCP resources in a single config file.
  • Type-safe outputsdb.outputs.endpoint resolves at apply time with full type safety.
  • Import — Adopt existing cloud resources into Kyku management without recreating.
┌──────────────────────────────────────────────────────────┐
│ infrastructure.ts (your config — Vpc, Vm, Database…) │
└──────────────────┬───────────────────────────────────────┘
┌──────────────────▼───────────────────────────────────────┐
│ @kykucloud/types — Resource classes, config interfaces │
│ @kykucloud/core — Engine, DAG builder, diff, crypto │
│ — Plan/apply lifecycle, state manager │
└──────────────────┬───────────────────────────────────────┘
┌──────────────────▼───────────────────────────────────────┐
│ @kykucloud/aws │ @kykucloud/gcp │ @kykucloud/hetzner │
│ @kykucloud/digitalocean │ │
└──────────────────┬───────────────────────────────────────┘
┌──────────────────▼───────────────────────────────────────┐
│ @kykucloud/cli — Commander.js CLI (kyku plan/apply…) │
└──────────────────────────────────────────────────────────┘
packages/
├── types/ @kykucloud/types — Shared interfaces & resource classes
├── core/ @kykucloud/core — State engine, DAG, diff, crypto, auth
├── aws/ @kykucloud/aws — AWS SDK v3 provider
├── gcp/ @kykucloud/gcp — Google Cloud provider
├── hetzner/ @kykucloud/hetzner — Hetzner Cloud provider
├── digitalocean/@kykucloud/digitalocean — DigitalOcean provider
└── cli/ @kykucloud/cli — Commander.js CLI