Development and maintenance, behind your just commands.
chainman is opinionated, with batteries included: it ships a standard set of just recipes and useful defaults for reproducible environments, setup, services, caches, and dependency and toolchain updates. Add your project’s commands and requirements; override the defaults where needed.
Alpha. Expect breaking changes.
Under active development and not recommended for general adoption. Releases may break compatibility without notice. Runtimes are pinned per project, so upgrades are deliberate. Expect to investigate failures and adapt to changes.
Setup and services, coordinated across concurrent work.
A launcher committed to your project runs the pinned runtime with Nix on the host or in a container, with no global chainman installation. chainman coordinates managed services across commands and worktrees, and keeps managed setup from being replaced while another command uses it.
Dependency and toolchain updates across the whole project.
chainman updates dependencies across supported package managers and tools managed by Nix to the latest eligible versions, including major releases. A default minimum release age of 30 days provides a supply chain defense; configurable version pins hold specific dependencies back.
The complete change set is prepared in a separate checkout and must pass just verify before chainman applies it to the original checkout; the verified changes can optionally be committed.
Evaluate devenv and Devbox first.
devenv provides composable Nix environments, tasks, and services. Devbox makes environments built with Nix approachable. Both may be a better fit.
Consider chainman if you want one opinionated default instead of assembling and maintaining these pieces yourself, and if updates across ecosystems matter enough to accept an evolving alpha.
Currently used in the development of Cyph, a handful of proprietary codebases, and an upcoming large open source project.
Setup guide and documentation in the repository.