Watch
0
0
Fork
You've already forked hyperhive
0

docs: remove hyphens from auto-X compounds per Microsoft.Auto style

Fixed 72 hyphenated 'auto-X' compounds across the docs by deleting
the hyphen to match Microsoft style guide (autogenerated, autoregistration,
autodiscovery, etc). Preserved original capitalization throughout.

Covered 26 documentation files in docs/, including README.md, agent-lifecycle,
integrations, scheduler, networking, process, tools, trust-boundary,
turn-loop, and web-ui sections.
This commit is contained in:
iris 2026-09-07 14:38:33 +02:00 • committed by mara
commit 05cf8e8276
26 changed files with 70 additions and 70 deletions

View file

@ -3,7 +3,7 @@
Depth reference for hyperhive — the substrate, not the pitch (that's the Depth reference for hyperhive — the substrate, not the pitch (that's the
[top-level README](../README.md) / [website](https://hyperhive.darkest.space)). [top-level README](../README.md) / [website](https://hyperhive.darkest.space)).
Every page here stands alone; pick the one matching your task rather than Every page here stands alone; pick the one matching your task rather than
reading top to bottom. For the auto-generated NixOS options reference reading top to bottom. For the autogenerated NixOS options reference
(every `services.hyperhive.*` / `hyperhive.*` option, host and agent), see (every `services.hyperhive.*` / `hyperhive.*` option, host and agent), see
[the options site](https://hyperhive.darkest.space/options/) instead — [the options site](https://hyperhive.darkest.space/options/) instead —
this tree is prose, that one's generated straight from the module this tree is prose, that one's generated straight from the module
@ -63,7 +63,7 @@ declarations.
- **What does `hivectl` do? Provisioning, gateway users, container - **What does `hivectl` do? Provisioning, gateway users, container
shells?** → [`tools/hivectl.md`](tools/hivectl.md) (the curated guide); shells?** → [`tools/hivectl.md`](tools/hivectl.md) (the curated guide);
[`tools/hivectl-cli.md`](tools/hivectl-cli.md) for the exhaustive, [`tools/hivectl-cli.md`](tools/hivectl-cli.md) for the exhaustive,
auto-generated flag reference. autogenerated flag reference.
## Networking & swarms ## Networking & swarms
@ -83,7 +83,7 @@ declarations.
[`scheduler/jobq.md`](scheduler/jobq.md) — operator-facing, no implementation detail. [`scheduler/jobq.md`](scheduler/jobq.md) — operator-facing, no implementation detail.
- **How does the rebuild queue work? What are the concrete step kinds, - **How does the rebuild queue work? What are the concrete step kinds,
queue sources, scheduler internals?** → [`scheduler/coordinator.md`](scheduler/coordinator.md). queue sources, scheduler internals?** → [`scheduler/coordinator.md`](scheduler/coordinator.md).
- **How does the CI runner work? What's the auto-registration flow?** → - **How does the CI runner work? What's the autoregistration flow?** →
[`scheduler/ci.md`](scheduler/ci.md). [`scheduler/ci.md`](scheduler/ci.md).
- **How do I export Claude Code metrics (tokens, cost, tool calls) to - **How do I export Claude Code metrics (tokens, cost, tool calls) to
Prometheus/Grafana?** → [`scheduler/observability.md`](scheduler/observability.md). Prometheus/Grafana?** → [`scheduler/observability.md`](scheduler/observability.md).

View file

@ -150,7 +150,7 @@ Manager}` switch picks the MCP tool allow-list claude sees. Both are
manager-only overrides exist across `hive-c0re` today: loose-ends manager-only overrides exist across `hive-c0re` today: loose-ends
visibility (manager sees hive-wide, sub-agents only their own), visibility (manager sees hive-wide, sub-agents only their own),
`destroy` refusing to act on the manager, and crash-watch skipping `destroy` refusing to act on the manager, and crash-watch skipping
the manager (it auto-restarts via systemd instead of going through the manager (it autorestarts via systemd instead of going through
the crash-watch loop). Each is planned to become an the crash-watch loop). Each is planned to become an
ancestor/descendant check instead of a manager-name check — see the ancestor/descendant check instead of a manager-name check — see the
module docs for `loose_ends.rs`, `stores/broker.rs`, `actions.rs`, module docs for `loose_ends.rs`, `stores/broker.rs`, `actions.rs`,
@ -225,7 +225,7 @@ uid 0 and have the setuid bit set."
- `Restart = on-failure`, `RestartSec = 2` — keeps the harness - `Restart = on-failure`, `RestartSec = 2` — keeps the harness
resilient across transient crashes without thundering retries. resilient across transient crashes without thundering retries.
- `RuntimeDirectory = "hive-config"` → `/run/hive-config/` owned by - `RuntimeDirectory = "hive-config"` → `/run/hive-config/` owned by
`User=`, auto-cleared on stop. The harness writes regenerated `User=`, autocleared on stop. The harness writes regenerated
`claude-{mcp-config,settings,system-prompt}` files there `claude-{mcp-config,settings,system-prompt}` files there
(`paths::config_dir`). Deliberately separate from `/run/hive`, which (`paths::config_dir`). Deliberately separate from `/run/hive`, which
the host bind-mounts in root-owned and which holds hive-c0re's the host bind-mounts in root-owned and which holds hive-c0re's

View file

@ -340,7 +340,7 @@ Single-phase variants exist for paths without
rollback semantics: `meta::lock_update_for_rebuild(name)` for rollback semantics: `meta::lock_update_for_rebuild(name)` for
the manual `↻ R3BU1LD` button (commits if the lock changed) the manual `↻ R3BU1LD` button (commits if the lock changed)
and `meta::lock_update_hyperhive()` for the and `meta::lock_update_hyperhive()` for the
auto-update flake-rev bump (one shot before per-agent autoupdate flake-rev bump (one shot before per-agent
rebuilds, commits if the lock changed). rebuilds, commits if the lock changed).
`meta::sync_agents(hive: &HiveEnv, agents: &[AgentSpec])` — `hive` `meta::sync_agents(hive: &HiveEnv, agents: &[AgentSpec])` — `hive`
@ -644,7 +644,7 @@ hive-c0re-vouched commit sha. Optional `tag` carries the deploy
bookkeeping tag — `deployed/<id>` on a successful build or bookkeeping tag — `deployed/<id>` on a successful build or
`failed/<id>` on a failed one, planted by the `MergeConfigPr` deploy. `failed/<id>` on a failed one, planted by the `MergeConfigPr` deploy.
Both fields are `Option`: `None` on the paths that don't deploy a new Both fields are `Option`: `None` on the paths that don't deploy a new
commit (spawn / init_config / meta-update / deny, and the auto-update commit (spawn / init_config / meta-update / deny, and the autoupdate
sweep's `job_queue::templates::rebuild` reapplying the existing main, sweep's `job_queue::templates::rebuild` reapplying the existing main,
or the dashboard `↻ R3BU1LD` button when the lock didn't move). When set, or the dashboard `↻ R3BU1LD` button when the lock didn't move). When set,
`git show <sha>` against `/applied/<n>/.git` inside the `git show <sha>` against `/applied/<n>/.git` inside the
@ -657,7 +657,7 @@ message-event list. If it's "FYI, check when convenient," call
`push_todo`/`push_todo_submitter` directly instead — no new wire type `push_todo`/`push_todo_submitter` directly instead — no new wire type
needed. needed.
## Auto-update on startup ## Autoupdate on startup
`hive-c0re serve` runs `auto_update::run` in a background task right `hive-c0re serve` runs `auto_update::run` in a background task right
after opening the coordinator. It enumerates managed containers and after opening the coordinator. It enumerates managed containers and
@ -668,7 +668,7 @@ one — sub-agents and the root agent go through the same
"Rev" = canonical filesystem path of `cfg.hyperhiveFlake`. Marker "Rev" = canonical filesystem path of `cfg.hyperhiveFlake`. Marker
file: `/var/lib/hyperhive/applied/.<name>.hyperhive-rev`. If the file: `/var/lib/hyperhive/applied/.<name>.hyperhive-rev`. If the
flake input has no canonical path (for example a `github:` URL), flake input has no canonical path (for example a `github:` URL),
auto-update is a no-op — rebuild manually. autoupdate is a no-op — rebuild manually.
The dashboard surfaces pending updates per agent: a clickable The dashboard surfaces pending updates per agent: a clickable
"needs update ↻" badge appears whenever the marker differs from "needs update ↻" badge appears whenever the marker differs from

View file

@ -439,7 +439,7 @@ On a btrfs host, a brand-new agent's state root is created as a
**btrfs subvolume** instead of a plain directory (progressive **btrfs subvolume** instead of a plain directory (progressive
enhancement — see the #1762 lane). This is a no-op fallback on enhancement — see the #1762 lane). This is a no-op fallback on
non-btrfs hosts and for any agent whose root already exists, so non-btrfs hosts and for any agent whose root already exists, so
nothing is auto-migrated: existing agents keep their plain dirs nothing is automigrated: existing agents keep their plain dirs
until an explicit opt-in upgrade. until an explicit opt-in upgrade.
- **Creation:** `lifecycle::ensure_agent_state_subvolume` runs before - **Creation:** `lifecycle::ensure_agent_state_subvolume` runs before
@ -548,7 +548,7 @@ streamable-http (`hyperhive.mcp.matrixHttpPort`, no stdio bridge —
same shape as `hive-bash-daemon`), emits hyperhive wake signals same shape as `hive-bash-daemon`), emits hyperhive wake signals
on incoming room events via `/run/hive/mcp.sock`. Conditional on on incoming room events via `/run/hive/mcp.sock`. Conditional on
`hyperhive.matrix.enable` (which both the daemon AND the `hyperhive.matrix.enable` (which both the daemon AND the
auto-injected `extraMcpServers.matrix` entry read). autoinjected `extraMcpServers.matrix` entry read).
**First-boot ordering**: hive-c0re provisions the matrix token AFTER **First-boot ordering**: hive-c0re provisions the matrix token AFTER
agent containers come up. Without the path-trigger sibling agent containers come up. Without the path-trigger sibling

View file

@ -331,7 +331,7 @@ subsequent comment.
### Subscription management ### Subscription management
The poller does **not** auto-unsubscribe from repo watches — it The poller does **not** autounsubscribe from repo watches — it
delivers every unread notification it's handed. Bounding the delivers every unread notification it's handed. Bounding the
firehose (dropping broad repo watches an agent doesn't need) is done firehose (dropping broad repo watches an agent doesn't need) is done
explicitly via a hive-forge CLI subscription verb, not by the poller explicitly via a hive-forge CLI subscription verb, not by the poller

View file

@ -26,9 +26,9 @@ the local clone updates automatically (see
Canonical forge location: `internal/knowledge` (org `internal`, Canonical forge location: `internal/knowledge` (org `internal`,
repo `knowledge`). The repo is public, so every agent's forge account repo `knowledge`). The repo is public, so every agent's forge account
has read access without an explicit per-agent collaborator grant; has read access without an explicit per-agent collaborator grant;
only the `core` account has push access, for auto-seeding. only the `core` account has push access, for autoseeding.
The repo is auto-created at hive-c0re startup if it doesn't exist, The repo is autocreated at hive-c0re startup if it doesn't exist,
seeded with a `README.md` containing a contribution guide and a seeded with a `README.md` containing a contribution guide and a
blank table of contents. Add an entry to that ToC each time you blank table of contents. Add an entry to that ToC each time you
create a new document. create a new document.

View file

@ -33,7 +33,7 @@ Two distinct hostnames:
*irrevocably* in every `@user:<server_name>` and `!room:<server_name>` *irrevocably* in every `@user:<server_name>` and `!room:<server_name>`
identifier minted on this homeserver. can't be changed later identifier minted on this homeserver. can't be changed later
without abandoning every account and chat history. Defaults to the without abandoning every account and chat history. Defaults to the
bare `services.hyperhive.swarm.domain`; clients auto-discover the bare `services.hyperhive.swarm.domain`; clients autodiscover the
actual API endpoint via the `.well-known/matrix/{client,server}` actual API endpoint via the `.well-known/matrix/{client,server}`
routes the gateway serves at that domain. routes the gateway serves at that domain.
- **`gatewayHost`** — the API listener hostname, where the gateway's - **`gatewayHost`** — the API listener hostname, where the gateway's
@ -167,7 +167,7 @@ Matrix client that groups all agent-to-agent + operator rooms in one
place. place.
The sweep also provisions a default **`hive-chat` room** as an The sweep also provisions a default **`hive-chat` room** as an
`m.space.child` of the Space. Joining a Space doesn't auto-join `m.space.child` of the Space. Joining a Space doesn't autojoin
child rooms — the explicit room entry ensures the operator and every child rooms — the explicit room entry ensures the operator and every
agent can find a common chat room without manual setup. Room join is agent can find a common chat room without manual setup. Room join is
restricted (any Space member including the operator can join; agents restricted (any Space member including the operator can join; agents
@ -256,7 +256,7 @@ Both fixed in `nix/host-modules/hive-matrix.nix` via two derivations:
`native_imaging` C source via `pkgs.emscripten`. Source comes `native_imaging` C source via `pkgs.emscripten`. Source comes
from `pkgs.fluffychat-web.passthru.pubspecLock.dependencySources.native_imaging` from `pkgs.fluffychat-web.passthru.pubspecLock.dependencySources.native_imaging`
— already in the build closure of the flutter app, so no parallel — already in the build closure of the flutter app, so no parallel
hash pin and version auto-syncs with nixpkgs bumps. Build closure hash pin and version autosyncs with nixpkgs bumps. Build closure
is ~3.6 GiB (emscripten LLVM); runtime closure is just the two is ~3.6 GiB (emscripten LLVM); runtime closure is just the two
output files. `dontConfigure = true` because cmake runs inside output files. `dontConfigure = true` because cmake runs inside
`js/Makefile` via `emcmake cmake`, not at the package root. The `js/Makefile` via `emcmake cmake`, not at the package root. The

View file

@ -194,7 +194,7 @@ services.hyperhive.gateway = {
}; };
``` ```
nginx obtains and auto-renews certs via the ACME HTTP-01 challenge on `port` (default 80). Certs land in `/var/lib/acme/` on the host, managed by nixpkgs's `security.acme` in the ordinary way. nginx obtains and autorenews certs via the ACME HTTP-01 challenge on `port` (default 80). Certs land in `/var/lib/acme/` on the host, managed by nixpkgs's `security.acme` in the ordinary way.
**Requirements**: `services.hyperhive.domain` must be publicly DNS-resolvable to this host, and `openFirewall = true` so Let's Encrypt can reach `/.well-known/acme-challenge/`. Each active vhost (main domain, `forge.<swarm-domain>`, `chat.<swarm-domain>`) gets its own cert via separate ACME challenges — the swarm services default to names under `services.hyperhive.swarm.domain`, so **every one of those names must resolve to this host too**, not just the hive's own. **Requirements**: `services.hyperhive.domain` must be publicly DNS-resolvable to this host, and `openFirewall = true` so Let's Encrypt can reach `/.well-known/acme-challenge/`. Each active vhost (main domain, `forge.<swarm-domain>`, `chat.<swarm-domain>`) gets its own cert via separate ACME challenges — the swarm services default to names under `services.hyperhive.swarm.domain`, so **every one of those names must resolve to this host too**, not just the hive's own.
@ -370,10 +370,10 @@ services.hyperhive.swarm.forge.rootUrl = "https://forge.example.com/";
``` ```
`rootUrl` (default **null**) overrides the Forgejo `ROOT_URL` that's `rootUrl` (default **null**) overrides the Forgejo `ROOT_URL` that's
auto-derived from `forge.domain` + gateway state. The auto-derivation autoderived from `forge.domain` + gateway state. The autoderivation
covers most cases: covers most cases:
| Shape | Auto-derived `ROOT_URL` | | Shape | Autoderived `ROOT_URL` |
|---|---| |---|---|
| `deploy.forgejo.behindGateway = true` | `https://<forge.domain>/` (port suffix omitted when `gateway.httpsPort == 443`) | | `deploy.forgejo.behindGateway = true` | `https://<forge.domain>/` (port suffix omitted when `gateway.httpsPort == 443`) |
| `deploy.forgejo.behindGateway = false` | `http://<forge.domain>:<httpPort>/` | | `deploy.forgejo.behindGateway = false` | `http://<forge.domain>:<httpPort>/` |

View file

@ -26,7 +26,7 @@ looks like a natural extension point and does nothing. Use
Not `boot.isContainer = true`. Renamed in nixos-25.11+. Not `boot.isContainer = true`. Renamed in nixos-25.11+.
### `nixos-container create` auto-assigns `HOST_ADDRESS` / `LOCAL_ADDRESS` ### `nixos-container create` autoassigns `HOST_ADDRESS` / `LOCAL_ADDRESS`
…in the `.conf`. The start script's `if HOST_ADDRESS set → …in the `.conf`. The start script's `if HOST_ADDRESS set →
--network-veth` branch then forces a private netns — silently fatal --network-veth` branch then forces a private netns — silently fatal

View file

@ -1,7 +1,7 @@
# The PR review gate # The PR review gate
What a review verdict means, why a reviewer shouldn't wait on CI to What a review verdict means, why a reviewer shouldn't wait on CI to
submit one, and what "armed to auto-merge" actually signals about the submit one, and what "armed to automerge" actually signals about the
human review that already happened. human review that already happened.
## The gate has (up to) three parts, and they're per-repo settings ## The gate has (up to) three parts, and they're per-repo settings
@ -17,7 +17,7 @@ hive or every repo. The pieces a repo _can_ require:
(Forgejo's "dismiss stale approvals" branch-protection option), not (Forgejo's "dismiss stale approvals" branch-protection option), not
universal behavior. universal behavior.
- **Someone with write access has armed the PR to merge** — a manual - **Someone with write access has armed the PR to merge** — a manual
merge once the required conditions hold, or Forgejo's auto-merge merge once the required conditions hold, or Forgejo's automerge
(merges automatically the moment the other required conditions are (merges automatically the moment the other required conditions are
met). met).
@ -36,9 +36,9 @@ still running"), but don't gate the formal verdict on it: CI isn't a
signal a reviewer waits on, it's a separate condition that resolves signal a reviewer waits on, it's a separate condition that resolves
independently. independently.
## What arming auto-merge actually means ## What arming automerge actually means
Auto-merge isn't "no human ever looked at this." Whoever arms it has Automerge isn't "no human ever looked at this." Whoever arms it has
already judged the PR sound at a coarse level — the signal it sends is already judged the PR sound at a coarse level — the signal it sends is
roughly _"apart from maybe minor tweaks a reviewer can still catch, roughly _"apart from maybe minor tweaks a reviewer can still catch,
I think this is fine."_ That's the human-in-the-loop step, and it I think this is fine."_ That's the human-in-the-loop step, and it
@ -46,7 +46,7 @@ already happened. No large changes are expected to surface after
that point — a reviewer's job past that point is to flag it if one that point — a reviewer's job past that point is to flag it if one
does, not to assume none ever will. does, not to assume none ever will.
The practical consequence for a reviewer: on a repo where auto-merge The practical consequence for a reviewer: on a repo where automerge
may already be armed before your review lands, a plain `APPROVED` can may already be armed before your review lands, a plain `APPROVED` can
be the last step before the merge actually happens, with no further be the last step before the merge actually happens, with no further
review pass after yours. That's a reason to actually finish checking review pass after yours. That's a reason to actually finish checking

View file

@ -26,7 +26,7 @@ Two things worth knowing before you rely on it:
host's NixOS config (not optional if you plan to actually use this). host's NixOS config (not optional if you plan to actually use this).
Everything below this point is implementation detail: exact Everything below this point is implementation detail: exact
auto-registration internals, container design, and the full security autoregistration internals, container design, and the full security
writeup. writeup.
## CI checks ## CI checks
@ -105,7 +105,7 @@ build can't hold the runner's single slot indefinitely).
- **Sandbox fallback**: nspawn containers can't create user-namespaces, so nix's sandboxing would always fail. Module sets `nix.settings.sandbox-fallback = true` in the container — nix builds run unsandboxed (safe because the container is already isolated). See `docs/process/gotchas.md`. - **Sandbox fallback**: nspawn containers can't create user-namespaces, so nix's sandboxing would always fail. Module sets `nix.settings.sandbox-fallback = true` in the container — nix builds run unsandboxed (safe because the container is already isolated). See `docs/process/gotchas.md`.
- **Credential isolation**: the forge admin token (`forge-core-token`) never enters the container. hive-c0re holds it and performs all forge API calls (runner validation + registration-token mint, in `forge/ci_runner.rs`); via hive-priv it writes only the runner registration token to the host env-file `/run/hive-ci/runner-token`, which the container bind-mounts read-only. - **Credential isolation**: the forge admin token (`forge-core-token`) never enters the container. hive-c0re holds it and performs all forge API calls (runner validation + registration-token mint, in `forge/ci_runner.rs`); via hive-priv it writes only the runner registration token to the host env-file `/run/hive-ci/runner-token`, which the container bind-mounts read-only.
## Auto-registration flow ## Autoregistration flow
Registration is **off the container's boot-critical path** — hive-c0re owns Registration is **off the container's boot-critical path** — hive-c0re owns
it and runs it out of band, so a slow forge or core-token never delays the it and runs it out of band, so a slow forge or core-token never delays the
@ -135,7 +135,7 @@ Gated on `HYPERHIVE_FORGE_CI_ENABLED` (the nix module sets it on `hive-c0re.serv
## Actions checkout mirror ## Actions checkout mirror
When `deploy.forgejo.ci.enable` is set, hive-c0re auto-seeds an When `deploy.forgejo.ci.enable` is set, hive-c0re autoseeds an
`actions/checkout` pull-mirror on the local forge and sets Forgejo's `actions/checkout` pull-mirror on the local forge and sets Forgejo's
`DEFAULT_ACTIONS_URL` to point at the local instance. This means CI `DEFAULT_ACTIONS_URL` to point at the local instance. This means CI
`uses: actions/checkout@vN` steps resolve entirely on loopback — no `uses: actions/checkout@vN` steps resolve entirely on loopback — no
@ -163,7 +163,7 @@ Each entry is created as a real Forgejo pull-mirror — not a one-off
clone. Forgejo re-syncs the mirror on every pull (`git-upload-pack` clone. Forgejo re-syncs the mirror on every pull (`git-upload-pack`
request), so a DNS blip during that sync will propagate back to the request), so a DNS blip during that sync will propagate back to the
runner as a hard `git clone` failure. The runner as a hard `git clone` failure. The
`<owner>` org in `dest` is auto-created. Keep mirror dests out of the `<owner>` org in `dest` is autocreated. Keep mirror dests out of the
hive-c0re-managed namespaces (`config/`, `shared/`, `agents/`, `core/`) hive-c0re-managed namespaces (`config/`, `shared/`, `agents/`, `core/`)
to avoid provisioning collisions. to avoid provisioning collisions.
@ -248,6 +248,6 @@ builder — disk-pressure collection at least runs while nothing is mid-copy.
## References ## References
- `nix/host-modules/hive-ci.nix`: runner configuration, auto-registration script, container setup. - `nix/host-modules/hive-ci.nix`: runner configuration, autoregistration script, container setup.
- `.forgejo/workflows/ci.yml`: workflow definition. - `.forgejo/workflows/ci.yml`: workflow definition.
- `docs/process/gotchas.md`: nix sandboxing limitations in containers. - `docs/process/gotchas.md`: nix sandboxing limitations in containers.

View file

@ -158,7 +158,7 @@ reparent(moves): Reparent(moves) (no rebuild — topology.json is read live)
Notable collapses: Notable collapses:
- **`rebuild` is one uniform shape** — no `was_running` branch. - **`rebuild` is one uniform shape** — no `was_running` branch.
`StopForUpdate` noops when already down; the tail `Reconcile` auto-noops the `StopForUpdate` noops when already down; the tail `Reconcile` autanoops the
start when `wanted = Offline` (a rebuild of a deliberately-stopped agent start when `wanted = Offline` (a rebuild of a deliberately-stopped agent
leaves it stopped). leaves it stopped).
- **The swap-failure recovery-start is structural**: `Reconcile` deps on - **The swap-failure recovery-start is structural**: `Reconcile` deps on
@ -479,7 +479,7 @@ flags → `systemctl daemon-reload` → `start`.
### Prebuild attr path ### Prebuild attr path
`nix build` doesn't auto-resolve `meta#<name>` against `nixosConfigurations` the `nix build` doesn't autoresolve `meta#<name>` against `nixosConfigurations` the
way `nixos-container` does internally. The explicit attr path way `nixos-container` does internally. The explicit attr path
`<flake-root>#nixosConfigurations.<name>.config.system.build.toplevel` is required; `<flake-root>#nixosConfigurations.<name>.config.system.build.toplevel` is required;
using the bare `meta#<name>` ref would make nix look in `packages`, `legacyPackages`, using the bare `meta#<name>` ref would make nix look in `packages`, `legacyPackages`,

View file

@ -396,10 +396,10 @@ refused delivery logs `webhook: refused delivery` with the reason.
- `docs/networking/snapshot-store.md` — the swarm's `btrfs receive` endpoint, and - `docs/networking/snapshot-store.md` — the swarm's `btrfs receive` endpoint, and
the `swarm.snapshotStore` option that points a hive at it the `swarm.snapshotStore` option that points a hive at it
- `docs/process/conventions.md` § Hive identity — env vars, qualified labels - `docs/process/conventions.md` § Hive identity — env vars, qualified labels
- `docs/integrations/matrix.md` — matrix federation, TLS cert auto-generation, - `docs/integrations/matrix.md` — matrix federation, TLS cert autogeneration,
firewall posture firewall posture
- `docs/swarm/ui.md` — the swarm-wide hive roster, now the operator - `docs/swarm/ui.md` — the swarm-wide hive roster, now the operator
surface for "what hives exist" (superseded the per-hive dashboard's surface for "what hives exist" (superseded the per-hive dashboard's
old "peer hives" display) old "peer hives" display)
- `docs/networking/gateway.md` — nginx vhosts and the `.well-known/matrix/` - `docs/networking/gateway.md` — nginx vhosts and the `.well-known/matrix/`
auto-discovery scheme autodiscovery scheme

View file

@ -12,12 +12,12 @@ debug agent behavior.
- **[hivectl](hivectl.md)** — the curated guide: provisioning forge - **[hivectl](hivectl.md)** — the curated guide: provisioning forge
and matrix accounts, gateway htpasswd management, container and matrix accounts, gateway htpasswd management, container
lifecycle shortcuts, interactive agent shell access. lifecycle shortcuts, interactive agent shell access.
- **[hivectl-cli](hivectl-cli.md)** — the exhaustive, auto-generated - **[hivectl-cli](hivectl-cli.md)** — the exhaustive, autogenerated
flag-by-flag reference, kept in lockstep with the binary by CI. flag-by-flag reference, kept in lockstep with the binary by CI.
## For the swarm operator ## For the swarm operator
- **[swarmctl-cli](swarmctl-cli.md)** — the exhaustive, auto-generated - **[swarmctl-cli](swarmctl-cli.md)** — the exhaustive, autogenerated
flag-by-flag reference for `swarmctl`, kept in lockstep with the flag-by-flag reference for `swarmctl`, kept in lockstep with the
binary by CI the same way `hivectl-cli.md` is. `swarmctl` itself binary by CI the same way `hivectl-cli.md` is. `swarmctl` itself
runs as root on the swarm-controller host, not through `hivectl` — runs as root on the swarm-controller host, not through `hivectl` —
@ -31,7 +31,7 @@ debug agent behavior.
- **[forge](forge.md)** — the `hive-forge` Forgejo CLI every agent has - **[forge](forge.md)** — the `hive-forge` Forgejo CLI every agent has
for issues, PRs, and comments. Not an MCP tool — a binary agents for issues, PRs, and comments. Not an MCP tool — a binary agents
shell out to instead of ad-hoc curl. shell out to instead of ad-hoc curl.
- **[forge-cli](forge-cli.md)** — the exhaustive, auto-generated - **[forge-cli](forge-cli.md)** — the exhaustive, autogenerated
flag-by-flag reference for `hive-forge`, kept in lockstep with the flag-by-flag reference for `hive-forge`, kept in lockstep with the
binary by CI the same way `hivectl-cli.md` is. binary by CI the same way `hivectl-cli.md` is.
- **[lifecycle](lifecycle.md)** — kill/start/restart/update for an - **[lifecycle](lifecycle.md)** — kill/start/restart/update for an

View file

@ -29,12 +29,12 @@ delivered the terminal result inline, in which case no todo is created
response is returned. **Defaults to 3** — pass `wait_seconds: 0` response is returned. **Defaults to 3** — pass `wait_seconds: 0`
to disable inline waiting and always get the immediate response. to disable inline waiting and always get the immediate response.
- `name` — optional caller-chosen task id. When set it replaces the - `name` — optional caller-chosen task id. When set it replaces the
auto-generated hex id, so it surfaces in `status(<name>)` lookups and autogenerated hex id, so it surfaces in `status(<name>)` lookups and
the loose-ends list — a memorable label instead of an opaque id. A name the loose-ends list — a memorable label instead of an opaque id. A name
is **reusable once its previous task has finished**; submitting a is **reusable once its previous task has finished**; submitting a
name whose task is still `pending`/`running` is rejected. Allowed name whose task is still `pending`/`running` is rejected. Allowed
characters: `[a-z0-9-]` (a valid identifier — lowercase, digits, characters: `[a-z0-9-]` (a valid identifier — lowercase, digits,
hyphen; max 63). Omit for the auto-generated id. hyphen; max 63). Omit for the autogenerated id.
Exposed as `mcp__bash__run`. Exposed as `mcp__bash__run`.

View file

@ -98,7 +98,7 @@ Forgejo CLI wrapper for hyperhive
* `pr` — PR-scoped commands: `pr <show|status|create|merge|reviews|assign-reviewer|commits|diff|view|edit|comment|comments|close|reopen|labels|assign-committer|dependency|reaction|timeline> …` * `pr` — PR-scoped commands: `pr <show|status|create|merge|reviews|assign-reviewer|commits|diff|view|edit|comment|comments|close|reopen|labels|assign-committer|dependency|reaction|timeline> …`
* `comment-show` — Print the body (or full JSON) of a single comment by id * `comment-show` — Print the body (or full JSON) of a single comment by id
* `comment-edit` — Edit an existing comment by id * `comment-edit` — Edit an existing comment by id
* `clone` — Clone a forge repo (default `-r`/`HIVE_FORGE_REPO`) with credentials auto-injected. Pairs with `pr-create --agit` * `clone` — Clone a forge repo (default `-r`/`HIVE_FORGE_REPO`) with credentials autoinjected. Pairs with `pr-create --agit`
* `repo-create` — Create a forge repo under the current user (or `--org`). Prints the repo URL * `repo-create` — Create a forge repo under the current user (or `--org`). Prints the repo URL
* `repo-add-collaborator` — Add a collaborator to the active repo (`-r`/`HIVE_FORGE_REPO`) with a permission level. Companion to `repo-create` * `repo-add-collaborator` — Add a collaborator to the active repo (`-r`/`HIVE_FORGE_REPO`) with a permission level. Companion to `repo-create`
* `repo-labels` — List every label defined on the repo (name + description), optionally filtered by a name substring * `repo-labels` — List every label defined on the repo (name + description), optionally filtered by a name substring
@ -956,7 +956,7 @@ Edit an existing comment by id
## `hive-forge clone` ## `hive-forge clone`
Clone a forge repo (default `-r`/`HIVE_FORGE_REPO`) with credentials auto-injected. Pairs with `pr-create --agit` Clone a forge repo (default `-r`/`HIVE_FORGE_REPO`) with credentials autoinjected. Pairs with `pr-create --agit`
**Usage:** `hive-forge clone [OPTIONS] [DEST]` **Usage:** `hive-forge clone [OPTIONS] [DEST]`

View file

@ -5,7 +5,7 @@ container (installed via `nix/agent-modules/forge.nix`, on `PATH` as a
proper Rust binary). Use it instead of ad-hoc curl pipelines. proper Rust binary). Use it instead of ad-hoc curl pipelines.
This page is the curated guide. For the exhaustive flag-by-flag reference This page is the curated guide. For the exhaustive flag-by-flag reference
auto-generated from the binary's own command tree, see autogenerated from the binary's own command tree, see
[`forge-cli.md`](forge-cli.md) — emitted by the hidden `hive-forge [`forge-cli.md`](forge-cli.md) — emitted by the hidden `hive-forge
markdown-docs` subcommand and kept in lockstep with the code by the markdown-docs` subcommand and kept in lockstep with the code by the
`hive-forge-docs` flake check (CI fails if the committed copy drifts). `hive-forge-docs` flake check (CI fails if the committed copy drifts).
@ -139,7 +139,7 @@ distinct output shape — pick by what you need:
| Need | Verb | Shape | | Need | Verb | Shape |
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| The full human view of one item — title, body, **and** every comment in order | `view <n>` | prose dump; **marks the thread read** (clears the read-before-comment guard). Top-level `view` auto-detects issue-or-PR by number; scoped `issue view <n>` / `pr view <n>` do the same when you already know the kind | | The full human view of one item — title, body, **and** every comment in order | `view <n>` | prose dump; **marks the thread read** (clears the read-before-comment guard). Top-level `view` autodetects issue-or-PR by number; scoped `issue view <n>` / `pr view <n>` do the same when you already know the kind |
| Just the structured metadata of one item (state, labels, assignees, head sha…) | `issue <n>` / `pr <n>` | JSON object | | Just the structured metadata of one item (state, labels, assignees, head sha…) | `issue <n>` / `pr <n>` | JSON object |
| Only the comments (skip the body), for example to catch up a long thread; for PRs, review bodies (approve/request-changes/comment summaries) are merged in too | `comments <n>` [`--tail N`] | comment + review-body list; **marks read** | | Only the comments (skip the body), for example to catch up a long thread; for PRs, review bodies (approve/request-changes/comment summaries) are merged in too | `comments <n>` [`--tail N`] | comment + review-body list; **marks read** |
| One specific comment by its id | `comment-show <id>` | single comment | | One specific comment by its id | `comment-show <id>` | single comment |

