HomeLab Monitor

by sikamikanikobg

Not rated
GitHub

About

Read-only MCP server inside a self-hosted homelab dashboard — explore hosts, Docker containers, GPU/VRAM, systemd services, AI models, alerts and disk.

Details

Author
sikamikanikobg
Categories
Other, Infrastructure

Setup

Install HomeLab Monitor in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/sikamikanikobg/homelab-monitor

Follow the installation instructions in the repository README, then restart your MCP client.

One page for your whole home lab & AI rig — GPU truth (any vendor), tokens/sec, power cost by the hour, uptime, training runs, containers, disks. No agents, no separate metrics stack, no cloud.

Your home lab grew into a couple of machines, a Pi, and a GPU that's mysteriously always busy — and lately it's running models too. HomeLab Monitor gives you one self-hosted page that answers the real questions:what's that GPU actually doing, which model is holding it, what's it costing you to run, which container is eating RAM, what's filling your disks, andis anything down— across every box over SSH: Linux, a Pi, even Windows. Readable from your phone over the VPN.

# Grab the compose file and go. No GPU required — the GPU panels just light up when one's present. curl -fsSLO https://raw.githubusercontent.com/SikamikanikoBG/homelab-monitor/main/docker-compose.yml docker compose up -d

Openhttp://<your-host>:9800and you're done. Full options (from source, GPU toolkit, Windows/WSL2) →Install docs.

🆕What's new— every release is written up in full, with the reasoning behind it:latest release·changelog. The dashboard also shows you the notes once, in-app, after it updates itself.

One page, every box, the questions you actually have. The classics are all here — and a wholeAI cockpitbuilds on top of them.

Your GPU, demystified — and the same tab on every box.A card pinned at "100% util" can still be throttling, memory-bandwidth-bound, or quietly drooping its clocks. The GPU tab decodesnvidia-smi's throttle reasons, and shows memory-bandwidth util, core/mem clocks, power-vs-limit, p-state — andfan speed— foreverymachine in the fleet, not just the one running the container. Multi-GPU boxes get one panel per card on a shared scale per metric, so a taller temperature line really is a hotter card; thermal-throttle windows are shaded right on the sparkline. You can seewhich carda service is sitting on (a 3×3090 box shows a model's 63 GB split 22.5 / 22.1 / 18.8 across the cards, not one pooled number), what each service cost in energy, and get alerted when a card throttles, overheats or loses a fan — sustained, per card, with per-host thresholds, because a box running a deliberately lowered power limit issupposedto sit at its cap. And it's no longer NVIDIA-only:AMDGPUs are read on Linux straight from the kernel'samdgpuinterface (no ROCm), andAMD and IntelGPUs on Windows hosts — so your card shows up with its name, utilisation and VRAM, no vendor tools required. Anything a driver won't report says so, instead of drawing a confident zero.

What it costs — down to the process.Power becomes money: per machine, then per component (GPU measured vianvidia-smi, CPU/DRAM via RAPL), thenper process, container or model— click any row to see what it drew and what it cost over any window. Day & night tariffs (Economy 7, Heures Creuses, …), or just pick your country for a sensible estimate. Every watt is measured or a baseline you set; wall power is never guessed. And abusy-hours heatmapturns months of samples into one picture ofwhenyour lab costs you money — a 7×24 day-of-week × hour grid that shows which hour of the week is priciest at a glance.

Your training runs, priced.Push a run from Jupyter, Colab or Kaggle with a one-file client (or mirror it from MLflow), and it comes back with the loss curveandthe real GPU energy it burned, on the same timeline. Create, name, expire and revoke API keys yourself.

"Will it fit?" — measured, not guessed.TheBenchmark Labloads each of your local ollama models and sweeps a ladder of context sizes on your actual cards, recording generation & prompt tokens/sec, load time, how much spilled from VRAM into system RAM, and thelargest context that still fits fully in VRAM— the cap worth setting. Pick which GPU(s) to test (via a throwaway pinned ollama container — your main one is never touched), overlay stored runs to compare cards, and every run comes back with the energy it burned and what it cost. Results are stored: benchmark once, re-run only when something changes.

And the rest of the lab, the way it always was:

- Containers, honestly— health plusRAM and VRAM in separate columns(real resident RAM, not page cache), and click one to tail its logs in a side drawer.
- systemd services— local or remote, your own units highlighted, failures first.
- WizTree-style disk treemaps — on any box in the fleet.Click into the folders filling a disk on the huboron any Linux host you've added; a remote is scanned over the same SSH connection everything else uses, so there's still nothing to install on it. Plusnetwork I/O with per-container top talkersand amini-htopfor who's eating CPU and RAM.
- It moves like a live dashboard.Utilisation, RAM, temperature and power update every couple of seconds over a push stream instead of a fixed poll — and it does that while makingfewerrequests than before, because the expensive history query is fetched only as often as its own chart buckets can change, and a tab you're not looking at stops costing anything at all. Sampling and storage cadence are untouched, so history stays exactly as dense (and costs stay exactly as accurate) as they were.
- Multi-machine over SSH— paste one key per box; Linux, a Pi, evenWindows. No agents, no installs. The GPU tab works per host too: a remote multi-GPU rig showsevery card's VRAM, utilisation, power and temperature, and the processes holding the memory.
- Uptime monitoring, in the box— watch anyHTTP endpoint or TCP port(your services, a NAS, a remote site) straight from the container: heartbeat strip, 24h/7d uptime %, latency, andsmart per-check alerts— anti-flap confirm, recovery with downtime, and an optional slow-response warning. No extra uptime service to self-host — it's already in the box.
- Push alertsDiscord,ntfy.shandTelegram, edge-triggered so they don't spam.

