DEV Community

SangheeSon
SangheeSon

Posted on

I built a single binary to manage all my homelab servers from Telegram

I run 3 servers at home — a Mac Mini, a Raspberry Pi, and a NAS. Managing them used to mean opening 3 SSH sessions, running the same commands on each, and switching between terminal tabs at 2 AM when something breaks.

I got tired of it. So I built homebutler.

The moment that started it all

3 AM. Phone buzzes. Disk alert on my NAS — 91% full.

Old workflow: grab laptop → SSH into NAS → check what's eating disk → restart the problem service → SSH into the other servers to make sure they're fine → go back to sleep 40 minutes later.

I wanted this instead: pick up phone → read the alert → type "what's eating disk?" → type "restart postgres" → sleep. All from one chat window.

What homebutler does

It's a single Go binary (~13MB, zero dependencies) that does two things:

1. CLI for your terminal

$ homebutler status --all

🖥 mac-mini (darwin/arm64)
   CPU: 23% | Memory: 5.2/8.0 GB | Disk: 37%

🖥 raspberry-pi (linux/arm64)
   CPU: 12% | Memory: 1.6/4.0 GB | Disk: 47%

🖥 nas-box (linux/amd64)
   CPU: 8% | Memory: 12.4/32 GB | Disk: 87% ⚠️
Enter fullscreen mode Exit fullscreen mode

One command, all servers. It connects to remote servers over SSH in parallel.

2. MCP server for AI chat

homebutler speaks MCP, so Claude, ChatGPT, Cursor — anything that supports MCP — can use it as a tool.

{
  "mcpServers": {
    "homebutler": {
      "command": "npx",
      "args": ["-y", "homebutler@latest"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

This is what it looks like in practice:

🚨 Alert: CPU at 92% on nas-box

Me: "What's eating CPU?"

Bot: postgres — 85.2%

Me: "Restart postgres"

Bot: ✅ Done. CPU 92% → 12%

No SSH. No laptop. No dashboard login.

What's inside

  • System monitoring — CPU, memory, disk, uptime
  • Docker management — list, restart, stop, view logs
  • Wake-on-LAN — power on machines from anywhere
  • Port scanner — see what's listening
  • Network scan — discover LAN devices
  • Multi-server SSH — manage all servers from one place
  • Web dashboard — dark-themed UI, embedded in the binary
  • Alerts — threshold-based notifications
  • JSON output — pipe-friendly for scripts and AI

Why a single binary?

I've tried Netdata, Glances, CasaOS. They all need Docker, or a running daemon, or a web server that's always on.

homebutler is different:

  • Copy one file to your Pi. Done.
  • No Docker. No Node. No Python. No config server.
  • Runs when you need it, sleeps when you don't.
  • Air-gapped install? Just scp the binary.

Multi-server: the part I'm most proud of

# ~/.config/homebutler/config.yaml
servers:
  - name: mac-mini
    local: true
  - name: raspberry-pi
    host: 192.168.1.30
    user: pi
  - name: nas-box
    host: 192.168.1.20
    user: admin
Enter fullscreen mode Exit fullscreen mode

Once configured, every command works across all servers:

homebutler docker list --all    # containers on every server
homebutler alerts --all         # alerts from everywhere
homebutler serve                # web dashboard for all servers
Enter fullscreen mode Exit fullscreen mode

Try it

# Homebrew
brew install Higangssh/tap/homebutler

# npm (for MCP server)
npx -y homebutler@latest

# Go
go install github.com/Higangssh/homebutler@latest
Enter fullscreen mode Exit fullscreen mode

GitHub: github.com/Higangssh/homebutler

It's MIT licensed, open source, and I'm actively maintaining it. If you run a homelab, I'd love to hear what you think.

Top comments (0)