View file

@ -15,7 +15,7 @@ forge + matrix accounts, gateway htpasswd management, container
lifecycle shortcuts, and interactive agent shell access. lifecycle shortcuts, and interactive agent shell access.
This page is the curated guide. For the exhaustive flag-by-flag This page is the curated guide. For the exhaustive flag-by-flag
reference auto-generated from the binary's own command tree, see reference autogenerated from the binary's own command tree, see
[`hivectl-cli.md`](hivectl-cli.md) — emitted by the hidden `hivectl [`hivectl-cli.md`](hivectl-cli.md) — emitted by the hidden `hivectl
markdown-docs` subcommand and kept in lockstep with the code by the markdown-docs` subcommand and kept in lockstep with the code by the
`hivectl-docs` flake check (CI fails if the committed copy drifts). `hivectl-docs` flake check (CI fails if the committed copy drifts).
@ -50,7 +50,7 @@ hivectl forge reconcile-config iris --verbose # include the full diff, not
- `reconcile-config <agent>` shows the divergence between the agent's local - `reconcile-config <agent>` shows the divergence between the agent's local
applied config checkout and its forge `agent-configs/<agent>` `main`, then applied config checkout and its forge `agent-configs/<agent>` `main`, then
reconciles. `--from forge` resets the local checkout to forge `main` (takes reconciles. `--from forge` resets the local checkout to forge `main` (takes
effect on the next deploy — it doesn't auto-rebuild). `--from local` isn't effect on the next deploy — it doesn't autorebuild). `--from local` isn't
supported yet (forge `main` is core-only branch-protected; resolve via a supported yet (forge `main` is core-only branch-protected; resolve via a
config PR). With no `--from` it prompts for the direction after the diff. config PR). With no `--from` it prompts for the direction after the diff.

View file

@ -3,7 +3,7 @@
## Built-in matrix MCP (`mcp__matrix__*`) ## Built-in matrix MCP (`mcp__matrix__*`)
When `hyperhive.matrix.enable = true` and the host-level matrix When `hyperhive.matrix.enable = true` and the host-level matrix
tuwunel is configured, the harness auto-injects `hive-matrix-daemon`'s tuwunel is configured, the harness autoinjects `hive-matrix-daemon`'s
streamable-http endpoint as a second MCP server (no stdio bridge — streamable-http endpoint as a second MCP server (no stdio bridge —
see Architecture below). Tools land as `mcp__matrix__<name>`: see Architecture below). Tools land as `mcp__matrix__<name>`:
@ -120,7 +120,7 @@ a one-shot signal that raced a socket-down window was dropped with no
retry, leaving the agent deaf until manually prompted) and upserts a retry, leaving the agent deaf until manually prompted) and upserts a
todo (keyed `invite:<room>`) for each pending invite on the harness's todo (keyed `invite:<room>`) for each pending invite on the harness's
in-agent socket, which drives a turn. The daemon does **not** in-agent socket, which drives a turn. The daemon does **not**
auto-join — the agent calls `list_invites` to see pending invites and autojoin — the agent calls `list_invites` to see pending invites and
`resolve_invite` to accept or reject them. `resolve_invite` to accept or reject them.
**Pending invites as loose ends**: pending invites are upserted as **Pending invites as loose ends**: pending invites are upserted as
@ -152,5 +152,5 @@ in by adding them to `inputs.*` and referenced as
sha lands in the agent's own `flake.lock` and rolls up to meta's. sha lands in the agent's own `flake.lock` and rolls up to meta's.
`allowedTools` defaults to `["*"]`, which expands to `allowedTools` defaults to `["*"]`, which expands to
`mcp__<key>__*` (every tool from that server auto-approved). Restrict `mcp__<key>__*` (every tool from that server autoapproved). Restrict
to specific tool names when you want finer control. to specific tool names when you want finer control.

View file

@ -37,7 +37,7 @@ rows (terminal state).
Cancel a schedule. Omit `targets` / pass empty to cancel the whole Cancel a schedule. Omit `targets` / pass empty to cancel the whole
schedule; pass a list to cancel just those recipients (the schedule schedule; pass a list to cancel just those recipients (the schedule
auto-cancels when every target is removed). autocancels when every target is removed).
### `fire_schedule_now(id)` ### `fire_schedule_now(id)`

Some files were not shown because too many files have changed in this diff Show more