Overview
Kyku is a universal infrastructure provisioning tool. Write TypeScript once, deploy anywhere — AWS, GCP, Hetzner, or DigitalOcean.
Why Kyku
Section titled “Why Kyku”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.tsworks on AWS, GCP, and Hetzner without modification. Switch providers by changing one string. - Abstract types —
instanceType: 'small'maps tot3.small(AWS),e2-small(GCP), orcpx11(Hetzner) transparently. - Auto-inferred dependencies — Reference a
Vpcobject from aVmand the dependency graph is built automatically. No explicitdepends_on. - Encrypted state by default — Secrets (passwords, tokens) are encrypted with AES-256-GCM. Safe to commit to version control.
- Auto-subnets —
distributeAcrossAzs: 3creates public and private subnets across availability zones in one line.
Comparison
Section titled “Comparison”| 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 |
Features
Section titled “Features”- Unified API — Same resource classes for every provider. One import, any cloud.
- Abstract types —
'medium'resolves tot3.medium,e2-medium, orcpx21per provider. - Auto-inferred dependencies —
vm.network = myVpccreates aVm → Vpcedge automatically. - Auto-subnets —
distributeAcrossAzs: 3injects 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 outputs —
db.outputs.endpointresolves at apply time with full type safety. - Import — Adopt existing cloud resources into Kyku management without recreating.
Architecture
Section titled “Architecture”┌──────────────────────────────────────────────────────────┐│ 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…) │└──────────────────────────────────────────────────────────┘Monorepo Structure
Section titled “Monorepo Structure”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