Reference

Architecture

Status: outline. The full design documents live in the repository; this page is the summary that belongs in public documentation.

ProxDock is one static Go binary with the web UI embedded. It drives system tools rather than reimplementing them: docker compose for containers, ZFS for storage, skopeo for image digests, lego for ACME.

The pieces

Area Responsibility
Store Cluster state in SQLite, replicated by Raft, with append-only schema migrations
Compose The transformation engine: preview diff, refusals, self-reference variables
App lifecycle Create, update, edit, delete, and adoption of an existing dataset
Backup Snapshot, send, verify, receive, re-point
Migrate Node-to-node handoff: preflight, pre-seed, cutover, rollback
Netgroup Network zones: MAC derivation, address allocation, NIC detection
PKI The cluster CA and each node's mTLS identity
Server The HTTPS API, request routing, and the embedded UI

Two principles worth stating

Nothing is written before it is shown. The transformation preview is not a convenience feature layered on top; it is the only way an application is created. There is no path that applies a Compose file without producing the diff first.

The recovery path is the working path. Migration reuses backup and restore rather than having its own faster route, so the code that gets your data back runs constantly instead of sitting untested.

Where decisions are made

To be written: the split between what the leader decides, what a node decides for itself, and what is refused at the edge before either gets involved.