Alpha — actively under development
Amadla is an infrastructure automation ecosystem that simplifies provisioning of servers — from a single laptop to a fleet of cloud instances. It works on Linux, macOS, Windows, and OpenBSD.
Most infrastructure tools are environment-centric: settings live near the environment, and requirements are scattered across documentation and tribal knowledge. Amadla inverts this to be resource-centric — each resource carries its own schema-validated configuration. The same entity that describes an application drives every tool in the chain, from provisioning to validation.
The Amadla ecosystem covers four domains that are traditionally handled by separate, disconnected tools: Configuration Management, Infrastructure as Code, Image Building, and Secrets Management. Instead of stitching these together yourself, Amadla unifies them through a common entity model and plugin-driven pipeline.
Amadla follows the UNIX philosophy: small, focused CLI tools that each do one thing well and communicate via stdin/stdout with structured data. You can replace, skip, or extend any tool in the chain.
Configuration is defined using HERY (Hierarchical Entity Relational YAML) — simple, structured, schema-validated YAML files stored in Git. HERY extends YAML with just five reserved properties (_type, _extends, _meta, _body, _requires), keeping the format easy to read and write. Entities describe your desired state and can reference and inherit from each other through deep merge. For example, a networking entity attached to an application can inform the HTTP server and automatically open the right firewall ports.
| Tool | Role |
|---|---|
| 🐇 amadla | Orchestrator — executes Pipeline entities, coordinates the ecosystem |
| 🐻 hery | Data storage — entity management with schema validation, Git versioning, SQLite caching |
| 🚪 doorman | Secrets management — resolves secrets from pluggable backends (Vault, AWS, KeePassXC, etc.) |
| 🏗️ raise | Infrastructure provisioner — provisions VMs and cloud resources via plugins |
| 📥 lay | Installer — installs packages, applications, and language runtimes |
| 🤝 enjoin | System configurator — manages users, services, cron, firewall, security |
| 🧶 weaver | Template generator — renders config files using pluggable template engines |
| 🧑⚖️ judge | Validator — checks requirements, cross-entity conflicts, and drift detection |
| 🔬 unravel | Discovery — discovers existing system state and outputs it as entities |
| 🍽️ waiter | Deployment — blue-green, canary, and rolling deployment strategies |
| 🐙 conduct | Multi-server orchestration — coordinates tools across distributed nodes |
| 💨 dryrun | Safe testing — tests settings with auto-revert (e.g., prevents SSH lockout) |
| ⛯ lighthouse | Notifications — alerting via webhook, SMS, email, and REST API plugins |
| 🗑 garbage | Cleanup — tracks and removes what's no longer needed |
- amadla — The orchestrator CLI
- Documentation — Architecture, concepts, and guides