Skip to content

Fleet-native single-miner view (stop proxying to miner APIs) #826

Description

@flesher

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions