home / kama / repos

The repo split

Three small pieces, each with one job.

Keru splits its world into three repositories so each stays small and legible. The package side of that is:

RepoHoldsKeeps
kamaThe manager — the kama entry point and lib/kama.sh core.The code.
kama-packagesThe recipe repository — one .sh per package.The knowledge.
KeruOSThe OS: installer, profile, build pipeline, live init, website.The orchestration.

Where the repos live

github.com/AstralZX/kama # the manager github.com/AstralZX/kama-packages # the recipe repository github.com/AstralZX/KeruOS # the OS itself

Today the repos are GitHub-only — that's the single canonical source for package recipes and code. Mirrors on Codeberg and on git.spectoria.dev are planned, but nothing is hosted there yet, and there are no other mirrors. Until that changes, GitHub is the source of truth.

No package recipes ship on the ISO, in the installer, or anywhere else. The recipe repository on GitHub is how you get packages — clone it or install Keru, which fetches it at build time.

Why separate

  • Independent cadence. The manager changes rarely; recipes change constantly. Mixing them couples an ossified core to churn.
  • Clear ownership. "Which file builds busybox?" — the recipe repo. "How does kama decide to stage?" — the manager repo. No guessing where things live.
  • Small repos, legible diffs. A PR adding a package touches exactly one file in one repo.
  • Cross-repo defaults. Keru's scripts expect the three repos as siblings (kama next to kama-packages next to KeruOS), and every path is overridable via KAMA_DIR / PKGS_DIR.

How they fit together

# KeruOS build-root.sh drives kama against kama-packages KAMA="$KAMA_DIR/kama" # the manager PKGDIR="$PKGS_DIR" "$KAMA" make "$pkg" # a recipe, executed # into $ROOT — a completed system, built from source.

The installer is the conductor: it writes your make.conf, then calls the build pipeline, which runs kama over recipes to produce exactly the system you chose.

This is Keru's answer to packaging sprawl: three tiny repos, each human-sized, instead of one monolith that swallowed everything.

← Kama overview · The build pipeline