HomeLab Monitor
Plug-and-play homelab dashboard in one container โ GPU, local-AI VRAM, Docker, systemd, host health. Built-in read-only MCP server so AI agents can explore it too.
README
๐ฐ๏ธ HomeLab Monitor
One page for your whole home lab & AI rig โ GPU, containers, services, disks. No agents, no Prometheus/Grafana, no cloud.
<a href="https://youtu.be/5uf2rG-RzcU" title="Watch the HomeLab Monitor demo on YouTube"> <img src="docs/demo.gif" alt="HomeLab Monitor โ a 65-second tour of the dashboard" width="820"> </a>
Your home lab grew into a couple of machines, a Pi, and a GPU that's mysteriously always busy. HomeLab Monitor gives you one self-hosted page that answers the real questions: which model is holding the GPU, which container is eating RAM, what's filling your disks, and is anything down โ across every box over SSH: Linux, a Pi, even Windows. Readable from your phone over the VPN.
Get started
# 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
Open http://<your-host>:9800 and you're done. Full options (from source, GPU toolkit, Windows/WSL2) โ Install docs.
๐ v0.14.0 โ a built-in read-only MCP server: connect Claude (or any MCP client) to your homelab and explore it with full dashboard parity, no extra container. Release notes ยท changelog ยท MCP docs.
What you get

- GPU, demystified โ live VRAM/util/power/temp, and which container is holding the card (auto-mapped).
- Containers, honestly โ health plus RAM and VRAM in separate columns (real resident RAM, not page cache).
- systemd services โ local or remote, your own units highlighted, failures first.
- WizTree-style disk treemaps โ scan a filesystem, drill into folders, find the space hogs.
- Multi-machine over SSH โ paste one key per box; Linux, a Pi, even Windows. No agents, no installs.
- Push alerts โ Discord and ntfy.sh, edge-triggered so they don't spam.
Full tab-by-tab tour โ Features.
Multi-machine, in two sentences
Open the Hosts tab, 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.
Onboarding, Windows setup, and the security model โ Multi-machine docs.
Configuration
Set these under environment: in docker-compose.yml (all optional):
| Variable | Default | Meaning |
|---|---|---|
SAMPLE_INTERVAL |
10 |
Seconds between samples |
RETENTION_DAYS |
180 |
How long history is kept |
PRESSURE_FREE_MB |
2048 |
Free VRAM below this counts as "pressure" |
PORT |
9800 |
Dashboard port |
MCP_PORT |
9810 |
Port for the built-in read-only MCP server |
ENABLE_MCP |
1 |
Set 0 to run the dashboard without the MCP server |
WATCH_CONTAINERS |
โ | Extra containers to scan for OOM (comma-separated) |
WATCH_SERVICES |
โ | systemd units to always show, even vendor ones (comma-separated) |
CHECK_UPDATES |
true |
Set false to disable the daily GitHub-releases check (no outbound calls) |
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.
Under the hood
The hub stitches nvidia-smi, the Docker API, model-server APIs (Ollama, vLLM, llama.cpp, A1111, โฆ), systemd D-Bus, and /proc + /sys into 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 servers โ Model servers
/metricsPrometheus endpoint + Grafana dashboard โ Prometheus & Grafana- The full data pipeline + caller attribution โ How it works
Connect an AI agent (MCP)
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 for you anymore; it's context for your AI agent too. A read-only MCP server 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 through 12 named tools, with the same coverage you see on the dashboard: hosts, containers, systemd services, GPU and who's driving it, per-process RAM, AI model servers, disk treemaps, history and alerts.
<p align="center"><img src="docs/mcp-agents.svg" alt="HomeLab Monitor connects over MCP to AI agents and MCP clients โ Claude, ChatGPT, agents on local Ollama models, or any MCP client; read-only, both directions are question and answer" width="720"></p>
<p align="center"><sub>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.</sub></p>
# 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 just ask โ 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 with ENABLE_MCP=0. Full tool list & setup โ MCP docs.
Security
This is a host monitor: it runs with host access and a read-only Docker socket, root mount, and D-Bus socket โ a broad footprint by design. Keep it behind your LAN/VPN/firewall and don't expose it to the public internet. Details โ docs.
โญ Support the project
If HomeLab Monitor saves you a browser tab or two, a โญ on GitHub genuinely helps other home-labbers find it. Thank you!
<a href="https://www.star-history.com/?repos=SikamikanikoBG%2Fhomelab-monitor&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=SikamikanikoBG/homelab-monitor&type=date&theme=dark&legend=top-left&cachebust=20260609" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=SikamikanikoBG/homelab-monitor&type=date&legend=top-left&cachebust=20260609" /> <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=SikamikanikoBG/homelab-monitor&type=date&legend=top-left&cachebust=20260609" /> </picture> </a>
Contributing
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. See CONTRIBUTING.md.
License
MIT โ see LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.