Goal
Render the single-miner view from fleet-collected data instead of proxying /api/v1/* to the live miner (server/internal/handlers/minerproxy). Enables retiring ProtoOS-on-miner, folding ProtoOS into ProtoFleet, and rendering a single-miner view for any miner regardless of OS/firmware.
Locked assumptions (discovery)
- ProtoOS-on-miner goes away (a simpler on-device status page is a separate effort).
- Fold ProtoOS into ProtoFleet — one client app, not a proxied embed.
- Target full parity with today's ProtoOS view; acceptable to reduce data granularity/freshness to what fleet can reasonably support.
Findings
Full research + API parity map: docs/plans/2026-07-28-single-miner-views-on-fleet-backend-plan.md.
- ~18 of 24 ProtoOS API domains already have a fleet analog (rebind) or need only a small proto extend.
- The real backend work is concentrated in per-component telemetry + inventory: current & historical per-hashboard/ASIC/PSU metrics, the ASIC detail/heatmap screen, and full hardware inventory.
- Root cause: the telemetry collector builds the full per-hashboard/ASIC/PSU/fan model in memory every poll, but
telemetry_store.go persists only device-level scalars — the component arrays are discarded. Fleet also polls every ~10 min vs ProtoOS's ~15s.
Proposed phases
- Fleet-native read view for data that already exists (device-level metrics, status, placement, read-only pools/cooling).
- Wire control through
MinerCommandService (reboot, start/stop, cooling, power target, pools, firmware, LED, logs).
- Persist per-component telemetry + inventory; add read RPCs; render ASIC/hashboard detail.
- Bounded live-detail passthrough for genuinely-live ops (real-time ASIC grid, pool test).
- Client fold-in: retire
protoOS app + minerproxy; collapse to one ProtoFleet app.
Discovery phase — scope/decisions still open.
Goal
Render the single-miner view from fleet-collected data instead of proxying
/api/v1/*to the live miner (server/internal/handlers/minerproxy). Enables retiring ProtoOS-on-miner, folding ProtoOS into ProtoFleet, and rendering a single-miner view for any miner regardless of OS/firmware.Locked assumptions (discovery)
Findings
Full research + API parity map:
docs/plans/2026-07-28-single-miner-views-on-fleet-backend-plan.md.telemetry_store.gopersists only device-level scalars — the component arrays are discarded. Fleet also polls every ~10 min vs ProtoOS's ~15s.Proposed phases
MinerCommandService(reboot, start/stop, cooling, power target, pools, firmware, LED, logs).protoOSapp +minerproxy; collapse to one ProtoFleet app.Discovery phase — scope/decisions still open.