Decision 0007
`/etc/tacid` is a git repository; the owner is a key
Architecture decision record 0007: `/etc/tacid` is a git repository; the owner is a key
Context
The machine must be describable, portable, and attributable: who changed what, with what authority, and how to rebuild the same body elsewhere. Multi-user and headless operation need a principal model that is not a uid.
The three plans
- Grok:
/etc/tacid/*.toml, generations,tacid export/importto clone a personality onto new hardware. - Fable: the agent edits only
hosts/<host>/agent.nix; humans edit elsewhere; git tracks both. - Codex:
/etc/nixos/tacid/generated area versususer/; Tacid writes only the generated area.
Decision
/etc/tacid is a git repository, the genome:
body/(hardware, disks, GPU profile: probed, regenerated, not portable),mind/agent.nixandmind/preferences.nix(agent-writtentacid.*options),mind/policy.nixandmind/personality.md(owner-only),owner.nix(free Nix, human-owned),pkgs/(agent-authored derivations, quarantined),secrets/(sops-nix, age-encrypted).
The owner is an Ed25519 key held in the TPM, a hardware token, or on the encrypted disk; headless
owners use an SSH key. Owner-only paths are those whose last commit is owner-signed; the agent
signs its commits with a per-machine agent key; the keeper refuses a policy whose head commit is
not owner-signed. git log is the provenance ledger. mind/ is portable (“reincarnation”);
body/ is regenerated. State (models, memory, journal) never lives in the genome because flakes
copy the tree into the store. tacidd stages before every evaluation because untracked files are
invisible to a flake.
Consequences
- Attribution is cryptographic, not by filename.
- One owner key per machine in v1; multiple users are principals with sessions; multi-owner is after 1.0.
- The genome can sync to a private remote; losing it is losing the machine’s identity, so the installer says so and offers the sync.
Alternatives rejected
- A uid as the owner: cannot survive a headless machine, a remote brain, or a stolen session.
- State inside the genome: store leakage and evaluation cost.