Companion to the harness split PR. Moves nano's brain to homura and her hands to reef.
what changes #
- reef (
hosts/reef/default.nix):services.coral→services.coral-executor. Runs tools only, sandboxed in the nspawn container, binds10.233.1.2:4221behind a shared bearer token. The control-plane config + its now-homura-side secrets are removed. - homura (
hosts/homura/modules/coral-control.nix, new): runsservices.coral— the LLM loop / session / memory / compaction. Agent client →http://10.233.1.2:4221, authenticated viaexecutorTokenFile. Runs no tools by design (no local tool client = no ACE on homura). - flake: reef imports
coral.nixosModules.coral-executor; homura importscoral.nixosModules.default. - secrets:
coral-executor-token.agerecipients (homura_pq+reef_pq). - shot-reminder now targets the homura control-plane worker webhook.
docs/coral-split-migration.md: prerequisites + cutover runbook.
resilience win #
reef can die/rebuild without killing nano — she keeps her session + memory and stays reachable over Discord, losing only tool execution until the executor reconnects (the HttpToolClient degrades gracefully).
verification #
Both nixosConfigurations.reef and .homura evaluate to buildable toplevel derivations with the coral input overridden to the harness branch. Confirmed via nix eval:
- reef executor ExecStart:
coral-executor --workspace /home/coral --host 10.233.1.2 --port 4221 --capabilities ... --token-file ... --hashline - homura control-plane env includes
NIRI_EXECUTOR_TOKEN_FILE; agent client =http://10.233.1.2:4221.
depends on / sequencing #
Needs the harness PR merged + nix flake update coral first (the executor module ships from the coral flake). Full runbook — including the shared token secret and the manual state migration to homura — is in docs/coral-split-migration.md. Do not deploy before migrating nano's /home/coral state to homura, or she wakes up empty and handless.