A CLI that manages the lifecycle of a self-hosted product on a single Linux machine running Docker Compose: install, configure, update, roll back, back up, restore, diagnose.
The unit of delivery is a release bundle — an immutable archive containing a manifest, Compose files, configuration templates and lifecycle hooks. The unit of management is an installation — the state of one deployment on one machine.
Not a container orchestrator, an infrastructure provisioner, a secret manager, a backup engine, a workflow engine, or a CI system. It coordinates Docker Compose, SOPS, age, systemd and the release's own hooks; it owns ordering, atomicity, verification and reporting.
That boundary is the point. Everything it does is a sequence of steps against
tools that already exist, and every step can be planned with --dry-run,
journaled, verified afterwards, and undone.
curl -fsSL https://morzecrew.github.io/morzer/install.sh | sh -s -- --version 0.10.0Verifies the checksum before it installs, and the signature too when minisign
is there. --print-only shows what it would do and changes nothing.
Unpacking needs zstd on the machine — releases are tar.zst and GNU tar runs
zstd as a filter rather than decompressing itself. Most servers have it;
minimal images often do not.
just demo # a throwaway installation under ./tmp, touching nothing real
just demo-plan # what `apply` would do, as a step list with a config diff
just demo-recovery # delete an installation and rebuild it from an offline keyBuilding needs Go 1.26+. At runtime a machine needs docker, docker compose
and sops; the versions a release requires are declared in its manifest,
checked in preflight and reported by doctor.
https://morzecrew.github.io/morzer/
| Your first deployment | Empty machine to running product, on a throwaway directory |
| Operating | Updating, rolling back, secrets, backups, offline installs, recovery |
| Authoring a bundle | Shipping your own product through this |
| Reference | Commands, exit codes, the manifest schema, the hook ABI |
| Explanation | Architecture, the step engine, the secrets model |
Every command morzer --help lists works against a real bundle, delivered as a
directory, a tar.zst, an HTTPS URL or an OCI artifact, and optionally signed:
install, update and rollback, backup and restore, secrets, release tasks, logs,
signed attestations, fleet views and support bundles. An acceptance run
installs, updates and rolls back a real deployment against real Docker on every
code change.
Work that has not shipped is designed in rfcs/ before it is built,
one numbered document per piece with its decisions recorded and its exclusions
reasoned. rfcs/INDEX.md is the table of contents.
CONTRIBUTING.md — the just ci loop, the commit
convention, the architecture rules and how they are enforced.
SECURITY.md states the threat model and the known gaps.
CHANGELOG.md, in Keep a Changelog format.
MIT — see LICENSE.