Vilice is a proof of concept. Run it on a box you can afford to lose.

vilice prepare

Say what this box is for and lay the accountability floor.

root recorded before it runs

vilice prepare --help
vilice prepare — Say what this box is for and lay the accountability floor

Declares the box's role, installs what that role needs, and lays the
accountability floor — the append-only record every later command
writes to. Required before any deploy.

  host      runs apps: Podman, restic and Caddy
  balancer  fronts other boxes: Caddy alone, and runs no apps

The role is written down, and re-preparing as a different role is
refused — converting a box is a decision, not a typo. Everything else
is idempotent: re-running after an upgrade converges whatever the new
version added, and is the normal thing to do, not a repair.

Opens the role's ports when a firewall is present, and shows an
apt-style summary for confirmation before it touches anything.

Usage:
  vilice prepare <host|balancer> [--yes]

Flags:
  -y, --yes  Skip the confirmation. For automation, not for haste.

Examples:
  Set this box up to run apps.
    sudo vilice prepare host

  Set it up to front other boxes, unattended.
    sudo vilice prepare balancer --yes

Scope:  root — run on the box as root; never reachable over scoped SSH
Record: written before the command runs