Skip to main content
╔════════════════════════════════════════════════════════════════════════════════════════════╗
║                                                                                            ║
║               ██████╗ ██╗     ██╗   ██╗███╗   ███╗██╗  ██╗██╗   ██╗██████╗                 ║
║               ██╔══██╗██║     ██║   ██║████╗ ████║██║  ██║██║   ██║██╔══██╗                ║
║               ██████╔╝██║     ██║   ██║██╔████╔██║███████║██║   ██║██║  ██║                ║
║               ██╔═══╝ ██║     ██║   ██║██║╚██╔╝██║██╔══██║██║   ██║██║  ██║                ║
║               ██║     ███████╗╚██████╔╝██║ ╚═╝ ██║██║  ██║╚██████╔╝██████╔╝                ║
║               ╚═╝     ╚══════╝ ╚═════╝ ╚═╝     ╚═╝╚═╝  ╚═╝ ╚═════╝ ╚═════╝                 ║
║                                                                                            ║
║                              watch the fleet, not the screen                               ║
║                                                                                            ║
╚════════════════════════════════════════════════════════════════════════════════════════════╝

PyPI Python License

Miner fleet monitor — a borderless overlay HUD that sits on top of whatever you're doing, with alerts and history.

pip install plumhud
plumhud
plumhud          the overlay HUD and command center
plumhud check    poll once, print, exit — no window needed
plumhud where    where your config and history live

What v4 changed, and why

Nothing is invented any more. v3 filled missing readings with random.randint(), so a miner that answered without a hashrate displayed a believable number you had no way to identify as fake. A field the miner did not send is now None, renders as a dash, and is stored as NULL. "We did not measure it" and "it is zero" are different facts and the display says which.

Alert rules require a real measurement. Removing the fabrication exposed that the rules had never been written to survive a missing value — they would have raised on the first None. A rule now stays quiet when the number never arrived, and still fires on genuine problems.

Your config stopped moving. v3 wrote plumhud_config.json relative to the working directory, so launching from two folders gave you two fleets — and dropped a file containing your Discord webhook and Telegram token wherever you happened to be, including repositories. Everything now lives in one per-user directory (plumhud where), created owner-only. A v3 config found in the current directory is adopted automatically.

One poller, two faces. Polling moved to moonbeam-miner, which the terminal tool already used. That removed the private asyncio event loop, the aiohttp session and its fallback path with no loss of speed — and means the CLI and the HUD can never disagree about what a miner said.

Zero required dependencies beyond the shared core. aiohttp and requests are gone; webhooks post through the standard library. Charts and the logo are optional extras:

pip install "plumhud[charts]"

What it does

Overlay HUD in four display modes (ring, bar, spark, grid) with an opacity slider and five skins. A five-tab command center for miners, analytics, alerts, skin and settings. Alert rules for offline, hashrate below, temperature above and reject spikes, delivered to Discord or Telegram with a per-rule cooldown. Every poll is written to a local SQLite database with 30-day retention.

Talks to ESP-Miner and AxeOS devices — NerdMiner, Bitaxe and relatives — on http://<ip>/api/system/info. Use moonbeam scan to find them.

Requirements

Python 3.8+, and Tk for the window (bundled with Python on Windows and macOS; apt install python3-tk on Debian and Ubuntu). plumhud check needs no display at all.


╔════════════════════════════════════════════════════════════╗
║                                                            ║
║      ███████╗      ██╗  ██╗███████╗██╗   ██╗███████╗       ║
║      ██╔════╝      ██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝       ║
║      █████╗  █████╗█████╔╝ █████╗   ╚████╔╝ ███████╗       ║
║      ██╔══╝  ╚════╝██╔═██╗ ██╔══╝    ╚██╔╝  ╚════██║       ║
║      ██║           ██║  ██╗███████╗   ██║   ███████║       ║
║      ╚═╝           ╚═╝  ╚═╝╚══════╝   ╚═╝   ╚══════╝       ║
║                                                            ║
║               ·   C  R  E  A  T  I  V  E   ·               ║
║                                                            ║
║          ────────────────────────────────────────          ║
║                                                            ║
║                      Vincent Gonzalez                      ║
║                         f-keys.com                         ║
║                 ORCID 0009-0005-3640-014X                  ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝

Part of F-Keys — independent hardware, software and internet products. See the working log and live status.

Metadata

Release files for plumhud 4.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for plumhud 4.1.2
File Size Uploaded
plumhud-4.1.2.tar.gz 91.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for plumhud 4.1.2
File Interpreter ABI Platform
plumhud-4.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 179.8 kB

Release files / plumhud-4.1.2.tar.gz

Download URL plumhud-4.1.2.tar.gz
Size 91.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7b9d4e4c018524e1ce9d53e34fcc47d2c28ce41ed668206e40af2f97a98bfe16
BLAKE2b-256 checksum
How to use checksums
8c483cd367a15cea831a6b2d92a8b21adb62b38ba5ac5697a53beec4b8cec86b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release files / plumhud-4.1.2-py3-none-any.whl

Download URL plumhud-4.1.2-py3-none-any.whl
Size 88.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ff369c909763e0a9f112dec795aa45d55d3079a65ec4120cc90c915844afb08
BLAKE2b-256 checksum
How to use checksums
9466993de1c4b32ddf500e20102044df663efbde8f2e90343f9b938827e8d44e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

4.1.2 This release

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page