hyperhive/docs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 0db83c40a0 feat(#2642): a github.com notification poller alongside the forge one
hive-forge-notify grows a second binary, hive-github-notify. The two
share the notification half of the job — tolerant parse, classification,
formatting, dedupe, todo delivery — and nothing else: each binary owns
its host's protocol outright.

Two binaries rather than one multi-source daemon, and rather than a
cargo feature. A feature would unify across the workspace and cost every
crate its build cache. Two binaries keep the decision in nix: forge.nix
installs the forge unit, github.nix installs the github one under
hyperhive.github.enable, so a hive built without that module has no
github poller in its closure at all — GitHub access is separable (a
tier, a policy boundary), not merely switched off. Both binaries ship
from the existing derivation, so packages.nix is untouched.

The split is real at the code level too, not just at the unit level.
source.rs is a trait; the impls live in the binaries that use them, so
neither binary links the other's protocol code and the library names no
host at all. The forge-only assigned-issue rollup moves into the forge
binary for the same reason: it asks the forge what is assigned to this
agent, which is not a notification-protocol concern.

At runtime the github unit needs a PAT at <state>/github-token, the same
dashboard-provisioned token the gh wrapper and the git credential helper
already use. No PAT: it logs why and exits 0, which is why the unit is
Restart=on-failure and not always.

Forgejo's notifications API is modelled on GitHub's, so one tolerant
parse serves both — the differences (string thread ids, PullRequest vs
Pull) are absorbed by lenient deserializers rather than a second parse
path. Thread ids normalise to String at the parse boundary; they are
only ever opaque keys. Todo keys gain a per-source prefix so the two
hosts cannot collide, and the forge's is deliberately empty to keep
existing forge todo keys stable across the deploy that lands this.

The github loop honours the server's X-Poll-Interval, re-arming only
when the server asks for a slower cadence than ours; the hint is read
before the status check, because it arrives on error and empty pages too
and that is exactly when it matters. Reading the notification stream
needs the notifications scope on the PAT, which a token minted for push
access typically lacks; the failure mode is silence, so docs/github.md
says so explicitly.
2026-07-31 17:23:18 +02:00
..
tools hive-forge: infer active repo from cwd's git remote, demote HIVE_FORGE_REPO 2026-07-29 18:37:37 +02:00
turn-loop hive-agent: enable the Skill built-in tool so installed skills are invokable 2026-07-27 22:28:28 +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 hivectl: rename hivectl agents to hivectl agent <name> <verb> 2026-07-27 19:07:18 +02:00
approvals.md hivectl: rename hivectl agents to hivectl agent <name> <verb> 2026-07-27 19:07:18 +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 remove request_next_turn: same-turn continuation is always worse than an external wake 2026-07-27 22:15:36 +02:00
coordinator.md refactor(#2756): replace the DAG terminal hook with real tail nodes 2026-07-27 15:06:27 +02:00
forge.md feat(#2642): a github.com notification poller alongside the forge one 2026-07-31 17:23:18 +02:00
gateway.md hivectl: add agent <name> watch to follow live events from the CLI 2026-07-27 21:04:00 +02:00
github.md feat(#2642): a github.com notification poller alongside the forge one 2026-07-31 17:23:18 +02:00
gotchas.md feat(#2693): let the operator pin the claude-code every agent runs 2026-07-27 13:56:28 +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 hivectl: rename hivectl agents to hivectl agent <name> <verb> 2026-07-27 19:07:18 +02:00
security.md docs(#2754): document the container weights in coordinator/security/persistence 2026-07-27 11:01:36 +02:00
setup.md hivectl: rename hivectl agents to hivectl agent <name> <verb> 2026-07-27 19:07:18 +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 docs: drop removal-history framing, document current state only 2026-07-27 22:15:36 +02:00
web-ui.md feat: rename matrix-accounts page to credentials, add github PAT tab 2026-07-11 12:40:13 +02:00