At the workbench
This is where the vessel takes shape.
Hakomori keeps container work close enough to inspect. One Zig CLI coordinates established OCI tools, journals each external effect, and reconciles containers after an interrupted command or monitor failure. Hakofile and a bounded Compose language grow from that same lifecycle instead of hiding another engine below.
The vessel
A hermit crab carries its shelter without answering to a distant keeper. Hakomori follows that small independence. Each container has a visible life, a narrow owner, and a way home when a command, monitor, or helper disappears halfway through the work.
Core principles
- Rootless ground; unsupported privilege, namespace, mount, or cgroup conditions fail before mutation
- No central daemon; one small unprivileged monitor stays with each detached container
- Visible ownership; desired state, observed state, and external resources remain distinct
- Recovery belongs to lifecycle; interrupted work returns through a journal and revalidation
- Narrow language; Hakofile and Compose reject what they do not understand
- Established mechanics; OCI tools keep their own work while Hakomori owns orchestration and cleanup
Beneath the shell
| Capability | Engine |
|---|---|
| Rootless lifecycle | Zig control plane with explicit state transitions and ReleaseSafe builds |
| OCI execution | crun bundles with bounded child-process ownership |
| Images and builds | Skopeo, umoci, and Buildah behind checked argument and output contracts |
| State and recovery | SQLite operation journal compared with observed host resources |
| Detached containers | One unprivileged monitor for streams, signals, exit state, and cleanup |
| Hakofile | A small typed build recipe translated into explicit Buildah operations |
| Compose | A deliberate supported subset with transactional startup and reverse-order rollback |