30 lines
1.5 KiB
Markdown
30 lines
1.5 KiB
Markdown
# ADR-0007: Outbound authenticated compute-node agent
|
|
|
|
- Status: accepted
|
|
- Date: 2026-08-25
|
|
|
|
## Context
|
|
|
|
The central control plane must manage hardware on separate GPU servers without conflating the API
|
|
host with the compute node. SSH orchestration, Docker socket exposure and inbound node services widen
|
|
the trust boundary and do not provide a stable reporting protocol.
|
|
|
|
## Decision
|
|
|
|
Run a lightweight unprivileged agent on each compute node. It initiates HTTPS requests to a
|
|
versioned central API, reports typed inventory/telemetry and heartbeats, and persists its identity,
|
|
credential and stream sequences. Enrollment secrets are random, short-lived, single-use and stored
|
|
only as SHA-256 hashes. Issued credentials are random, node-scoped, hash-only at rest, revocable and
|
|
never returned by list APIs. Administrative onboarding uses a separately configured operator secret.
|
|
|
|
The control plane uses server-received heartbeat time for liveness and retains agent observation time
|
|
for provenance. Node roles, labels and eligibility are operator-managed metadata; inventory never
|
|
grants production eligibility automatically.
|
|
|
|
## Consequences
|
|
|
|
The compute server needs only outbound API reachability. Lost agent state requires explicit
|
|
revocation/re-enrollment. HTTPS termination and CA trust are deployment responsibilities. Protocol
|
|
evolution must remain explicit and test older/replayed/incompatible reports. Runtime execution is
|
|
intentionally absent until M5/M6 define adapters and scheduling.
|