Wer schon einmal mit Terraform oder CloudFormation gearbeitet hat, kennt das Spiel: Man kämpft mit state locks, driftenden Ressourcen und einer DSL (Domain Specific Language), die sich oft mehr nach Konfiguration als nach echtem Code anfühlt. Infrastructure as Code (IaC) sollte uns eigentlich das Leben erleichtern, fühlt sich aber oft wie das Verwalten einer gigantischen, zerbrechlichen Datenbank an.
Hier kommt Formae ins Spiel.
Was ist Formae? (Agentic IaC)
Formae verfolgt einen radikal anderen Ansatz, den die Macher als “Agentic IaC” bezeichnen. Anstatt einen zentralen State in einem S3-Bucket zu pflegen, agiert Formae als intelligenter Agent. Das Tool nutzt Pkl (die von Apple entwickelte Configuration Language), um Infrastruktur zu definieren.
Der entscheidende Unterschied zu klassischem IaC:
- State-less by Design: Formae liest den Ist-Zustand direkt von der Cloud-API ab. Es gibt kein lokales oder remote State-File, das korrumpieren kann.
- Pkl als Powerhouse: Wir nutzen eine echte Programmiersprache mit Typensicherheit, statt uns durch endlose YAML-Wüsten zu wühlen.
- Echtzeit-Synchronisation: Mit dem
--watchMode verhält sich deine Infrastruktur wie dein lokaler Dev-Server – Speicherst du die Datei, passt der Agent die Cloud-Ressourcen sofort an.
Die Basis: Pkl und die “Forma”
In Formae definieren wir unsere Ressourcen in sogenannten .pkl Dateien. Diese Dateien nennen wir “Formas”. Da Pkl von Haus aus Typen unterstützt, wissen wir schon beim Schreiben, ob ein Parameter valide ist – lange bevor wir apply tippen.
Ein einfacher S3-Bucket in Formae sieht zum Beispiel so aus:
import "package://pkg.formae.io/aws/v1/s3.pkl"
bucket = new s3.Bucket {
name = "my-unique-app-assets"
region = "eu-central-1"
versioning = true
}
Das ist sauber, lesbar und vor allem: Typsicher.
Hands-on: Deine erste “Forma” deployen
Theorie beiseite, lass uns das Ding fliegen lassen. Um mit Formae zu arbeiten, brauchen wir den Formae Agent und das Pkl CLI.
1. Setup & Installation
Der Formae Agent ist das Herzstück. Er fungiert als Interpreter zwischen deinem Pkl-Code und den Cloud-APIs (wie AWS, Azure oder GCP). Die Installation ist dank der Go-Basis denkbar einfach:
# Beispiel für macOS/Linux via Brew oder Direct Download
curl -sSL https://install.formae.io | sh
Vergewissere dich auch, dass du pkl installiert hast, damit dein Editor dir direkt beim Schreiben der Infrastruktur Feedback zu Typen und Validierungen geben kann.
2. Das Manifest: main.pkl
Wir erstellen ein Projektverzeichnis und definieren unsere Infrastruktur. Nehmen wir ein praxisnahes Beispiel: Einen einfachen S3-Bucket für statische Assets.
// main.pkl
import "package://pkg.formae.io/aws/v1/s3.pkl"
bucket = new s3.Bucket {
name = "julianpaul-dev-assets"
region = "eu-central-1"
acl = "private"
tags = new {
["Environment"] = "Development"
["ManagedBy"] = "Formae"
}
}
3. Der “Magic Moment”: formae apply
Hier unterscheidet sich Formae massiv von Terraform. Anstatt erst einen plan zu generieren, den man mühsam reviewen muss (nur um dann festzustellen, dass der State gelockt ist), führen wir den Agent aus:
formae apply main.pkl --watch
Was passiert hier im Hintergrund?
Der Agent analysiert deine main.pkl, fragt die AWS API nach dem aktuellen Zustand des Buckets ab und berechnet die Differenz. Durch den --watch Flag bleibt der Prozess aktiv. Wenn du jetzt im Editor versioning = true hinzufügst und speicherst, triggert Formae sofort das Update.
Tipp: Dieser “Live-Reload”-Workflow für Infrastruktur ist ein absoluter Gamechanger für die Developer Experience. Kein Warten mehr auf CI/CD-Pipelines für kleine Config-Änderungen in der Dev-Umgebung.
Reconcile vs. Patch: Die Kontrolle behalten
Formae bietet zwei Modi, wie es mit Änderungen umgeht:
- Reconcile Mode (Standard): Der Agent stellt sicher, dass die Cloud exakt so aussieht wie dein Code. Manuelle Änderungen in der AWS Console werden gnadenlos überschrieben. Source of Truth ist der Code.
- Patch Mode: Ideal für Migrationen. Formae ändert nur die Felder, die du explizit im Pkl-Code definiert hast, und lässt den Rest der Ressource unberührt.
Mein Fazit: Ist Formae der “Terraform-Killer”?
Formae ist ein frischer Wind in der oft starren IaC-Welt. Die Kombination aus Pkl als mächtiger Konfigurationssprache und dem agentic Ansatz ohne mühsame State-Files ist technisch brillant gelöst.
Wann solltest du Formae nutzen?
- Wenn du genug von
terraform.tfstateKonflikten in deinem Team hast. - Wenn du eine echte “Programmiersprache” (Pkl) statt YAML-Hacks für komplexe Logik bevorzugst.
- Für dynamische Umgebungen, in denen “Live-Feedback” bei Infrastruktur-Änderungen den Workflow massiv beschleunigt.
Wo sind die Grenzen? Wir müssen realistisch bleiben: Das Ökosystem um Formae wächst noch. Während die Core-Provider für AWS und Azure stabil sind, bietet Terraform (noch) die breitere Palette an Nischen-Providern. Formae ist aktuell perfekt für Greenfield-Projekte oder Teams, die bereit sind, modernste Tools zu adaptieren.
Mein Rat: Probier es in einem Sandbox-Projekt aus. Der Moment, in dem du eine .pkl Datei speicherst und siehst, wie deine Infrastruktur sich in Sekunden ohne Plan-Apply-Zyklus synchronisiert, wird dich überzeugen.
