hyperhive/docs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 2af8c2d17d fix(gateway): resync the gateway's resolv.conf when the host's changes
The gateway container's /etc/resolv.conf is a one-shot copy: nixos-container
cps it in from the host in its start script, and nspawn's --resolv-conf=auto
copies (not binds) for a writable host-netns container. systemd-nspawn(1)
states the consequence outright — "no further propagation of configuration is
generally done after the one-time early initialization (this is because the
file is usually updated through copying and renaming)".

dnsmasq has no explicit upstream and follows that file, so a host network
change strands it on a resolver that no longer answers and every non-hive
lookup from every agent hangs. Agents' own resolvers point at the static
bridge IP and never go stale, which is why the symptom presents as "the
gateway needs a kick".

Add a host-side hive-gateway-resolv path unit watching /etc/resolv.conf.
On change it machinectl copy-to's the file into the container and reloads
dnsmasq — ExecReload is kill -HUP, so upstreams are re-read and the cache
flushed without dropping anything; nginx never notices.

- watched from the HOST: a rename on the host doesn't cross the nspawn mount
  namespace, so an in-container path unit can't see it (same reason c0re
  reloads nginx from the host side)
- copy, not a file bind-mount: openresolv renames over the file, so a bind
  would pin the first inode forever — strictly worse than today
- machinectl copy-to writes through the container's own mount namespace, so
  this holds regardless of how the container assembles /etc
- armed Before=network-pre.target so the boot's first DHCP write is caught,
  and re-run on gateway start for changes made while it was down
- a host file with no nameserver line is skipped, not pushed, so a
  mid-rewrite snapshot can't blank hive DNS
- deliberately no fallback server=: dnsmasq queries all known upstreams in
  parallel, so a hardcoded public resolver would take a share of normal
  traffic rather than only covering the gap
2026-07-26 18:01:34 +02:00
..
tools hive-forge: add lint unlabeled --scope subcommand 2026-07-26 16:32:28 +02:00
turn-loop remove hive-agent-wake — no shipped consumer 2026-07-25 20:05:32 +02:00
web-ui job_queue: retire the now-off-wire step sub-step label 2026-07-26 15:24:35 +02:00
agent-hierarchy.md remove hive-agent-wake — no shipped consumer 2026-07-25 20:05:32 +02:00
approvals.md job_queue: grow the rebuild subgraph from DeployApply (#2664) 2026-07-26 02:28:03 +02:00
boundary.md feat(#2641): sudoless hivectl via a hive-admin group on the host socket 2026-07-22 22:50:27 +02:00
ci.md docs(#2415): update docs/ci.md for c0re-owned runner registration 2026-07-16 15:30:34 +02:00
conventions.md docs(#2552): never add #[allow(clippy::...)] — fix lints instead 2026-07-20 19:38:56 +02:00
coordinator.md job_queue: retire the now-off-wire step sub-step label 2026-07-26 15:24:35 +02:00
forge.md fix(#2593): mark forge notifications read on broker-delivery 2026-07-19 18:41:51 +02:00
gateway.md route gateway htpasswd management through a daemon wire command (#2504) 2026-07-15 23:23:47 +02:00
github.md fix(#1970): bake token path into gh/git wrappers — env var didn't reach claude's bash-tool context 2026-07-11 14:12:25 +02:00
gotchas.md docs: reflect the new nix layout and removed options 2026-07-13 22:23:20 +02:00
knowledge.md docs(security): ci netns, knowledge .git tmpfs, matrix id/secret split 2026-07-10 19:17:17 +02:00
matrix.md refactor: nix/host-modules + nix/agent-modules layout, update doc paths 2026-07-13 22:05:49 +02:00
network.md fix(gateway): resync the gateway's resolv.conf when the host's changes 2026-07-26 18:01:34 +02:00
observability.md feat(#2007): export per-agent container cpu/mem/disk via otel 2026-07-15 22:51:31 +02:00
persistence.md feat: per-agent CPU and memory limits 2026-07-26 14:15:05 +02:00
security.md refactor: nix/host-modules + nix/agent-modules layout, update doc paths 2026-07-13 22:05:49 +02:00
setup.md refactor(#2416): remove the non-pr config-change flow (request_apply_commit / applycommit) 2026-07-15 21:03:52 +02:00
swarm.md feat(#1997): add prettier markdown formatter to treefmt 2026-07-02 23:33:11 +02:00
terminal-rendering.md refactor(#2416): remove the non-pr config-change flow (request_apply_commit / applycommit) 2026-07-15 21:03:52 +02:00
turn-loop.md feat(agent): raise a todo when the agent's disk gets tight 2026-07-26 17:59:13 +02:00
web-ui.md feat: rename matrix-accounts page to credentials, add github PAT tab 2026-07-11 12:40:13 +02:00