Monad Package Manager
  • C++ 66.7%
  • Python 24.8%
  • Shell 7.4%
  • CMake 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-31 12:34:54 +01:00
cmake fix(packaging): make Athena installation relocatable 2026-10-06 18:40:39 +02:00
docs docs: add English user and contributor manual 2026-10-31 12:34:54 +01:00
include/athena/core feat(store): add transaction pins and recoverable GC 2026-10-07 11:55:51 +02:00
packages Complete M1.9 capability feature and conflict resolution 2026-10-05 05:16:07 +02:00
packaging refactor(branding): rename public Athena PM interface to Monad 2026-10-20 12:34:05 +02:00
qualification feat: prepare Monad alpha sources and qualification tooling 2026-10-30 19:39:42 +01:00
scripts feat: prepare Monad alpha sources and qualification tooling 2026-10-30 19:39:42 +01:00
src feat: prepare Monad alpha sources and qualification tooling 2026-10-30 19:39:42 +01:00
tests feat: prepare Monad alpha sources and qualification tooling 2026-10-30 19:39:42 +01:00
third_party/athena_toml feat(m2.5): add B1.1 requests with isolated bounded TOML parsing 2026-10-15 08:49:02 +02:00
tools/codex-supervisor feat: prepare Monad alpha sources and qualification tooling 2026-10-30 19:39:42 +01:00
.gitignore Complete M1.8 dependency expression resolution 2026-10-05 04:34:56 +02:00
AGENTS.md feat: prepare Monad alpha sources and qualification tooling 2026-10-30 19:39:42 +01:00
CMakeLists.txt feat: prepare Monad alpha sources and qualification tooling 2026-10-30 19:39:42 +01:00
COPYRIGHT docs: clarify Monad identity and licensing 2026-10-30 21:47:58 +01:00
LICENSE license: release Athena under GPL-3.0-or-later 2026-10-06 18:48:46 +02:00
README.md docs: clarify Monad identity and licensing 2026-10-30 21:47:58 +01:00

Monad Package Manager

Monad is an experimental package manager for Henosix, inspired by pacman, emerge, and Nix. Official website: https://henosix.org.

The project aims to combine:

  • source-based package building inspired by Gentoo/Portage;
  • dependency resolution;
  • declarative system configuration inspired by Nix;
  • immutable package storage;
  • system generations;
  • configuration rollback;
  • integration with the Arch Linux ecosystem.

The initial implementation is written in C++20.

Status

Experimental release candidate — version 0.1.0-alpha.1. Monad is not production-ready and is not a dependable replacement for pacman, emerge, or Nix. Run it only with a dedicated, disposable, non-privileged root.

mpkg install <package> uses the content-addressed pipeline: the existing local catalog under repository_state/packages supplies public repository candidates, public resolution produces a core install plan, and the install transaction realizes artifacts into ObjectStore and activates a new generation. The legacy installer remains compatibility code but is no longer the CLI install path. Current realization supports only one local file:///absolute/path gzip tar source and CMake, without build parameters. Network sources, Autotools, binary import and Athena IR are unsupported. See install and realization for implementation details.

M2.4 persists installed dependency semantics with realization records and validates complete resulting environments before install/remove activation. Partial removal and replacements are checked offline against preserved consumers, capabilities, features, conflicts and system policies. Historical records remain readable under an explicit conservative compatibility policy. See installed semantic state.

Build

Requirements:

  • Linux, C++20 compiler, CMake 3.20 or newer, Ninja or Make
  • OpenSSL and LibArchive development files, pthreads
  • Python 3 for parser and packaging checks

Build:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure -LE privileged

Run:

./build/mpkg --help
./build/mpkg --version

Non-privileged trial

Use a fresh user-owned root for package-manager state:

trial_root="$(mktemp -d)"
./build/mpkg --root "$trial_root" list
./build/mpkg --root "$trial_root" generation list
rm -rf "$trial_root"

Install and remove can create persistent state. Try them only with a disposable root and a local package fixture. Build scripts run as the current user and should be treated as untrusted code. Never run Monad as root or point --root at a real system. See install details, realization details, and installed-state details.

Project goals

Monad aims to combine source-based package building with dependency resolution, immutable storage, and package generations. Compatibility claims are limited to the configurations exercised by this experimental release candidate.

The project is initially developed and tested on Arch Linux.

License

Monad Package Manager is free software licensed under the GNU General Public License, version 3 or (at your option) any later version (GPL-3.0-or-later).

Copyright (C) 2026 Alessandro Bifaretti.

See LICENSE for the full license text and COPYRIGHT for copyright information.