NixOS configuration for all my personal hosts.

Deploy OMP manager on homura with reef client #38

Closed nano.sharkgirl.pet
targeting main
Closed opened by and assigned to nano.sharkgirl.pet
targeting main

Set up the reusable modules/omp-manager / myNixOS.omp-manager service, specialized for homura in hosts/homura/modules/omp-manager.nix. No hosts/homura/omp/ folder.

  • Pin nano.sharkgirl.pet/omp-manager at b701b98; it consumes the pinned nano.sharkgirl.pet/omp-tui-rpc flake (db2012c), including the whole runtime closure inside mutable Debian task containers instead of installing npm OMP.
  • The generic module defaults disabled and has no provider/model, agenix, host networking or nano dependency baked in. It accepts public config/model files, runtime provider key files, manager settings and a configurable host picker; homura supplies the credentials, source files and private topology. Independent disabled/bare/other-provider module evaluation and picker-wrapper build pass.
  • Bind the authenticated manager to homura's private nspawn address 10.233.1.1:4230; firewall accepts only reef's 10.233.1.2 on ve-coral. No public port opening.
  • Create a dedicated encrypted API token for enrolled PQ recipients and reef, not the executor token. Install a protected-token-aware omp-tasks client on reef.
  • Seed new tasks with Callie’s supplied modules/omp-manager/models.yml and corrected modules/omp-manager/config.yml, preserving model discovery, limits, thinking levels and model roles. No hardcoded ompArgs or copied nano preset. Fill only the redacted providers.bridget.apiKey at runtime from the existing Bridget agenix credential via systemd LoadCredential; both outputs stay root-only outside the Nix store. The initially supplied wrong-machine config is not in the final tree.
  • Enable 90-minute idle teardown, persistent task workspaces, allowed local clone root /home/callie/code, and yield notifications to the local nano event endpoint.
  • Install the frozen Go/Bubble Tea picker on homura. ssh -t homura 'sudo omp-picker' uses existing host SSH/sudo; Enter wakes/reuses a container and attaches directly to its tmux. OMP runs visibly in that tmux while the worker controls the same session over the fork’s Unix RPC socket. Attached clients and a 30-second join grace block teardown. No second OMP or container SSH daemon.
  • Preserve all existing input revisions/dependency graphs; lockfile node renumbering comes from adding the new flake.

Verification: manager typecheck and 12 manager tests plus 17 Go picker tests pass (Go race/vet included); its Nix package, module check, patched OMP and final 47-path image context build successfully. Real OMP RPC/assistant-view/yield/session-resume plus actual PTY tmux attachment, keyboard input, detach and busy-teardown tests pass with a local mock model (no provider billing). Homura and reef full toplevel derivation evaluation pass using the published manager pin (only the existing host-local Orpheus input was temporarily overridden for local evaluation, never committed).

Not deployed: this PR does not rebuild homura or reef. Full Docker image execution still requires the intended host smoke test; reef's outer container blocks nested Docker. Apply both host and reef configurations to provision server + client. Existing task seed copies persist; refreshing the seed affects new tasks. The host picker wrapper and its pinned binary also build successfully. Runtime seed mock confirms byte-exact corrected config.yml, supplied model fields unchanged except apiKey, arbitrary key serialization and file0600/dir0700. Entry is existing host SSH, not a new jump daemon. UI layout is unchanged by the attachment integration.

This pull request has no versions submitted yet.