Zero-touch infrastructure orchestration: turn declarative service manifests into resolved, deployed infrastructure — with security zones inferred from your data, not bolted on.
  • OCaml 65.6%
  • Shell 28%
  • Dockerfile 6%
  • Dune 0.4%
Find a file
2026-09-08 17:32:53 +02:00
.marmiton chore(repo): repackage hamac as a standalone public repository 2026-09-08 10:14:42 +02:00
doc hamac-pxe(feat): bmaptool disk-write path for physical PXE installs, qemu-img built static 2026-08-12 15:46:05 +02:00
docker chore(repo): en-têtes SPDX AGPL, namespace registry hamac, gitignore .hamac 2026-09-08 11:19:58 +02:00
opam chore(repo): repackage hamac as a standalone public repository 2026-09-08 10:14:42 +02:00
pkgs chore(repo): en-têtes SPDX AGPL, namespace registry hamac, gitignore .hamac 2026-09-08 11:19:58 +02:00
tests chore(repo): repackage hamac as a standalone public repository 2026-09-08 10:14:42 +02:00
tools hamac-pxe(fix): add missing ext4/jbd2 modules to initramfs 2026-08-14 11:34:22 +02:00
.gitignore chore(repo): en-têtes SPDX AGPL, namespace registry hamac, gitignore .hamac 2026-09-08 11:19:58 +02:00
CLA.md docs(cla): adopte l'Individual CLA OCamlPro (verbatim) au lieu du draft 2026-09-08 15:26:32 +02:00
CONTRIBUTING.md docs: URL canonique Forgejo (forge.ocamlpro.com/OSS/hamac) + note miroir GitHub 2026-09-08 17:32:53 +02:00
dune chore(repo): repackage hamac as a standalone public repository 2026-09-08 10:14:42 +02:00
dune-project chore(repo): repackage hamac as a standalone public repository 2026-09-08 10:14:42 +02:00
LICENSE chore(repo): repackage hamac as a standalone public repository 2026-09-08 10:14:42 +02:00
LICENSING.md docs(cla): adopte l'Individual CLA OCamlPro (verbatim) au lieu du draft 2026-09-08 15:26:32 +02:00
README.md docs: URL canonique Forgejo (forge.ocamlpro.com/OSS/hamac) + note miroir GitHub 2026-09-08 17:32:53 +02:00
recipe.yaml chore(repo): repackage hamac as a standalone public repository 2026-09-08 10:14:42 +02:00

hamac

Zero-touch infrastructure orchestration: turn declarative service manifests into resolved, deployed infrastructure — with security zones inferred from your data, not bolted on.

Canonical repository: https://forge.ocamlpro.com/OSS/hamac — the GitHub repository is a read-only mirror. Please file issues and merge requests on Forgejo.

hamac is an infrastructure orchestrator for SIESTE manifests. It reads declarative .sieste.yml manifests describing services and infrastructure, resolves their dependencies to concrete providers, and provisions/deploys them — including bare-metal provisioning over PXE.

Developed by OCamlPro and released under the GNU Affero General Public License v3.0 (see LICENSE).

Components

Package Path Role
hamac pkgs/hamac CLI: validate / plan / resolve / simulate / deploy, and provision-* (render + push cloud-init/iPXE to the discovery server).
hamac-provisioning pkgs/hamac-provisioning Library: manifest parsing, provisioning-profile rendering (cloud-init + iPXE).
hamac-discovery pkgs/hamac-discovery Discovery server: stores a provisioning record per MAC and serves the aggregated cloud-init to PXE-booting machines.

Build

Requires OCaml, opam and dune. All dependencies are public opam packages.

opam install --deps-only .
dune build

Build files (dune, dune-project, opam/*.opam) are generated from recipe.yaml by marmiton. Edit the recipe, then run marmiton build to regenerate them (maintainer flow only — the generated files are committed, so building does not require marmiton).

Usage

# Validate / plan / resolve manifests
hamac validate manifests/*.sieste.yml
hamac plan     services.sieste.yml
hamac resolve  services.sieste.yml

# Bare-metal provisioning
hamac provision-dryrun --profile=dev-workstation.yaml
hamac provision-push   --profile=dev-workstation.yaml \
                       --mac=aa:bb:cc:dd:ee:ff \
                       --discovery=http://discovery:8877
hamac provision-clear  --mac=aa:bb:cc:dd:ee:ff --discovery=http://discovery:8877

Run hamac --help for the full command list.

Bare-metal provisioning (PXE)

hamac-discovery runs alongside a PXE stack (docker/hamac-pxe, dnsmasq proxy DHCP + TFTP + iPXE). A machine boots over PXE, fetches its cloud-init from the discovery server (keyed by MAC), and the OS image is written to disk. See doc/PROVISIONING_SPEC.md for the full contract (image formats, bmaptool write path, first-boot resize).

Documentation

Licensing

hamac is dual-licensed by OCamlPro:

  • Open sourceGNU AGPL-3.0. Free to use, modify and redistribute under the AGPL's terms, including its network-copyleft: if you run a modified version as a network service, you must offer its users the complete corresponding source.
  • Commercial — for organizations that cannot or do not wish to comply with the AGPL (e.g. embedding hamac in a proprietary product or a closed-source SaaS), a commercial license is available from OCamlPro.

See LICENSING.md for details. Contributions require a signed CLA so they can be offered under both licenses — see CONTRIBUTING.md.

Commercial licensing & questions: contact@ocamlpro.com.