Phase 1 finished - dev sandbox only
Kanthor Core local sandbox architecture
This page visualizes the completed Phase 1 scope: a rootless Podman development sandbox, its C4 architecture, and the working flows proven by the smoke harness. It intentionally does not describe future Core product internals.
C4 Model
Phase 1 is shown at Context, Container, and Component levels. The component level is the smoke harness, not product Core.
Working Flows
The completed phase supports two ways to run the sandbox. The animation highlights the active transport and storage boundary.
Entry point
`make up` creates `.data/`, starts `kanthord-dev`, and publishes `127.0.0.1:7777`.
Supported host transport
The host probe expects TCP to pass. UDS across macOS host -> VM is documented as unreliable and not fatal.
Socket location
The socket lives at `/data/sockets/kanthord.sock` on the named `sock` volume, not in the host bind mount.
Why it matters
UDS works container-to-container over the named volume, avoiding the macOS virtiofs host boundary.
Sequence Diagrams
These animated sequences show the actual Phase 1 commands and stand-in scripts.
Boundary Proofs
Phase 1 is mainly about proving the local development safety boundary before real product code exists.
Host safety
The running container receives copied source from the image. The host source tree is not bind-mounted, so container tools cannot mutate it.
Data ownership
`--userns=keep-id` keeps `.data/` files host-owned with auth directory `0700` and credential file `0600`.
Transport decision
TCP is the supported Mac host path. UDS is supported inside the sandbox between containers via the named `sock` volume.
.data/database/smoke.jsonWritten with temp-then-rename to exercise atomic file database writes on the mounted filesystem..data/logs/smoke.jsonlAppend-only operational events such as `smoke_ready`, `tcp_listening`, and `uds_listening`..data/auth/credentialPermission check for secret material: file mode `0600`, directory mode `0700`.sock:/data/socketsCompose-only named volume for UDS so socket traffic stays off the macOS virtiofs boundary.Phase 1 Commands
The commands below map directly to the architecture shown above.
make machine-upStart the Podman VM once per boot.make upStart the single server container and publish TCP on `127.0.0.1:7777`.make verifyBuild, run, probe host TCP and mounted files, then tear down.make compose-upStart server and client containers with the shared UDS named volume.make compose-logsWatch server events and client `uds_ok` messages.make resetDestructive cleanup for `.data/`; only use when you intend to wipe local sandbox data.