Watch
0
0
Fork
You've already forked hyperhive
0
Commit graph

6,550 commits

Author SHA1 Message Date
iris
ead667da42 docs: the credentials page keeps the approach and moves the mechanics out
credentials.md drops the target-shape framing and keeps the rules, where a
secret lives, the swarm- and hive-level secrets and how to add one. The queue
responder's keys, per-principal identities, how a reader reaches the store, the
store UI's login and where the root lives move to
4-implementation/swarm/credentials.md. The per-secret reference moves to
4-implementation/swarm/credentials-reference.md. Links and comments follow.
2026-11-11 01:50:55 +01:00
iris
c3791a0c8a docs: the destroy-versus-purge pointer names the handbook persistence section 2026-11-11 01:50:35 +01:00
iris
0ae34b1cd0 docs: persistence and config changes become one operator page
The operator parts of the persistence and config-changes pages merge into
agents/persistence.md. The sqlite tables, state dirs, mounts and migrations move
to 4-implementation/agent-state/persistence.md, and the deploy path, meta flake,
deploy markers, startup migrations, root container, system messages and
autoupdate move to 4-implementation/agent-state/config-changes.md. Links, code
comments and nix comments that named the old sections point at the new pages.
2026-11-11 01:50:35 +01:00
iris
a36b9745b3 docs: the swarm UI page says an archetype agent has no config repo link 2026-11-11 01:48:37 +01:00
iris
a188c4ea79 swarm ui: the config repo link stays unless the agent is known to be an archetype agent 2026-11-11 01:48:37 +01:00
iris
356390befb swarm ui: the agent detail leaves out the config repo link for an archetype agent
An agent built from an archetype has no config repo on the forge, so the link
404ed. It shows again once the agent is turned into a custom one.
2026-11-11 01:48:37 +01:00
iris
6695355b9d docs: code comments point at the moved SSO and matrix sections 2026-11-11 01:47:20 +01:00
iris
0f39bdaaa4 docs: the forge, knowledge, archetypes, matrix and SSO pages move their implementation detail out
Account minting, knowledge sync, the archetype refresh, the matrix appservice
flow and the SSO secret delivery move to pages under 4-implementation/swarm.
Each handbook page keeps what an operator does or sees, with a pointer.
2026-11-11 01:47:20 +01:00
argus
c6b24359cd review classifier: operator docs name no code units
A negative rule for docs/1-getting-started and docs/2-handbook: text that
names a source path, function, type, table, queue subject or wire field, or
describes how the code works inside, belongs in docs/4-implementation. The
rules-file test lists the new name.
2026-11-11 01:44:55 +01:00
iris
7832223536 docs: the failures-only setting names the dropped rows in the active voice 2026-11-11 01:39:05 +01:00
iris
eaafe31e66 docs: the failures-only setting says the unsure rows are left out too 2026-11-11 01:39:05 +01:00
iris
cf5746188a review classifier: a setting makes the PR review list only the failed rules
failures_only (off by default, also for a stored document without it) makes the
review the classifier posts on a PR list just the rows that failed their rule,
or say that no check failed on an approval. A review with no clean verdict and
a try-out keep every row. The classifier settings form gets a checkbox for it.
2026-11-11 01:39:05 +01:00
iris
818d41eef3 swarm ui: the status age helpers live in status-fields.ts
StatusMessage.tsx and statusMessage.ts differ only by case, which the esbuild step in the nix build can't read on a case-insensitive builder.
2026-11-11 01:25:15 +01:00
iris
0547081138 swarm ui: the agent's status message shows how long ago it was set
The card and its detail showed the message alone, so a message from an hour
ago read like the current one. Both now add the age, (5m ago), which ticks
like the other relative times. An agent with no message still shows a dash.
2026-11-11 01:25:15 +01:00
damocles
1cc1cb804d hive-matrix: prefill the chat client with the server name, not the hive domain 2026-11-11 00:31:20 +01:00
atlas
2de07c4575 bridge waits out a slow authelia; controller retries a bridge 503 2026-11-11 00:31:16 +01:00
atlas
bcd698eb43 vm-tests: semi-spread, the example on three machines and an outside client 2026-11-11 00:14:24 +01:00
atlas
250118d558 semi-spread example: name the store's CA on the machines without the store 2026-11-11 00:14:24 +01:00
atlas
1ad4ebdd7b vm-tests: factor the agent toplevels out of full-setup 2026-11-11 00:14:24 +01:00
atlas
86c5dac89d swarm-archive: external s3 backend (options, prune path, docs, module-eval cases, vm fake s3)
- swarm-archive.nix, lib/archive-server.nix: deploy.archive.backend and
  deploy.archive.s3.* options; the s3 server and the prune read the key from the
  store into rclone's environment; the prune lists and addresses repositories
  through rclone instead of a local directory
