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.

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