Homebutler

Inspect and manage a homelab over MCP - status, Docker, ports, backups - without shell access.

LLM Mart 11 views 72 listing impressions
Transport
Not stated
Package
—
Registry id
io.github.Higangssh/homebutler

No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.

A single Go binary that remembers what your server looked like last time, and tells you — or an agent — what moved.

Website · Docs · Releases

Go 1.25+ License: MIT Release homebutler MCP server

HomeButler mascot holding a tiny server

homebutler report output: a port answered by a different service flagged under Needs Attention, then what changed since the last report — a container gone, one new, one recreated behind the same name, a process running a different invocation, a port that changed owner — then current status and the command to verify the port

brew install Higangssh/homebutler/homebutler     # or: curl -fsSL https://raw.githubusercontent.com/Higangssh/homebutler/main/install.sh | sh
homebutler report                                # first run saves a baseline; the second tells you what moved

Or as a container, reaching your machines over SSH — docs/docker.md: docker run -v ~/.config/homebutler:/config -v ~/.ssh:/root/.ssh:ro ghcr.io/higangssh/homebutler

Section rules, labels, and severities are colour-coded in a terminal. Colour is dropped automatically when output is piped, redirected, or run from cron.

That is the whole idea. Most homelab tools show you a graph of right now, and leave "does this matter?" to you. HomeButler remembers what your server looked like last time, decides what is worth saying, and says it — six containers before and six after is not "no change" when one of them is a different container.

Reading a change

Every line is three columns: what kind of change, what it happened to, and what exactly happened. The kind is one of eight words, and it is the same word in --json, so an agent branches on it without reading prose:

Kind Means You would see it after
gone it was there last time and is not now docker rm, a service stopping, a port closing
new it was not there last time and is now starting anything
replaced same name, different thing underneath docker compose up -d — the container is recreated, so the name and the count are unchanged
image same container, different image pulling a new tag
state same container, running where it was stopped, or the reverse a crash, or bringing something back up
port same port, a different process answering on it one service taking over another's port
disk a mount moved by more than half a gigabyte anything that writes
skipped the comparison could not be made Docker was down when either snapshot was taken

replaced is the one the rest of this exists for. A container recreated under the same name leaves every count identical, which is why a report that compares counts — as this one did before 0.26.0 — answers "no significant changes" while the thing you were running has been swapped out underneath you.

skipped is the second: homebutler says it could not compare rather than reporting nothing changed. An all-clear it cannot stand behind is worse than no answer.

From the project's README.

Related servers

Korean apartment data: 45,000+ complexes, official prices, jeonse ratios, AI forecasts.

25 views

Portable, vendor-neutral home for agent skills, MCP servers, personas, and memory.

23 views

Control plane MCP for scoped recon, triage, and bounded proofs.

23 views

Test management over MCP: author cases, run manual executions, cut releases, read health

23 views