{{.AgentVersion}}{{else}}—{{end}}
{{slice .ReportedAgentSHA 0 12}}…
{{else}}
DRIFT — running {{slice .ReportedAgentSHA 0 12}}…, vouched {{slice .VouchedAgentSHA 0 12}}…{{slice .ReportedWrapperSHA 0 12}}…
{{else}}
DRIFT — installed {{slice .ReportedWrapperSHA 0 12}}…, vouched {{slice .VouchedWrapperSHA 0 12}}…main (R-50b), so this host may be running privileged code from a different commit.
{{end}}
Waiting for first report.
Vitals, guests and storage appear once this host's agent sends a host-report.
Pull-based: the box ships its debug ring on its own next cycle — controller ≤ one report interval (~15 min), agent ≈ one heartbeat. The pull is recorded in the box's own log (customer-visible). Bundles expire after 72 h.
| Component | State | Collected | Received | Size | |
|---|---|---|---|---|---|
| {{.Component}} | {{if eq .State "pending"}}pending {{else if eq .State "blocked"}}blocked: possible secret {{else}}available{{end}} | {{if .CollectedAt.IsZero}}—{{else}}{{timeAgo .CollectedAt}}{{end}} | {{if .ReceivedAt.IsZero}}—{{else}}{{timeAgo .ReceivedAt}}{{end}} | {{if .SizeBytes}}{{.SizeBytes}} B{{else}}—{{end}} | {{if eq .State "available"}} View Download {{end}} |
No log bundles. Use the request buttons above — the box delivers on its next cycle.
The box acts on its next report reply (usually seconds, at most one report interval) and answers on the report after that. Each press runs once. Recorded in the box's own log and in Events. Unanswered after a day: expired.
| # | Action | Requested | By | Outcome |
|---|---|---|---|---|
| {{.ID}} | {{.Action}}{{if .Arg}} {{.Arg}}{{end}} | {{timeAgo .RequestedAt}} | {{.RequestedBy}} | {{if not .DoneAt}}pending {{else if eq .Outcome "done"}}done {{else if eq .Outcome "failed"}}failed {{else}}{{.Outcome}}{{end}} {{if .Message}}{{.Message}}{{end}} |
No operator actions for this box yet.
This host has no customer, so there is no controller to act.
{{.Network.WGAssignedIP}}
{{if .Network.WGConfirmed}}confirmed
{{else if .Network.AgentTooOld}}allocated
{{else}}not confirmed by the box{{end}}
{{else}}no peer allocated{{end}}
This host's agent ({{.AgentVersion}}) does not report its addresses — they are
unknown, not absent. Needs agent 0.119.0 or newer.
| Interface | Address |
|---|---|
{{.Iface}} |
{{.CIDR}} |
Every routable address the box holds, as the kernel sees it. Loopback and link-local are
excluded — including the 169.254.253.1 local-API island, which is identical on
every box. The PVE web console is at https://<the LAN address>:8006.
The agent reports no routable address on this host.
{{else}}Waiting for the first host report.
{{end}}
This host's agent ({{.AgentVersion}}) does not run the guest-network watchdog —
its guests' networking is unknown, not healthy. Needs agent 0.92.0 or newer.
This host reported no guest-network state, so it is unknown — not healthy.
The watchdog is default-on; a silent capable agent means it was switched off
(guest_net.disable), or this report predates it on this box.
| Guest | State | Address | Route | dhclient | Repairs (1h) |
|---|---|---|---|---|---|
{{.VMID}} |
{{if .Unknown}}unknown {{else if eq .State "healthy"}}healthy {{else if eq .State "static_fault"}}static fault {{else}}unhealthy{{end}} {{if .HealFailed}}repair failed{{end}} {{if .Damped}}damped{{end}} | {{if .IP}}{{.IP}} ({{.Mode}}){{else}}—{{end}} |
{{if .HasRoute}}yes{{else}}no{{end}} | {{if .DHClientAlive}}yes{{else if eq .Mode "static"}}n/a{{else}}no{{end}} | {{if .Repairing}}{{.RepairCount}} {{else}}0{{end}} |
{{.GuestNet.RepairingCount}} guest(s) had their networking repaired in the last hour.
A guest that keeps being repaired reads healthy between repairs and is not. A killed
dhclient once took a tunnel down for 1 h 15 m with nobody told; this row is that signal.
Last swept {{.GuestNet.CheckedAt}}. One row per owned running guest the watchdog has probed.
{{else}}The watchdog ran and has no guest to report (swept {{.GuestNet.CheckedAt}}). This is distinguishable from silence: the stanza arrived, its guest list is empty.
{{end}}{{.RecoveryUsername}}
••••••••••••••••
Break-glass credential for the PVE web console at https://<host-ip>:8006 (realm: Linux PAM standard authentication). Copy puts it straight on the clipboard without showing it; Reveal displays it for 60 s. Either one is recorded on the customer's event timeline. Last vaulted value — if root@pam was changed on the box without re-vaulting, this is stale.
{{else}}not vaulted
No console credential is vaulted for this host. Expected for a byo host — the owner manages root@pam. Otherwise the installer's step 4b did not run; re-run felhom-host-install.sh, or set and vault one per the break-glass runbook §5.
{{end}}Removing this host deletes its reports, guests, log bundles and WireGuard peer, and permanently invalidates its API key — a still-running agent would receive 401s. Re-enrollment requires the Day-0 passphrase flow.