jailrun is one runtime, four subsystems (runtime/ probe/ bakery/ store/) built
against one contract in ARCHITECTURE.md: the Substitution
Manifest (schemas/substitution-manifest.schema.json) and the Store API. Change the
contract there first; the subsystems follow.
Honor the cross-seam invariants (ARCHITECTURE.md §"Cross-seam invariants"):
status: native⟺ a real native artifact exists atnative.artifact_path.linuxulator.requiredis derived (OR overstatus == linuxulator), never hand-set.- The static syscall-gap list is advisory; the live smoke is the source of truth.
Most of jailrun only means anything on FreeBSD (jails / ZFS / Linuxulator). On a
dev machine you can: python3 -m py_compile the modules, run probe/test_classify.py,
and validate a manifest against the schema. Everything else is proven by the
test suite (262 tests) and the *.freebsd.sh smoke scripts on FreeBSD 15.1.
- Python 3, standard library + thin shell-outs (no heavy deps in the runtime path).
- Keep secrets and host-specific data out of the tree (no IPs, no internal hostnames).
Target: github.com/bzdOS/jailrun, license MIT. Before a public push: scrub internal
data, set GitHub topics + homepage, and add a CHANGELOG entry. Suggested topics:
freebsd jails containers oci docker-alternative zfs linuxulator esphome
embedded cli.