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:
parent
4f2d1d281a
commit
05cf8e8276
26 changed files with 70 additions and 70 deletions
|
|
@ -3,7 +3,7 @@
|
|||
Depth reference for hyperhive — the substrate, not the pitch (that's the
|
||||
[top-level README](../README.md) / [website](https://hyperhive.darkest.space)).
|
||||
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
|
||||
[the options site](https://hyperhive.darkest.space/options/) instead —
|
||||
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
|
||||
shells?** → [`tools/hivectl.md`](tools/hivectl.md) (the curated guide);
|
||||
[`tools/hivectl-cli.md`](tools/hivectl-cli.md) for the exhaustive,
|
||||
auto-generated flag reference.
|
||||
autogenerated flag reference.
|
||||
|
||||
## Networking & swarms
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ declarations.
|
|||
[`scheduler/jobq.md`](scheduler/jobq.md) — operator-facing, no implementation detail.
|
||||
- **How does the rebuild queue work? What are the concrete step kinds,
|
||||
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).
|
||||
- **How do I export Claude Code metrics (tokens, cost, tool calls) to
|
||||
Prometheus/Grafana?** → [`scheduler/observability.md`](scheduler/observability.md).
|
||||
|
|
|
|||
|
|
@ -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
|
||||
visibility (manager sees hive-wide, sub-agents only their own),
|
||||
`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
|
||||
ancestor/descendant check instead of a manager-name check — see the
|
||||
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
|
||||
resilient across transient crashes without thundering retries.
|
||||
- `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
|
||||
(`paths::config_dir`). Deliberately separate from `/run/hive`, which
|
||||
the host bind-mounts in root-owned and which holds hive-c0re's
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ Single-phase variants exist for paths without
|
|||
rollback semantics: `meta::lock_update_for_rebuild(name)` for
|
||||
the manual `↻ R3BU1LD` button (commits if the lock changed)
|
||||
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).
|
||||
|
||||
`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
|
||||
`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
|
||||
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,
|
||||
or the dashboard `↻ R3BU1LD` button when the lock didn't move). When set,
|
||||
`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
|
||||
needed.
|
||||
|
||||
## Auto-update on startup
|
||||
## Autoupdate on startup
|
||||
|
||||
`hive-c0re serve` runs `auto_update::run` in a background task right
|
||||
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
|
||||
file: `/var/lib/hyperhive/applied/.<name>.hyperhive-rev`. If the
|
||||
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
|
||||
"needs update ↻" badge appears whenever the marker differs from
|
||||
|
|
|
|||
|
|
@ -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
|
||||
enhancement — see the #1762 lane). This is a no-op fallback on
|
||||
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.
|
||||
|
||||
- **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
|
||||
on incoming room events via `/run/hive/mcp.sock`. Conditional on
|
||||
`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
|
||||
agent containers come up. Without the path-trigger sibling
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ subsequent comment.
|
|||
|
||||
### 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
|
||||
firehose (dropping broad repo watches an agent doesn't need) is done
|
||||
explicitly via a hive-forge CLI subscription verb, not by the poller
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ the local clone updates automatically (see
|
|||
Canonical forge location: `internal/knowledge` (org `internal`,
|
||||
repo `knowledge`). The repo is public, so every agent's forge account
|
||||
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
|
||||
blank table of contents. Add an entry to that ToC each time you
|
||||
create a new document.
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ Two distinct hostnames:
|
|||
*irrevocably* in every `@user:<server_name>` and `!room:<server_name>`
|
||||
identifier minted on this homeserver. can't be changed later
|
||||
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}`
|
||||
routes the gateway serves at that domain.
|
||||
- **`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.
|
||||
|
||||
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
|
||||
agent can find a common chat room without manual setup. Room join is
|
||||
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
|
||||
from `pkgs.fluffychat-web.passthru.pubspecLock.dependencySources.native_imaging`
|
||||
— 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
|
||||
output files. `dontConfigure = true` because cmake runs inside
|
||||
`js/Makefile` via `emcmake cmake`, not at the package root. The
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
@ -370,10 +370,10 @@ services.hyperhive.swarm.forge.rootUrl = "https://forge.example.com/";
|
|||
```
|
||||
|
||||
`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:
|
||||
|
||||
| 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 = false` | `http://<forge.domain>:<httpPort>/` |
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ looks like a natural extension point and does nothing. Use
|
|||
|
||||
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 →
|
||||
--network-veth` branch then forces a private netns — silently fatal
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# The PR review gate
|
||||
|
||||
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.
|
||||
|
||||
## 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
|
||||
universal behavior.
|
||||
- **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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
|
@ -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
|
||||
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
|
||||
be the last step before the merge actually happens, with no further
|
||||
review pass after yours. That's a reason to actually finish checking
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
||||
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.
|
||||
|
||||
## 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`.
|
||||
- **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
|
||||
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
|
||||
|
||||
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
|
||||
`DEFAULT_ACTIONS_URL` to point at the local instance. This means CI
|
||||
`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`
|
||||
request), so a DNS blip during that sync will propagate back to 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/`)
|
||||
to avoid provisioning collisions.
|
||||
|
||||
|
|
@ -248,6 +248,6 @@ builder — disk-pressure collection at least runs while nothing is mid-copy.
|
|||
|
||||
## 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.
|
||||
- `docs/process/gotchas.md`: nix sandboxing limitations in containers.
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ reparent(moves): Reparent(moves) (no rebuild — topology.json is read live)
|
|||
Notable collapses:
|
||||
|
||||
- **`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
|
||||
leaves it stopped).
|
||||
- **The swap-failure recovery-start is structural**: `Reconcile` deps on
|
||||
|
|
@ -479,7 +479,7 @@ flags → `systemctl daemon-reload` → `start`.
|
|||
|
||||
### 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
|
||||
`<flake-root>#nixosConfigurations.<name>.config.system.build.toplevel` is required;
|
||||
using the bare `meta#<name>` ref would make nix look in `packages`, `legacyPackages`,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
the `swarm.snapshotStore` option that points a hive at it
|
||||
- `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
|
||||
- `docs/swarm/ui.md` — the swarm-wide hive roster, now the operator
|
||||
surface for "what hives exist" (superseded the per-hive dashboard's
|
||||
old "peer hives" display)
|
||||
- `docs/networking/gateway.md` — nginx vhosts and the `.well-known/matrix/`
|
||||
auto-discovery scheme
|
||||
autodiscovery scheme
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ debug agent behavior.
|
|||
- **[hivectl](hivectl.md)** — the curated guide: provisioning forge
|
||||
and matrix accounts, gateway htpasswd management, container
|
||||
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.
|
||||
|
||||
## 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
|
||||
binary by CI the same way `hivectl-cli.md` is. `swarmctl` itself
|
||||
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
|
||||
for issues, PRs, and comments. Not an MCP tool — a binary agents
|
||||
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
|
||||
binary by CI the same way `hivectl-cli.md` is.
|
||||
- **[lifecycle](lifecycle.md)** — kill/start/restart/update for an
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
to disable inline waiting and always get the immediate response.
|
||||
- `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
|
||||
is **reusable once its previous task has finished**; submitting a
|
||||
name whose task is still `pending`/`running` is rejected. Allowed
|
||||
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`.
|
||||
|
||||
|
|
|
|||
|
|
@ -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> …`
|
||||
* `comment-show` — Print the body (or full JSON) of a single 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-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
|
||||
|
|
@ -956,7 +956,7 @@ Edit an existing comment by id
|
|||
|
||||
## `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]`
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
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
|
||||
markdown-docs` subcommand and kept in lockstep with the code by the
|
||||
`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 |
|
||||
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 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 |
|
||||
| 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 |
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ forge + matrix accounts, gateway htpasswd management, container
|
|||
lifecycle shortcuts, and interactive agent shell access.
|
||||
|
||||
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
|
||||
markdown-docs` subcommand and kept in lockstep with the code by the
|
||||
`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
|
||||
applied config checkout and its forge `agent-configs/<agent>` `main`, then
|
||||
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
|
||||
config PR). With no `--from` it prompts for the direction after the diff.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
## Built-in matrix MCP (`mcp__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 —
|
||||
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
|
||||
todo (keyed `invite:<room>`) for each pending invite on the harness's
|
||||
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.
|
||||
|
||||
**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.
|
||||
|
||||
`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.
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ rows (terminal state).
|
|||
|
||||
Cancel a schedule. Omit `targets` / pass empty to cancel the whole
|
||||
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)`
|
||||
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ the answer is _don't grant the capability_ — not "grant it and hope the
|
|||
sandbox holds", because there is no sandbox between an agent and the tools you
|
||||
handed it.
|
||||
|
||||
### No auto-sandboxing of external tokens
|
||||
### No autosandboxing of external tokens
|
||||
|
||||
hyperhive provisions and scopes its **own** per-agent forge + matrix tokens.
|
||||
It does **not** automatically sandbox or scope **external** credentials
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Attach, CompactionPolicy, PercentPolicy, Telemetry, Sink, SessionStore}`;
|
|||
see `hive-claude/README.md`). `hive-agent`'s `turn` module is the
|
||||
hyperhive **policy layer** on top: it builds the per-turn config from
|
||||
the bus, bridges the output stream onto the event bus (`BusSink`), and
|
||||
owns the compaction / auto-reset / retry decisions in `drive_turn`. The
|
||||
owns the compaction / autoreset / retry decisions in `drive_turn`. The
|
||||
lib returns everything it parsed from a turn (usage, cost, context
|
||||
window, resolved model) as `Telemetry`, which the policy layer applies
|
||||
to the bus.
|
||||
|
|
@ -86,11 +86,11 @@ context (it won't carry our title). claude stores sessions in
|
|||
`--name` writes the title into the file as a `custom-title` event, which
|
||||
is what `--resume <title>` resolves against. We never pass bare
|
||||
`--continue` (it resumes the _latest_ session in the cwd — the hijack
|
||||
vector). Auto-memory and dynamic workflows (the `/workflows` feature) are
|
||||
vector). Automemory and dynamic workflows (the `/workflows` feature) are
|
||||
disabled via the managed settings at `/etc/claude-code/managed-settings.json`:
|
||||
`disableWorkflows` keeps the `/workflows` machinery from spawning sub-runs
|
||||
that burn usage on the harness's autonomous turns. Claude's own native
|
||||
auto-compact is **on**, at the widest window claude-code allows — see
|
||||
autocompact is **on**, at the widest window claude-code allows — see
|
||||
[Compaction](#compaction) below for why (it's a safety net, not the
|
||||
primary mechanism; hyperhive still owns that).
|
||||
|
||||
|
|
@ -191,14 +191,14 @@ still applies.
|
|||
fresh. Unlike proactive compaction the session is dropped entirely, not
|
||||
compacted — and _no_ preceding checkpoint turn runs, because any turn
|
||||
before the reset would just re-warm the cache and defeat the purpose.
|
||||
Set `HIVE_AUTO_RESET_WATERMARK_TOKENS=0` to disable. Auto-reset and the
|
||||
Set `HIVE_AUTO_RESET_WATERMARK_TOKENS=0` to disable. Autoreset and the
|
||||
operator reset are mutually exclusive per turn (both archive → fresh
|
||||
turn), so an explicit operator reset short-circuits the heuristic.
|
||||
|
||||
The child runs with `cwd = /state` (when the bind exists; falls
|
||||
back to the parent's cwd in dev), so any relative path in a tool
|
||||
call (`Read foo.md`, `Bash ls`, `Write notes.md`) lands in the
|
||||
agent's durable bind-mounted dir. CLAUDE.md auto-load walks
|
||||
agent's durable bind-mounted dir. CLAUDE.md autoload walks
|
||||
upward from `/state` — drop a per-agent CLAUDE.md there if you
|
||||
want long-term hints that survive destroy/recreate.
|
||||
|
||||
|
|
@ -268,7 +268,7 @@ the renderer also treats `Some("")`from a caller as`None` so
|
|||
same way.
|
||||
|
||||
The per-turn plumbing described on this page — on-boot files, session
|
||||
identity, the reset/auto-reset/retry state machine, and the
|
||||
identity, the reset/autoreset/retry state machine, and the
|
||||
telemetry-to-bus bridge — lives in `hive-agent`'s `turn` module; see its
|
||||
`//!` doc comment (`hive-agent/src/turn.rs`) for the exact call shape.
|
||||
The actual claude spawn, stream classification, and the
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ and scrolls behind the fixed header + footer.
|
|||
silently ignore `autocomplete="off"` on `type="password"`, but
|
||||
`one-time-code` is honoured and suppresses the "save password
|
||||
for this site?" prompt that would otherwise fire on submit.
|
||||
- Terminal-wrap: live event tail (sticky-bottom auto-scroll +
|
||||
- Terminal-wrap: live event tail (sticky-bottom autoscroll +
|
||||
`↓ N new` pill when not at bottom). The pill is **anchored in
|
||||
`.agent-main`**, not in `log.parentElement = .terminal-wrap`:
|
||||
`.terminal-wrap` applies `backdrop-filter: blur` for the frost
|
||||
|
|
@ -195,7 +195,7 @@ SSE frame and the replayed history rows. The web UI:
|
|||
- terminal-themed: phosphor mauve glow, Crust bg,
|
||||
backdrop-filter blur, row fade-in slide-up.
|
||||
|
||||
The backfill/live-tail dedupe, sticky-bottom auto-scroll, and "↓ N
|
||||
The backfill/live-tail dedupe, sticky-bottom autoscroll, and "↓ N
|
||||
new" pill are the shared terminal-pane mechanics described in
|
||||
[Shape](shape.md#shared-terminal-pane) — this page's log is one
|
||||
instance of that same factory.
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ snapshot-storage rework where the problem changes shape.
|
|||
tool-group JSON entries but no live container — typically renamed or
|
||||
deleted agents whose entries persisted in `capabilities.json` /
|
||||
`tool-groups.json`. Lazy-loaded on first K3PT ST4T3 tab activation;
|
||||
auto-refreshes on `capabilities_changed` + `tool_groups_changed` SSE
|
||||
autorefreshes on `capabilities_changed` + `tool_groups_changed` SSE
|
||||
events. Each ghost agent gets a `✕ clear perms` button
|
||||
(`DELETE /api/permissions/{name}`).
|
||||
|
||||
|
|
@ -285,7 +285,7 @@ update button is disabled (snapshot field `meta_update_running`,
|
|||
live event `meta_update_running`).
|
||||
|
||||
**BUILD L0GS** — all-agents build log history (moved from `/logs.html`).
|
||||
Lazy-loaded on first tab activation; auto-refreshes when
|
||||
Lazy-loaded on first tab activation; autorefreshes when
|
||||
`rebuild_queue_changed` fires. Fetches `GET /api/build-logs?limit=30`.
|
||||
Renders a scrollable list of build entries; each row is a collapsible
|
||||
button showing status badge (`live` / `ok` / `fail`), agent name,
|
||||
|
|
@ -293,7 +293,7 @@ elapsed duration, build kind, age, and the invocation command line.
|
|||
Expanding a row fetches the full stdout+stderr via
|
||||
`GET /api/build-logs/id/{id}`. A live in-progress build shows a `live`
|
||||
badge with a ticking elapsed-time chip; expanding streams output via
|
||||
`GET /api/build-logs/id/{id}/stream` with sticky-bottom auto-scroll
|
||||
`GET /api/build-logs/id/{id}/stream` with sticky-bottom autoscroll
|
||||
(suspends on manual scroll-up). Deep-link: `?id=N#buildlogs` opens the
|
||||
entry with that id pre-expanded.
|
||||
|
||||
|
|
@ -640,7 +640,7 @@ the matrix module exposes).
|
|||
|
||||
The unified nginx-front re-root to
|
||||
`https://chat.${hyperhive.swarm.domain}` + `.well-known/matrix/client`
|
||||
auto-discovery lives in `docs/networking/gateway.md` (atlas's lane).
|
||||
autodiscovery lives in `docs/networking/gateway.md` (atlas's lane).
|
||||
|
||||
## FL0W page (`/flow.html`)
|
||||
|
||||
|
|
@ -675,9 +675,9 @@ The row is a `flex-wrap: wrap` container holding ts / arrow / from / sep
|
|||
chips (`flex: 1 1 100%`) so long timestamps and agent names never push the
|
||||
body into a narrow trailing column. `min-width: 0` keeps
|
||||
`word-break: break-word` effective so the body doesn't force the row wider
|
||||
than its container. Sticky-bottom auto-scroll + "↓ N new" pill. Below the
|
||||
than its container. Sticky-bottom autoscroll + "↓ N new" pill. Below the
|
||||
stream sits a terminal-style compose box: `@name` picks the recipient
|
||||
(sticky via localStorage; auto-complete from the live container list,
|
||||
(sticky via localStorage; autocomplete from the live container list,
|
||||
Tab/Enter to confirm; `@*` broadcasts). `POST /api/op-send` drops
|
||||
`{from:"operator", to, body}` into the broker; the resulting SSE frame
|
||||
re-renders the terminal row. The root agent is addressed as `@root`.
|
||||
|
|
@ -948,7 +948,7 @@ OS. Three primitives, all built on the `openDialog` core:
|
|||
- `themedToast(message, { type, ... })` — a non-blocking toast (top-right,
|
||||
`info` / `error` / `ok`) for transient validation + action
|
||||
failures, so an error doesn't trap the operator behind a modal.
|
||||
Single-action errors auto-dismiss; bulk / partial-failure
|
||||
Single-action errors autodismiss; bulk / partial-failure
|
||||
summaries are sticky (click to dismiss) so they aren't missed.
|
||||
|
||||
Every destructive run-state action (`ST0P`, `R3ST4RT`, `R3BU1LD`,
|
||||
|
|
@ -1272,7 +1272,7 @@ below — some endpoints aren't in it yet.
|
|||
and the target starts fresh (operator intent on re-add =
|
||||
"this target is active again"). `targets_remove` delegates
|
||||
to the same path as `cancel_targets` — tombstones preserve
|
||||
audit, parent schedule auto-cancels when no active targets
|
||||
audit, parent schedule autocancels when no active targets
|
||||
remain. Refuses cancelled rows; returns the updated
|
||||
`WireSchedule` on success.
|
||||
- `POST /api/schedules/{id}/cancel` — cancel a schedule. Body
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ home.js`, is the reference example — currently in the dashboard
|
|||
the thing that shows the current model.
|
||||
- Loosely influenced by Material Design's current (Material You)
|
||||
generation, mainly for shape/elevation ideas. Colour is dynamic too —
|
||||
auto-derived shades (mixing, lighter/darker) are fair game, same as
|
||||
autoderived shades (mixing, lighter/darker) are fair game, same as
|
||||
Material's own approach — but every derived colour still traces back
|
||||
to the base16/stylix contract below, never an independent source.
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
members; a back-compat shim in the IIFE bodies still exposes
|
||||
a `window.HiveTerminal` global for callers that need it. The dashboard's
|
||||
`#msgflow` and the per-agent `#live` log are both backed by
|
||||
this terminal — sticky-bottom auto-scroll, "↓ N new" pill,
|
||||
this terminal — sticky-bottom autoscroll, "↓ N new" pill,
|
||||
history backfill, SSE plumbing all live there. Each page
|
||||
registers a kind→renderer map; unknown kinds fall through to
|
||||
a JSON-dump note row. Bare `http(s)://` URLs in row text are
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
Both surfaces' scrollable log streams (`#msgflow` on the dashboard,
|
||||
`#live` on the per-agent page) are backed by the shared terminal
|
||||
factory in `@hive/shared/terminal.js`. The factory wires up
|
||||
sticky-bottom auto-scroll, a "↓ N new" pill, history backfill, and
|
||||
sticky-bottom autoscroll, a "↓ N new" pill, history backfill, and
|
||||
SSE replay. Pages register a `kind → renderer` map; unknown kinds
|
||||
fall through to a JSON-dump note row. The factory ships three row
|
||||
shapes the renderers call:
|
||||
|
|
|
|||
Loading…
Reference in a new issue