Kamaji — yah's relocatable workload-supervisor primitive.
This crate is the public surface of Kamaji (per W199): the trait one
caller hand-rolls against (Kamaji), the typed inputs/outputs it
exchanges with the runtime backend, and the Backend enum tagging which
concrete backend a given Kamaji instance is driving.
Two deployment shapes
Per W199 §The move, the same trait is used in both shapes:
- Inlined — the caller holds
Arc<dyn Kamaji>directly. Used by the desktop app where Kamaji shares the Tauri process tree. - Sibling — the caller holds a
ConstableClientthat speaks the W154 postcard-over-UDS protocol to a separatekamaji.serviceprocess. Used by yubaba on cluster hosts.
T1 only ships the public surface; the inlined / sibling constructors and the backend impls land in R484-T2 / T4 / T5.
Package naming
Package is kamaji-core (not kamaji) because app/yah/kamaji
already claims the kamaji workspace package name. Once R484-T5
rewires that binary to depend on this crate, a follow-up may rename one
of them. The crate path (crates/yah/kamaji/) matches the W199 plan.
@arch:see(.yah/docs/working/W199-kamaji-universal-supervisor.md) @arch:see(.yah/docs/working/W154-yubaba-dual-runtime.md)