v0.1.1
In node repos the shared core compose lives inside the pinned commons submodule; letting dclint rewrite it dirties the submodule, which makes sync/repository abort the nightly capture-up. Harmless in the standalone commons repo (no commons/ dir).
apex.ermnvldmr.com
The commons of the apex fleet: a stock-python engine (apex <group>/<action>) and
the shared core docker-compose, consumed by every node as the commons/ git submodule.
Layout
apex— launcher (python3, stdlib only); nodeinit.shsymlinks it ontoPATH.engine/— the runner: CLI, identity, overlay, context, and thectx.*helper library.actions/— grouped actions; the path IS the name (configure/ufw,tiers/link, …).compositions/apex/docker-compose.yml— the shared,${env}-parameterized core compose.vendor/— pinned pure-python third-party (empty; seevendor/VENDORED.md).source/— independent containerized tools (happ subscription generator).tests/— stdlibunittestsuite (tests/run.sh).
Usage (on a node)
apex acts on the local checkout — no <node> argument. Identity comes from the
host FQDN (<node>.a<x>.apex.ermnvldmr.com) and node.env.
apex/apex --help— list actionsapex configure/ufw— render + apply this node's ufw configapex configure— run everyconfigure/*in orderapex compose up— bring up the node's compositions
Constraints
git + python3 stdlib only. No pip/Node/Go/CUE. Composes are hand-authored (no codegen).
License
MIT (see LICENSE).
Languages
Python
99.6%
Shell
0.2%
Makefile
0.2%