When your homelab runs 24/7 but you're checking it from bed at 2am on your phone, raw metrics are mostly noise. A developer going by Higangssh learned this the hard way—and built HomeButler to fix it.
The Problem With Dashboards
Traditional monitoring dashboards show you everything: CPU graphs, memory bars, container tables, port lists, uptime counters. They hand interpretation back to you at exactly the moment you're least equipped to provide it. 'Dashboards don't really answer those,' Higangssh writes. 'They show you colors, tables—and then quietly hand the interpretation back to you.' The author wanted a calm, direct answer: is something wrong, is it urgent, what changed, and what should I check next?
Enter HomeButler Doctor
The new homebutler doctor command does exactly that. It runs health checks against your homelab and outputs structured findings with severity indicators. Sample output shows green checks for normal CPU and memory, yellow warnings for 91% disk usage, stopped containers, public listeners on 0.0.0.0:8080, and backups older than seven days—plus suggested follow-up commands. Everything is machine-readable by default with --json output, making it consumable by AI agents without scraping terminal text or parsing distro-specific df -h formatting.
The Real Innovation: Bounded Agent Access
Here's where it gets interesting for homelab operators thinking about AI integration. With SSH access, an agent exploring your server has 'the blast radius of whatever the shell can do—which is everything,' according to Higangssh. HomeButler inverts this model entirely. Instead of 'AI runs my server,' it's 'AI asks my server safe, structured questions.' The agent receives structured JSON output from read-only commands with bounded scope. It interprets results and explains them in plain language—no shell required, no accidental wrong-command-on-wrong-host scenarios.
What Doctor Actually Checks
The checks are intentionally boring because that's the feature: high CPU/memory/disk usage, stopped containers, public bind ports, missing or stale backups, notification readiness, and whether report has a baseline for change detection. A --strict flag exists for cron jobs and CI pipelines. The companion homebutler report command answers 'what changed since last time?' by saving snapshots and comparing current state against the previous run—one looks backward, one assesses current risk.
Installation and Philosophy
HomeButler is a single Go binary with no daemon, database, or always-on service required. Install via Homebrew (brew tap Higangssh/homebutler && brew install homebutler) or a curl install script from GitHub. After homebutler init, you get both commands plus inventory scanning and backup drills. The author's core thesis: 'AI agents don't need more power by default. They need better tools.' A shell gives maximum ambiguity alongside maximum power; a narrow tool gives less power but more meaning.
Key Takeaways
- HomeButler's
doctorcommand provides structured health checks for homelabs without full SSH exposure - JSON output enables AI agent integration while keeping blast radius bounded to read-only queries
- The project distinguishes between
report(what changed) anddoctor(current risks)—two complementary views - Single Go binary, no daemon or database required—runs on-demand from cron or manual triggers
The Bottom Line
This is exactly the kind of tooling the homelab community needs right now. As AI agents get capable enough to be genuinely useful, the instinct to 'just give it SSH' is understandable but reckless. HomeButler proves there's a third way: narrow tools with clear outputs beat wide-open shells every time for ops work. The future isn't 'AI as operator.' It's 'AI as interpreter of structured answers.' That's a security model worth building around.