| Filename | Latest commit message | Latest commit date |
|---|---|---|
An operator links an agent's GitHub personal access token in the swarm UI
(LinkGithubAccountForm, "link github account" on /agents). swarm-controller's
PUT /api/hives/{hive}/agents/{agent}/github-account stores it at
swarm/agents/<agent>/github-token (swarm_secret_client::github), a flat leaf
under the agent's prefix that the agent's existing read grant already covers:
no policy change, and no list grant, since there is one token per agent.
In the agent, hive-agent-github-token (oneshot + 2-minute timer, as the agent
user, under its own store certificate, ordered before hive-github-notify)
reads that path and writes <state>/github-token, 0600 and agent-owned, the
file the gh wrapper, git credential helper and hive-github-notify already
read. It replaces the file by rename only when the bytes changed and never
deletes it: a hive-written github-token stays until a token is linked in the
swarm UI. It is installed only with a store address and
services.hyperhive.agent.github.enable.
Removed: the dashboard's CR3D3NTIALS page (credentials.html/js/css, its
build entries and H0M3 tile; GITHUB was its only tab), hive-c0re's
dashboard/matrix_accounts.rs with GET/POST /api/github-account,
priv_client::write_agent_github_token, the host socket's
SetAgentGithubToken and `hivectl github set-token`, and hive-priv's
WriteAgentGithubToken with write_agent_state_file, its only caller gone.
Docs: integrations/github.md and swarm/ui.md describe the swarm path,
swarm/credentials.md gains the store-path row, and the hive UI docs,
hivectl docs and security.md's hive-priv table drop the removed pieces.
Closes #4347
|
||
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
hive-host-sock
Wire types for the host admin socket (/run/hyperhive/host.sock) — the
host-control protocol spoken between the hivectl operator CLI and the
hive-c0re daemon.
Why it's its own crate
Re-homed out of hive-sh4re so a standalone hivectl depends on just this
protocol crate instead of the whole daemon-shared crate. hivectl drives the
full hive (spawn / kill / destroy / rebuild / deploy) over this socket without
linking hive-c0re; keeping the request/response shapes here is what makes that
thin dependency possible.
Shape
Serde-derived request/response enums for the host admin protocol. The larger
shared payload types some variants reference (Approval, AgentStatusRow)
stay in hive-sh4re — this crate is only the protocol envelope, no server or
client implementation.
Its own jobs module is the exception: the job-queue vocabulary hivectl
needs (Source, State, PermPayload, NodeId) is protocol-local. The typed
DagView/NodeView projection that used to live there is gone — the queue is
served as a generic graph (hive-jobq-wire), not as a second hand-written
view.
See docs/trust-boundary/boundary.md (host admin socket access) for the trust model around who
may connect to the socket, and hive-priv-sock for the sibling split on the
privileged-helper socket.