Power monitoring · homelab
PowerMesh
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.