- swarm-bao.nix: the archive reads swarm/services/archive/s3/*
- docs: archive.md "External S3" section, two credentials-reference rows
- module-eval: builder.nix cases for local and s3, the missing-setting
  assertion; bao-grants.nix gains the s3 read grant
- vm test: second node with a fake rclone serve s3 whose key is generated at
  test time
2026-11-11 00:13:19 +01:00
iris
ebbf4fa37b docs: the knowledge page points at the moved forge webhooks section 2026-11-11 00:12:06 +01:00
iris
f7cdd194f7 docs: the swarm and services pages become overviews
The controller's status, queue, AGENTS.md and forge-webhook details move to
4-implementation/swarm/controller.md. The metrics, logs and OTEL detail moves to
4-implementation/swarm/telemetry.md. Each leaves a short operator blurb with the
options to touch, and links into the moved text are updated.
2026-11-11 00:12:06 +01:00
iris
7df6672c87 docs: external forge and matrix accounts get pages in external-accounts
The directory covered GitHub and GitLab only; the forge and matrix account
kinds an operator can link were described under the swarm UI page. Two new
pages (forgejo.md, matrix.md) cover linking, what the agent gets and
deleting in operator terms, the directory README lists them, and the UI page
keeps a pointer for each kind.
2026-11-11 00:10:47 +01:00
iris
99ca130552 swarm ui: the freshness badge moves from the agent card onto the status panel
The card header carried a fresh/stale badge with the report's age. It now
sits in the status row of the opened card, which already showed it, and the
card header keeps the name, the message and the controls.
2026-11-10 21:38:32 +01:00
iris
4eceb8a6d8 docs: persistence no longer says the dashboard shows the model
The hive dashboard dropped its model badge; active_model is still read into
the container view.
2026-11-10 21:27:44 +01:00
iris
dc11b0c414 hive ui: the container rows no longer show the active model or the context size
Removes the model pill and the ctx chip from the hive dashboard's container
rows, with their styles and the page's fingerprint field. The agent's own
status already carries context and cost in the swarm UI.
2026-11-10 21:27:44 +01:00
iris
016caaa3d2 docs: the services page describes the ci runner board and its runner filter
The board gained a Runner filter and one series per runner; the CI runner
section now says what the board shows and how it differs from the forge's CI
runs tab.
2026-11-10 19:12:01 +01:00
iris
71b634d461 grafana: the ci runner board shows each runner, with a runner filter
The panels took the max or sum over the one swarm runner. A runner variable
(the series' service.instance.id) filters every panel, and uptime, job slots
and slot use show one series per runner, so a runner registered by hand shows
up beside the swarm's once its metrics reach the store.
2026-11-10 18:40:48 +01:00
atlas
7800f92425 semi-spread example: serve internal vhosts on the VPN addresses only, over IPv4 and IPv6 2026-11-10 17:33:58 +01:00
atlas
538da5a13a add a semi-spread example deploy and a check that evaluates it 2026-11-10 17:33:58 +01:00
atlas
793d987a88 swarm-archive: forget future-dated snapshots before each prune; fix the grants case
A client chooses a snapshot's time, so snapshots dated ahead could fill
--keep-last and push the real ones out of a prune. The prune now forgets
snapshots dated more than an hour after now first, and logs their ids. The
VM test forges one and checks the real snapshot stays. The bao-grants case
that read a + path as a glob now names the literal path, and two cases that
pinned 'nothing else' list the archive grants. The ciRunner stanza is back
at its original indent.
2026-11-10 08:32:54 +01:00
atlas
91f36f39d2 swarm-archive: grant only once an archive is up; keep logins across a gap in placements
The archive host creates a ready marker in the store and swarm-controller
writes no credentials before it exists, so a swarm without an archive, and a
mixed-version swarm, leave every hive backup a logged no-op. A hive with no
declaration no longer counts as placing nothing: its copies and its agents'
user lines stay. The restic password is pinned by tests across a revoke, a
re-placement and a move.
2026-11-10 08:18:45 +01:00
atlas
306aae0378 swarm-archive: back up every agent's state to an append-only restic repository per agent
swarm-archive serves restic repositories with rclone, append-only, one login
and one repository per agent. swarm-controller writes each placed agent's
login and restic password to the store, replaces them on a move and removes
them when the agent is destroyed. Every hive backs its agents up hourly under
its own store identity. The archive host prunes by retention.
2026-11-10 07:49:49 +01:00
atlas
409e7ee5a0 docs: handbook states what the code does (fact sweep fixes) 2026-11-10 06:50:19 +01:00
atlas
1042bf65db pause_hold: pin the undeclared-agent case and fix the test comment 2026-11-10 06:49:16 +01:00
atlas
e5c55257f8 a hive-side pause holds against the swarm's declared state until an operator resumes
the harness writes the reason into the pause marker when it pauses itself and reports it as paused_by_hive in its turn-state header. swarm-controller declares such an agent paused (only if declared up) and shows the reason on the agents status row and the swarm ui card.
2026-11-10 06:49:16 +01:00
atlas
6470e2b109 module-eval: match the tombstone message on phrases that stay on one line 2026-11-10 06:48:54 +01:00
atlas
418b50980c hive-priv: drop the descriptor-taking snapshot send and its fd-receiving loop 2026-11-10 06:48:54 +01:00
atlas
20d286f06a remove the old snapshot store; tombstone its options 2026-11-10 06:48:54 +01:00
damocles
de3c5cbb65 hive-forge: let pr reviews take --at and -m text that starts with a hyphen 2026-11-10 06:48:39 +01:00
damocles
c1bb54b818 hive-matrix-mcp: leave the typing extension off in sliding sync 2026-11-10 06:48:09 +01:00
atlas
04a5133c1b full-setup vm test: match iris and spawn exactly in the agents-status check
The jq filter used contains(), which matches substrings per element, so an agent named spawn-two satisfied spawn. It now counts the exact names iris and spawn among the fresh agents that need a login.
2026-11-10 06:47:34 +01:00
atlas
a2cd4f3da8 full-setup: diagnose() prints the failed units and the journal tail only
On a timed-out wait, diagnose() prints systemctl --failed for the machine
or container and the last 50 journal lines of the units waited on. It no
longer prints `systemctl status` for them. Only the failure path changes.
2026-11-10 06:47:34 +01:00
atlas
702974867f full-setup vm test: wait for the agents to be deployed and need a login
A last subtest polls GET /api/agents/status on the controller socket until
iris and spawn are fresh with needs_login true, through settle() with up to
40 minutes. The header's green condition is now this check, and its note on
what is not scripted yet drops the agents' deploy.
2026-11-10 06:47:34 +01:00
atlas
b14ae9e34b full-setup vm test: spawn, a reviewer-archetype agent, replaces ruth
mara chose on the PR to test a reviewer-archetype agent named spawn first
and leave a custom root agent (ruth) for later. So the test creates spawn
with the archetype's default permissions and drops manage_root_agent, which
only ruth carried.

- hive-meta-flake/testdata/meta-flake-swarm.nix.in: the agent is spawn, and
  its web port is 8316, the port the name hashes to (ruth's was 8232).
- hive-meta-flake/src/lib.rs: the unit test that compares this fixture with
  the rendered flake renders spawn instead of ruth.
- nix/vm-tests/full-setup.nix: the agents list and step 8 use spawn.
- The `swarmctl setup status` expectation keeps its "9  ruth created and up"
  row: that is the product's fixed step text (swarmctl/src/setup.rs), not the
  test's agent. The test creates no root agent, so step 9 is expected to be
  not done, and the subtest's comment says so.
2026-11-10 06:47:34 +01:00
flake-bot
bd7f3a5600 nix flake update 2026-11-10 04:00:59 +01:00
iris
4b1012056c hive-agent: order a stored login by when the store wrote it, not by its number
A delete removes the leaf's metadata, so the KV number restarts at 1. A login
made right after a delete, before the next poll, was version 1 again and
looked no newer than the recorded 1, so it never installed. The version file
now records the store's write time next to the number and a later write
installs whatever its number. A record from before the time was kept falls
back to the number and gets its time when the same number is read again.
2026-11-09 23:03:08 +01:00
iris
5f5933fde9 docs, swarm ui: a deleted login now logs the agent out, and the dialog and docs say so
With the harness poll, an agent that holds a session logs out within 5
minutes of its stored login being deleted. The confirmation and the
claude-login page said the agent keeps its session.
2026-11-09 23:03:08 +01:00
iris
a2c9e9a8d4 hive-agent: a logged-in agent polls the swarm login, and logs out when it is deleted
wait_for_login read the store leaf only while the agent waited for a login.
A logged-in agent now reads it every 5 minutes, and a paused one once before
it resumes, so a login made or deleted in the swarm UI reaches an agent that
never failed. A newer version is installed; a store that answers nothing
stored after a version was installed means the stored login was deleted, and
the agent is logged out as /api/logout does it, with the recorded version
forgotten so the next login installs. A read that fails changes nothing.
2026-11-09 23:03:08 +01:00
iris
71a4d1d255 swarm ui: the PR report's approvals column filters on whether the rule is met
The report had an approvals column (1/2) and a separate approved column.
They are one fact, so approvals now carries the filter, complete or missing,
and the approved column is gone.
2026-11-09 22:44:10 +01:00