Skip to content

What is Amadla?

Amadla is an infrastructure automation ecosystem for setting up and managing servers — from a single laptop to a fleet of cloud instances. It works on any OS (Linux, macOS, Windows, OpenBSD) and follows the UNIX philosophy: small, focused tools that each do one thing well and can be mixed, replaced, or extended independently.

Each tool reads specific types of HERY entities (structured YAML files that describe what you need) and figures out how to make it happen on the target platform. Tools communicate via stdin/stdout, piping YAML or JSON between each other.

Core Differentiator

Amadla is resource-centric: instead of defining environments (like Terraform or Ansible), each resource (application, service, database) carries its own schema-validated configuration. Requirements are declared explicitly — not buried in documentation — and enforced by schemas. Layers compose and merge, giving a single queryable source of truth.

The Idea: Lists and Specialists

Imagine you have a busy Saturday. You need groceries, your dog needs a vet visit, and your kid wants a custom pizza. You write three lists:

  • Grocery list — milk, eggs, bread, avocados
  • Vet appointment — dog name, symptoms, vaccination history
  • Pizza order — large, extra cheese, pepperoni, no olives

Each list goes to a specialist who knows exactly how to read it. The grocery store reads your grocery list. The vet reads the appointment details. The pizza shop reads the pizza order. You don't explain how to stock shelves, perform surgery, or operate a pizza oven — you just describe what you want, and each specialist figures out the rest.

Now imagine doing this without lists. You walk into the grocery store and try to remember everything from memory. You forget the avocados. At the vet, you can't remember when the last vaccination was. At the pizza shop, you order the wrong size. Every stop is trial-and-error.

That's the difference Amadla makes. In infrastructure automation:

  • HERY entities are the lists — structured, validated, reusable descriptions of what you need
  • Tools are the specialists — each reads specific entity types and knows how to act on them
  • The pipeline is your Saturday route — amadla looks at all your lists, figures out which specialist handles each one, and works out the right order

A package entity goes to lay (the installer). A template entity goes to weaver (the config generator). A secret entity goes to doorman (the secrets resolver). A user entity goes to enjoin (the system configurator). Each tool only understands its own entity types — and that's the point. Simple tools, clear boundaries, no confusion.

The Pipeline

Amadla Ecosystem Context Amadla Ecosystem Context

Define requirements (hery) → Resolve secrets (doorman) → Provision infra (raise)
    → Install apps (lay) → Configure system (enjoin) → Generate configs (weaver) → Audit state (judge)

Because every tool follows the same protocol (stdin/stdout, structured data, standard exit codes), you can:

  • Replace any tool with your own implementation
  • Skip tools you don't need
  • Add custom tools that read new entity types
  • Pipe tools together in any combination

Ecosystem at a Glance

Category Count Examples
Core Tools 14 hery, doorman, weaver, judge, lay, raise, enjoin, waiter, unravel, conduct, lighthouse, garbage, dryrun, amadla
Libraries 6 LibraryUtils, LibraryFramework, LibraryPluginFramework, LibraryDoormanFramework, LibraryJudgeFramework, LibraryEnjoinFramework
Doorman Plugins 16 doorman-vault, doorman-aws, doorman-keepassxc, doorman-keycloak, ...
Raise Plugins 10 raise-libvirt, raise-virtualbox, raise-wsl, raise-xen, ...
Judge Plugins 3 judge-application, judge-system, judge-infrastructure
Weaver Plugins 4 weaver-jinja, weaver-js-handlebars, weaver-js-mustache, weaver-qute
Enjoin Plugins 10 enjoin-user, enjoin-service, enjoin-firewall, enjoin-cron, ...
Entity Definitions 27+ 15 types + sub-types + Tools

Total: 52+ repositories across AmadlaOrg (public) and AmadlaCom (private).

Key Technologies

HERY is YAML-based, entities are validated against JSON Schema, and versioning requires Git. All tools and libraries are written in Go.

Concern Technology
Language Go 1.24+
CLI Framework Cobra (wrapped by LibraryFramework)
Data Storage YAML + SQLite caching (HERY)
Schema Validation JSON Schema
Entity Versioning Git
Secrets Encrypted in-memory cache (doorman)
Template Engines Jinja, Mustache, Handlebars, Qute (via weaver plugins)