Watch
0
0
Fork
You've already forked hyperhive
0
Commit graph hyperhive/docs/2-handbook
Author SHA1 Message Date
iris
d516bb890c remove the forge links from the hive dashboard and the agent page
Each agent row on the hive dashboard, and the agent page's link menu, linked
to the agent's forge profile and its config repo. Both are gone, with what
only they used:

- hive-agent no longer builds the two links, the `Forge` link kind, or the
  `forge_public_url` field of its state, and no longer reads
  `HIVE_FORGE_PUBLIC_URL`. The agent page's link menu and the dashboard row's
  icon strip (which skips a forge link an agent not yet rebuilt still sends)
  drop their forge handling.
- hive-c0re's dashboard state no longer carries `forge_public_url`.
- `HIVE_FORGE_PUBLIC_URL` is no longer forwarded to agents through the meta
  flake (the forwarded-variable list, its test fixture, the controller's
  settings and the VM test), so the next meta flake render differs by that
  one line. hive-c0re still reads it for the forge URL a hive publishes, so
  `swarm.forge.publicUrl` stays, with its description corrected.
- The docs stop describing the links.
2026-11-07 13:43:44 +01:00
atlas
79c1b6d81d swarm: a deploy goes out only once its closure is cached and the hive has its cache facts 2026-11-07 12:28:44 +01:00
iris
0e84fe8bc4 docs: the handbook follows the three layers: swarm, hives, agents
The handbook's sections were agent-lifecycle, integrations, swarm, tools,
trust-boundary and web-ui, which do not follow how the system is built, so a
reader could not tell which layer a page is about. Its pages now sit in
swarm/, hives/ and agents/, with the accounts an agent can hold outside the
system in external-accounts/.

- swarm/: forge, matrix and the knowledge repo join the swarm pages, and so
  does the swarmctl reference.
- hives/: the dashboard, hivectl and its reference, and the operator/agent
  boundary, with a README that takes over the old web-ui and tools pages.
- agents/: the roster, persistence, config changes, the agent's own web page
  (was web-ui/agent) and the security model, with a README.
- external-accounts/: GitHub and GitLab.

