External sources Linx.Process draws on — kernel docs, prior art, and the Erlang/Elixir conventions that shape the API.

A living doc — add to it as new sources inform a decision.

Kernel side

The syscalls and namespace concepts Linx.Process exposes:

The Port boundary

The agent talks ETF to the BEAM over fd 3/4:

Prior art

  • tini, dumb-init, catatonit — established upstream mini_init binaries.
  • runc's libcontainer — the reference container-runtime implementation in Go; nsenter, setns_init, and the checkpoint relay design parallel linx_process.
  • conmon — the per-container agent in the podman/CRI-O world. The "clone parent = conmon" framing carries through here: the Port-spawned agent IS conmon, sized down to its essentials.

Build

  • The :linx_process Mix compiler (lib/mix/tasks/compile.linx_process.ex) — mirrors the :netlink_nif one but builds an executable, statically linking libei from the OTP install.