What gets pulled and started, when and where
Three periods in the life of a KADAI machine: the one-time first boot (the ceremony), every later boot (the rule), and ongoing operation up to shutdown. Colors show the direction: pull, push, start, human.
1 · First boot - once, the ceremony
The seed image is generic. Only the ceremony turns it into your machine: it generates its own keys, in the security chip where it has one, fetches the kernel repo, unlocks the master identity with your passphrase and enrolls itself in the recipients list. On a running Ubuntu the assistant from the start package (start/) does the same; it also enters the deploy key itself, through a token that only the master identity opens. Step 4 then falls away.
2 · Every boot - the rule
From the second boot on, everything runs without a ceremony. The order is enforced: the kernel is decrypted before Plasma starts; the desktop is reconciled before you unlock the lock screen.
Before=plasma-workspace.target guarantees that Plasma (5) starts only after the kernel has been decrypted. The reconciler (7) is idempotent: if the desktop is already right, it does nothing. All you see of this is 8 and 9.3 · Operation & shutdown - what flows back
Whatever you change during the session flows back through exactly one channel: the repo with kernel, keyring and vault. Every ten minutes a local save, without network and without a key; it goes out at login, logout and hourly, over the sync key that asks for no presence. Other machines receive it at their next boot or their next hourly push, which then pulls first.
Where things live
The question “does it travel with me?” is answered by location: only what lives in the repo reaches every machine.
| Location | What | Travels? |
|---|---|---|
| Your head | the master passphrase (lab value - not printed here) | yes - that is its purpose |
| Repo · kadai-kernel (own Forgejo server) | me.md.age (kernel, encrypted to all machines), .kadai-recipients and .kadai-revoked, master-key.age, keyring.kdbx with keyring.pass.age (system accesses), vault.kdbx (your passwords), desktop-spec.json, all scripts, bootstrap.sh | yes - to every machine |
| Machine, local | age machine key and sync key (in the security chip, otherwise as files), decrypted me.md, observation logs (sync, suggestions), autologin/lock configuration, everything in Plasma the spec does not cover | no - deliberately not (keys) or not yet (logs, configuration) |
| Nextcloud | seed images under kadai/seeds/; offloaded files under kadai-storage/ | seeds: for everyone · files: restorable on demand |
| Derived | Activities, colors, panel widgets - generated by the reconciler from the spec | rebuilt on every machine |
bootstrap.sh, more desktop properties into the spec, applications as a declared package list, observation logs as a synced layer of their own. The Nextcloud access moved in October 2026: from a local file into the keyring, which travels. What you want from the system belongs in the repo - what the machine is stays local.