Power monitoring · homelab

PowerMesh

v1.0.0 MIT Self-hosted

Your homelab quietly draws watts twenty-four hours a day and the only number you have is whatever shocked you on last month's electric bill. PowerMesh samples the sensors that are already on your hardware — nvidia-smi, RAPL, smart plugs — models your PSU's efficiency curve, and gives you a live local dashboard of what every node is actually pulling at the wall. One machine or a whole mesh.

License
MIT open-source
Runtime
Python 3.11+
Sensors
nvidia-smi + RAPL + plugs
Price
$0 free, forever

What it is

A power monitor that lives on the box, not in a SaaS.

PowerMesh runs as a single-machine Lite app or as a collector plus agents across a trusted network. Each agent samples whatever sensor is best available on that node — nvidia-smi, Linux RAPL, TDP estimation, an optional Kasa or Shelly smart plug — ships readings to the collector over HMAC-authed HTTP, stores them in SQLite, and renders a FastAPI dashboard at 127.0.0.1:8430 with live cards, CSV/JSON export, and a printable report.

01

Real sensors, not vendor specs

nvidia-smi for the GPU, RAPL for the CPU on Linux, TDP estimation as a fallback, psutil for RAM and disk and network. Optional smart-plug ground truth at the wall. No "typical-use" wattage guesses pulled from a datasheet.

02

PSU efficiency curve modeling

Component-level draw is not wall draw. PowerMesh applies 80 Plus efficiency curves — bronze through titanium — so the kWh number you see actually matches what your meter sees. Tell it your PSU rating once.

03

Lite or mesh, same dashboard

Run powermesh-lite on one workstation to spin up an embedded collector and agent in one process. Or run a central collector and point as many agents at it as you have nodes. Same UI either way.

How it works

Sample, store, show.

Three moving parts. None of them call out to a cloud account you do not own.

Sample

Best available sensor

Each agent picks the most accurate sensor it can find — nvidia-smi for the GPU, RAPL on Linux for the CPU, TDP estimation as a fallback, an optional smart plug for ground-truth wall power.

Store

SQLite + HMAC ingest

Readings POST to the collector with HMAC-SHA256 signatures, land in SQLite, and get rolled up hourly and daily. Retention is yours. The database is a file you can copy.

Show

Local dashboard + exports

A FastAPI dashboard shows live per-node power, kWh per day, and estimated cost. CSV and JSON export endpoints cover the last hour, day, week, or month. A printable report view lives at /report.

Who it's for

If this sounds like you, it will fit.

  • You run a homelab — a few machines, maybe a GPU box, maybe a NAS — and you want a per-node breakdown of what each one actually costs to leave running.
  • You are a DevOps engineer or sysadmin who wants real wattage numbers per workload, not a vendor TDP sticker, and is comfortable on a private network behind Tailscale or a VPN.
  • You want a dashboard you own — SQLite on disk, loopback by default, no cloud account, no metered "free tier" that throttles your nodes.

Plainly

What it does, and what it doesn't.

What it does

  • Samples real sensors — nvidia-smi, RAPL, psutil, optional smart plugs
  • Models wall power through PSU efficiency curves (80 Plus bronze through titanium)
  • Stores readings in a local SQLite database with hourly and daily aggregates
  • Serves a live dashboard, settings view, and printable report on 127.0.0.1:8430
  • Authenticates agent ingest with HMAC-SHA256 over your private network
  • Exports CSV and JSON for any time range up to thirty days

What it doesn't

  • It is not an enterprise APM — no clusters, no PagerDuty integration, no SLA
  • It is not cloud-managed — there is no SaaS dashboard, no account, no metered tier
  • It is not a network monitor — it watches watts, not packets or latency
  • It does not control your hardware — readings only, no power capping or shutdowns
  • It is not safe on a hostile network — keep the collector behind Tailscale or a VPN

It's free and open-source. Clone it.

PowerMesh is MIT-licensed — no tiers, no account, no paid version held back. Clone the repo, install with pip, run powermesh-lite for a single box or wire up a collector plus agents for a mesh.