Pages are moved whole; none is split yet. Every reference follows: relative
links in the docs, `docs/2-handbook/...` paths in code comments, the nix
checks that regenerate the CLI references and the ignore list, and docs/README.md,
whose handbook section is now by layer.
2026-11-07 12:19:36 +01:00
atlas
263b21021a swarm-controller: ask the builder for the archetypes again soon after a failed pass 2026-11-07 11:54:23 +01:00
iris
560afef2b6 swarm ui: the issue report card is named "issues"
The reports tab holds cards, so a card named "issue report" repeats the word.
The card is now "issues", beside "pull requests", and the handbook says the
same.
2026-11-07 11:46:05 +01:00
iris
944fd5b726 swarm ui: a diff column on the pull requests card, and "approved" as its header
The pull requests card gets a diff column, the lines a PR adds and removes
(`+120 −8`), sortable on the total. The controller takes the counts from the
forge's pull request list, so no call is added. The column that said "has all
approvals" is now headed "approved".
2026-11-07 11:46:05 +01:00
iris
f633963b77 swarm ui: a pull requests card on the reports tab
The reports tab gets a "pull requests" card under the issue report. It lists
the open PRs of every repo, or of one picked in a repo select, with the
columns a reviewer or merger filters on: author, labels, requested
reviewers, base branch, WIP (the forge's draft flag), approvals against the
base branch's protection rule, has all approvals, conflicts, protected base
and CI. Every column sorts, the small-set columns filter by picking values,
and the browser keeps the filters and the repo. No filter applies at first.

swarm-controller resolves each row so the page makes no calls of its own:
GET /api/pr-report and GET /api/repos/{org}/{repo}/pr-report. The required
approvals come from the first matching branch protection rule (an
unprotected base asks for none); an approval counts when it is the
reviewer's latest decision, on the current head, neither stale nor
dismissed and official.

A free-text table cell gets a minimum width, so a table with many columns
scrolls sideways instead of wrapping a title to a word a line.
2026-11-07 11:46:05 +01:00
iris
cffe8895df review classifier: the most classifications a run carries is a setting
The limit was a constant of ten in swarm-wire, so a repo with eleven rules
could not be reviewed and nothing short of a rebuild changed it. It is now
`max_classifications` in the classifier settings, beside
`max_concurrent_reviews`: 1 to 1000, ten until set, and a document stored
before the field decodes with the default. The classifier settings form in
the swarm UI gets a "rules per review" field, and the try-out's add button
stops at the saved limit instead of a hard-coded ten.

The controller checks a try-out, and a requested review's rules file, against
the setting where the run starts. The rules file itself may hold up to the
1000 the setting allows, so raising the limit needs no change to a repo.
A review whose rules exceed the limit posts a no-verdict comment saying so.

A run's reply deadline was a constant that covered ten classifications, a
minute plus three each. It is now computed from the run's own size, so a
bigger run waits as long as it needs and a default-sized one still waits 31
minutes. The classifier's answer window in the queue permissions covers the
biggest run the setting allows.
2026-11-07 11:32:04 +01:00
atlas
b8b55ba23e credentials-reference: a hand-edited public-key on the in-swarm cache is overwritten 2026-11-07 10:40:07 +01:00
atlas
b0f6ccaa64 attic-init: replace the stored public key with the one the cache reports
a re-created cache signs with a new key; the fact was only created once, so
every hive then rejected the swarm's closures. the cache's grant gains update
on that one leaf, and a store that refuses it leaves the key as it was.

Closes #6181
2026-11-07 10:40:07 +01:00
damocles
b77fa9edc3 c0re: keep power intent in memory, drop agent_power/kv tables and the stop snapshot 2026-11-07 10:05:14 +01:00
iris
f23ce106b1 fixup! swarm-ui: the refresh picker of a polling card sits in the card's header row 2026-11-07 09:22:34 +01:00
iris
d0b37f52be fixup! swarm-ui: the refresh picker of a polling card sits in the card's header row 2026-11-07 09:22:34 +01:00
atlas
9e0c51052b swarmctl: agent watch follows an agent's terminal rows
Reads GET /api/agents/{name}/term/stream over the controller socket or the
gateway and prints one line per row. The gateway path uses a client without
the total-request timeout so the stream isn't cut after 30 seconds.

Closes #6160
2026-11-07 09:05:10 +01:00
atlas
aa227a95c1 docs: move the agent tool docs to 4-implementation/agent-tools 2026-11-07 09:04:27 +01:00
atlas
df8a82bc33 docs: move the cli references under 2-handbook/tools
Closes #6157
2026-11-07 09:04:27 +01:00
atlas
fae9398295 start the forge and github pollers when their token lands late
Both pollers wait about ten minutes for the agent's token, then exit 0.
Under Restart=on-failure that exit is final, and nothing started them
again, so a token minted or placed after the window left the agent
without notifications until its container restarted.

Add a path unit per poller with PathChanged on the token file(s) the
poller reads, the shape forge-avatar-sync already uses. A path unit
starts its service only when it is not running, so a poller that found
its token is untouched. The github path unit is gated on
github.enable like its service.

Container-side: it ships with the agent's next rebuild, and an agent on
an older rev keeps the old behaviour.

Closes #6179
2026-11-07 08:40:05 +01:00
damocles
ac3b3cfcd3 hive-agent: the agent has no login flow of its own, credentials come from the swarm 2026-11-07 08:32:11 +01:00
atlas
71d360c9d2 swarmctl: agent set-state declares an agent's wanted state
Wraps PUT /api/hives/{hive}/agents/{agent}/state, the route the swarm UI's
state menu uses. States come from swarm_wire::wanted::AgentState; destroyed
needs --yes.

Closes #6159
2026-11-07 07:58:30 +01:00
damocles
06b303aff2 hivectl: the open verb is gone and the docs say what hivectl has 2026-11-07 07:57:50 +01:00
damocles
ce9332cd02 hive-matrix-mcp: an edited message shows once, edited in place, and is not a second unread 2026-11-06 22:04:49 +01:00
damocles
c8eaa93268 swarm: the notification router tells a PR's author when CI on it fails or is cancelled 2026-11-06 22:01:22 +01:00
atlas
4c321f3d2d docs: nest config examples and use neutral swarm/hive names
Closes #6146
2026-11-06 21:20:49 +01:00
iris
bb789e4603 swarm-ui: the job graph shows placeholder rows in the shape of a job tree while it loads
JobqGraph takes an optional loading element, so the dashboard keeps its text
and the swarm UI's jobs tab passes a placeholder built from the graph's own
node and row classes: a root with two children and a second root, with the
real indent and rail.
2026-11-06 20:26:31 +01:00
iris
f276ee342c swarm-ui: linking a matrix account starts on the password login and warns before a pasted token
The form's credential choice now starts on 'log in with a password', listed
first, with a note that the swarm's own login gives the account a device of
its own. Choosing 'paste a token' shows a warning: a token from Element or
another client belongs to a device that is already logged in, so the agent
cannot use its encryption keys and the account will not decrypt encrypted
rooms.
2026-11-06 20:21:16 +01:00
iris
8847e6390b swarm-ui: the broadcast roster and the egress lists show placeholders while they load
The broadcast grid showed nothing while the agents loaded, and the egress
card a 'loading the … domains' line. They now show grey placeholders in the
shape of what is coming: six agent chips with the real chip's height (160 px,
measured), and three domain rows with their remove buttons.
2026-11-06 20:07:25 +01:00
iris
c37205e8f5 swarm-ui: the terminal message box has a placeholder and a spinner instead of a label and a sent line
The label 'message <agent>' is the input's placeholder (the label stays for
screen readers). The send button shows a spinner over its label while the
request is pending and keeps its width, and the 'sent' line is gone: the box
empties when the message is held. Spinner is a component of its own now, used
by the button and the refresh picker.
2026-11-06 19:51:22 +01:00
iris
5eef1f4a3d swarm-ui: the schedules, notification flows and flow editor show placeholders while they load
The schedules card, the notification router card (flows and recent
deliveries) and the flow editor showed a bare 'loading…' line. They now show
grey placeholders in the layout of what is coming: schedule cards with the
real card's row heights, flow cards with a block for the graph, the
deliveries table's header over blank rows, and lines for the editor.
2026-11-06 19:46:11 +01:00
iris
514a7c1580 fixup! docs: the trust-boundary pages keep the operator guidance, the mechanism moves to implementation 2026-11-06 19:45:11 +01:00
iris
30a8f71bb5 docs: the trust-boundary pages keep the operator guidance, the mechanism moves to implementation
boundary.md keeps the model, the design rule, why network isolation
matters and host admin socket access; the hive-priv socket activation and
the per-agent socket directory move to 4-implementation/trust-boundary.
security.md keeps the agent trust model and the path-name rule; the nix
builds mode with its threat model, and the hive-c0re privilege separation,
move to their own pages there. Headings and text move as they were, with
one level shaved off the heading depth. Links, code and nix pointers, and
the docs index follow the moves.
2026-11-06 19:45:11 +01:00
iris
0e10473e6f fixup! docs: sort the top-level directories into five sections by what the reader wants 2026-11-06 18:46:57 +01:00
iris
6739bb903d docs: sort the top-level directories into five sections by what the reader wants
Every docs directory moves under 1-getting-started, 2-handbook,
4-implementation or 5-project; the options reference (section 3) comes from
the website and has no directory here. trust-boundary stays whole under the
handbook for now. web-ui, swarm and tools split between handbook and
implementation, and the command-line references move to
2-handbook/reference. Links, path references in code and nix, and the docs
index follow the moves; no page content changes.
2026-11-06 18:46:57 +01:00