
HomeLab Monitor
io.github.SikamikanikoBG由 GitHub 帳號 SikamikanikoBG 發布v0.14.2更新於 Oct 24, 2026
Self-hosted homelab dashboard with a built-in read-only MCP server (hosts, Docker, GPU, services).
概覽
內建於自架 HomeLab Monitor 儀表板的唯讀 MCP 伺服器,讓助理查看主機、容器、GPU、磁碟、費用與告警。
- 可以做什麼
- 檢視主機與 systemd 服務,包括故障狀態,以及透過 SSH 取得的各機器行程記憶體用量。檢視容器健康狀態、記憶體與 VRAM,並讀取容器日誌。依顯示卡檢視 GPU 狀態:使用率、VRAM、時脈、功耗、溫度、風扇轉速,以及佔用記憶體的行程或模型服務。查詢 AI 模型服務、已安裝模型、基準測試結果與實驗執行及其能耗成本。瀏覽磁碟樹狀圖、歷史資料與上線率告警,並依機器、元件、容器或模型詢問費用。
- 適用情境
- 適合已運行 HomeLab Monitor、希望讓助理不必切換頁面就能回答實驗室問題的人:哪張顯示卡被佔滿、哪台主機記憶體不足、什麼佔滿了磁碟,或哪台機器最需要升級。它是唯讀檢視,適合診斷與規劃,而非執行變更。
- 執行需求
- 需要 HomeLab Monitor 儀表板正在運行且可連線;此套件以 stdio 在本機執行伺服器,需將 HOMELAB_MONITOR_URL 環境變數設為儀表板的基礎位址。儀表板內建的 MCP 伺服器須啟用(ENABLE_MCP,預設開啟)並在其 MCP 連接埠提供服務(MCP_PORT,預設 9810)。需要能連線到儀表板所在主機的網路。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 HomeLab Monitor,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
[圖片] HomeLab Monitor
[GitHub stars] [Docker pulls] [Discord] [version] [license] [docker] [docs]
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.
[HomeLab Monitor — a tour of the dashboard: Overview, GPU truth, Costs, AI Models and Experiments]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, and is anything down — across every box over SSH: Linux, a Pi, even Windows. Readable from your phone over the VPN.
Get started
Open http://<your-host>:9800 and 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.
What you get
One page, every box, the questions you actually have. The classics are all here — and a whole AI cockpit builds on top of them.
A front page for your lab — and a wall screen. The Overview opens with a Launchpad: the apps you actually open, as tiles with their real logos, pinned straight from a container row with the address already filled in, grouped and dragged into the order you want. Pins live on the hub, not in one browser — pin it on the laptop and it's there on the phone and on the wall. The whole board fits the screen: it measures its own overrun after every paint and gives ground in order — trimming lists, tightening the fleet rail, folding pins behind a +N more — rather than clipping a card in half or running past the fold. Verified from 4K down to 1366×768. And ⛶ Display (or /?display=1, all a dedicated kiosk box needs) drops every scrap of chrome and fills the monitor: you choose which panels the wall shows, and on Chromium-based browsers it opens full-screen on whichever screen you point it at.
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 decodes nvidia-smi's throttle reasons, and shows memory-bandwidth util, core/mem clocks, power-vs-limit, p-state — and fan speed — for every machine 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 see which card a 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 is supposed to sit at its cap. And it's no longer NVIDIA-only: AMD GPUs are read on Linux straight from the kernel's amdgpu interface (no ROCm), and AMD and Intel GPUs 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.
[The GPU tab — per-card history, fan speed, temperature and which service is on which card]
What it costs — down to the process. Power becomes money: per machine, then per component (GPU measured via nvidia-smi, CPU/DRAM via RAPL), then per 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 a busy-hours heatmap turns months of samples into one picture of when your lab costs you money — a 7×24 day-of-week × hour grid that shows which hour of the week is priciest at a glance.
[The Costs page — per-component and per-process power & money]
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 curve and the real GPU energy it burned, on the same timeline. Create, name, expire and revoke API keys yourself.
[A run pushed from a notebook — its loss curve and the GPU power it actually used]
"Will it fit?" — measured, not guessed. The Benchmark Lab loads 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 the largest 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 plus RAM and VRAM in separate columns (real resident RAM, not page cache), and click one to tail its logs in a side drawer. Every box in the fleet gets the same controls — logs, start/stop/restart, restart policy, pin — over the same SSH connection the probe already uses, and the whole tab works on a phone.
- 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 hub or on 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. Plus network I/O with per-container top talkers and a mini-htop for 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 making fewer requests 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, even Windows. No agents, no installs. The GPU tab works per host too: a remote multi-GPU rig shows every card's VRAM, utilisation, power and temperature, and the processes holding the memory.
- Uptime monitoring, in the box — watch any HTTP endpoint or TCP port (your services, a NAS, a remote site) straight from the container: heartbeat strip, 24h/7d uptime %, latency, and smart 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 alerts — Discord, ntfy.sh and Telegram, 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. The same connection is what lets you open a remote's GPU cockpit and scan its disks from the hub — still with nothing installed on the far end.
Onboarding, Windows setup, and the security model → Multi-machine docs.
Configuration
Set these under environment: in docker-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.
Under the hood
The hub stitches nvidia-smi (plus AMD GPUs via the in-kernel amdgpu sysfs 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 + /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
- Standard
/metricsendpoint to scrape into whatever dashboards you already run → Metrics export - 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 19 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, 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.
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, 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 — set ALLOW_SELF_UPDATE=0/ENABLE_CONTROLS=0, or use docker-compose.readonly.yml, to lock it down to pure monitoring) and a read-only root mount — a broad footprint by design. The dashboard itself has no 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.
⭐ 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!
[Star history — cumulative stars over time]💬 Community
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. 💛
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.
Contributors
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's backend/ module-tree refactor came from @pehota. See the changelog for the full, ongoing credit trail.
License
MIT — see LICENSE.
來源:README.md,提交 0e44c8e
工具
0版本歷史
1- v0.14.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分