Open theHoststab, paste the hub's auto-generated SSH key onto each remote, and the hub starts polling it — no agents, just SSH + Python 3 (PowerShell on Windows). The hub pipes a small self-contained probe over SSH; nothing persists on the remote. The same connection is what lets you open a remote'sGPU cockpitandscan its disksfrom the hub — still with nothing installed on the far end.

Onboarding, Windows setup, and the security model →Multi-machine docs.

Set these underenvironment:indocker-compose.yml(all optional):

History lives in./data/gpu.db(a bind mount), so it survives restarts and upgrades. Alerts, the systemd D-Bus mount, and per-server tuning →Configuration docs.

The hub stitchesnvidia-smi(plus AMD GPUs via the in-kernelamdgpusysfs interface, and AMD/Intel on Windows hosts via the built-in GPU perf counters), the Docker API, model-server APIs (Ollama, vLLM, llama.cpp, A1111, …), systemd D-Bus, and/proc+/sysinto one sampled view, persisted to SQLite and downsampled on read so a six-month range loads as fast as the last hour. Single page, vendored Chart.js, no build step.

- 30+ recognised model serversModel servers
- Standard/metricsendpointto scrape into whatever dashboards you already run →
Metrics export
- The full data pipeline + caller attribution
How it works

Your homelab is now legible to AI agents — point a client at one URL and it can see every host, container, GPU and disk. Read-only, no extra setup.

HomeLab Monitor isn't just a dashboard foryouanymore; it's context for your AI agent too. Aread-onlyMCPserver is built into the same container(served on:9810) — so Claude, Claude Code, or any MCP client connects in one line and explores your whole lab through19 named tools, with the same coverage you see on the dashboard: hosts, containers, systemd services, GPUand who's driving it, per-process RAM, AI model servers, installed models, costs, experiment runs, model benchmarks, disk treemaps, history and alerts.

Connect any MCP client — Claude, ChatGPT, or an agent on your own local Ollama models — and it reads your homelab's live state. Read-only: both directions are just question and answer.

# the dashboard is on :9800; the MCP server rides along on :9810 claude mcp add --transport http homelab http://YOUR-HUB:9810/mcp

Once connected, skip the tab-hunting and justask— the agent picks the right tools:

- "My GPU's been pinned for an hour — which model server is loaded, and who's actually calling it?"
- "What's eating/backup? Give me the biggest folders and flag anything that looks like runaway logs."
- "Which host is lowest on RAM right now, and what's the top process holding it?"
- "I want to reboot and run an OS upgrade this weekend — which box needs it most, and what's a safe order given what's running on each?"

Read-only by design— there are no write tools, so an agent can look but never touch your fleet. Turn it off anytime withENABLE_MCP=0. Full tool list & setup →MCP docs.

This is a host monitor: it runs with host access, plus a read-write Docker socket and D-Bus socket (self-update and the Containers/Services tabs' start/stop/restart controls are on by default — setALLOW_SELF_UPDATE=0/ENABLE_CONTROLS=0, or usedocker-compose.readonly.yml, to lock it down to pure monitoring) and a read-only root mount — a broad footprint by design. The dashboard itself hasno login/auth— it's meant for a trusted LAN.Keep it behind your LAN/VPN/firewall and don't expose it to the public internet.Details →docs.

If HomeLab Monitor saves you a browser tab or two, a ⭐ on GitHub genuinely helps other home-labbers find it. Thank you!

Building this is more fun together.Join the HomeLab Monitor Discord— say hi, show off your rig, swap ideas, ask for help, or just hang out. It's where the roadmap chatter, “should we build X?” questions, and quick help happen — and where new contributors get a warm welcome.

Bring a friend, post an idea, open an issue — let's grow a friendly, healthy homelab community. 💛

Issues and PRs are very welcome — especially new model-server probes, new monitors, and GPU back-ends. This is a hobby tool meant to help fellow home-labbers, so be kind. SeeCONTRIBUTING.md.

Thanks to everyone who's filed an issue, opened a PR, or helped shape the roadmap. The entire AMD GPU back-end — per-process VRAM via DRM fdinfo and full panel parity in v0.28.0, real VRAM on unified-memory APUs in v0.26.0 — came from@andreahaku. v0.27.0's fleet-aware model registry and v0.23.0's maintenance windows came from@1HazyOne707. v0.27.0's RAPL CPU/DRAM power and v0.24.0'sbackend/module-tree refactor came from@pehota. See thechangelogfor the full, ongoing credit trail.

MCP servers for managing homelab infrastructure through Claude Desktop. Monitor Docker/Podman containers, Ollama AI models, Pi-hole DNS, Unifi networks, and Ansible inventory.

claw machine gives any agent access to the users local scoped docker socket.

Civilian situational awareness for AI deployments — real-time risk dashboards, multi-source threat correlation, anomaly detection, and automated alerting for critical infrastructure and enterprise AI systems.

MCP server to Automate Exposure Management

Monitor WAF events, analyze attacks, tune rules and whitelist IPs for OWASP ModSecurity CRS via Docker

Manage and interact with Microsoft Azure services.

The IBM Instana MCP server enables seamless interaction with the IBM Instana observability platform, allowing you to access real-time observability data directly within your development workflow.

Query and interact with kubernetes environments monitored by Metoro

Integrates with Alibaba Cloud APIs to manage resources like ECS, Cloud Monitor, and OOS.

Provides a unified interface to AWS services for security investigations and incident response.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.