Fleet-native single-miner view (stop proxying to miner APIs)
- Dominant language
- Go
- Stars
- 55
- Forks
- 16
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 87
Description
## 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)
1. ProtoOS-on-miner goes away (a simpler on-device status page is a separate effort).
2. Fold ProtoOS into ProtoFleet — one client app, not a proxied embed.
3. 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
1. Fleet-native read view for data that already exists (device-level metrics, status, placement, read-only pools/cooling).
2. Wire control through `MinerCommandService` (reboot, start/stop, cooling, power target, pools, firmware, LED, logs).
3. Persist per-component telemetry + inventory; add read RPCs; render ASIC/hashboard detail.
4. Bounded live-detail passthrough for genuinely-live ops (real-time ASIC grid, pool test).
5. Client fold-in: retire `protoOS` app + `minerproxy`; collapse to one ProtoFleet app.
Discovery phase — scope/decisions still open.
Contributor guide
Research direction
Read docs/plans/2026-07-28-single-miner-views-on-fleet-backend-plan.md first, then trace telemetry_store.go and the telemetry collector to compare retained device-level scalars with discarded component arrays. Use the phased plan to separate existing fleet-native reads from command, persistence/RPC, passthrough, and client-fold-in work; done requires the remaining scope and decisions to be resolved against full ProtoOS parity.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100