Manage your homelab from any AI β Claude, ChatGPT, Cursor, or terminal. One binary. Zero dependencies.
A single-binary CLI + MCP server that lets you monitor servers, control Docker, wake machines, and scan your network β from chat, AI tools, or the command line.
Other tools give you dashboards. homebutler gives you a conversation.
3 AM. Your server disk is 91% full. Here's what happens next:
Alert fires β you check logs from bed β AI restarts the problem container β disk drops to 66%. All from your phone. No SSH, no laptop, no dashboard login.
This is what homebutler + OpenClaw looks like in practice.
π Comparison with alternatives
| homebutler | Glances/btop | Netdata | CasaOS | |
|---|---|---|---|---|
| TUI dashboard | β Built-in | β | β Web | β Web |
| Web dashboard | β Embedded | β | β | β |
| Single binary | β | β | β | β |
| Optional web server | β On-demand | Always-on | Always-on | Always-on |
| Multi-server SSH | β Parallel | β | β | β |
| MCP support | β Built-in | β | β | β |
| Chat integration | β Native | β | β | β |
| AI-friendly JSON | β | β | ||
| Docker control | β | β | β | |
| Wake-on-LAN | β | β | β | β |
| Network scan | β | β | β | β |
| Remote deploy | β One command | β | β | β |
| Air-gapped install | β Copy binary | β Docker | β Docker | |
| Resource usage | ~10MB, 0% idle | Medium | High | High |
- App Install β Deploy self-hosted apps with one command (
uptime-kuma,vaultwarden,gitea, and more) - System Status β CPU, memory, disk, uptime at a glance
- Docker Management β List, restart, stop, logs for containers
- Multi-server β Manage remote servers over SSH (key & password auth)
- Alerts β Get notified when resources exceed thresholds
- Backup & Restore β One-command Docker volume backup with compose + env files
- MCP Server β Works with Claude Desktop, ChatGPT, Cursor, and any MCP client
- Web Dashboard β Beautiful dark-themed web UI with
homebutler serve - TUI Dashboard β Real-time terminal monitoring with
homebutler watch(btop-style) - Wake-on-LAN β Power on machines remotely
- Port Scanner β See what's listening and which process owns it
- Network Scan β Discover devices on your LAN
- JSON Output β Pipe-friendly, perfect for AI assistants to parse
homebutler install uptime-kumaβ Deploy self-hosted apps in seconds. Pre-checks Docker, ports, and duplicates. Generatesdocker-compose.ymlautomatically. See all available apps β
homebutler serveβ A real-time web dashboard embedded in the single binary viago:embed. Monitor all your servers, Docker containers, open ports, alerts, and Wake-on-LAN devices from any browser. Dark theme, auto-refresh every 5 seconds, fully responsive.
β¨ Web Dashboard Highlights
- Server Overview β See all servers at a glance with color-coded status (green = online, red = offline)
- System Metrics β CPU, memory, disk usage with progress bars and color thresholds
- Docker Containers β Running/stopped status with friendly labels ("Running Β· 4d", "Stopped Β· 6h ago")
- Top Processes β Top 10 processes sorted by CPU usage
- Resource Alerts β Threshold-based warnings with visual progress bars (OK / WARNING / CRITICAL)
- Network Ports β Open ports with process names and bind addresses
- Wake-on-LAN β One-click wake buttons for configured devices
- Server Switching β Dropdown to switch between local and remote servers
- Zero dependencies β No Node.js runtime needed. Frontend is compiled into the Go binary at build time
homebutler serve # Start on port 8080
homebutler serve --port 3000 # Custom port
homebutler serve --demo # Demo mode with realistic sample data
homebutler watchβ A terminal-based dashboard powered by Bubble Tea. Monitors all configured servers with real-time updates, color-coded resource bars, and Docker container status. No browser needed.
One natural language prompt manages your entire homelab. Claude Code calls homebutler MCP tools in parallel β checking server status, listing Docker containers, and alerting on disk usage across multiple servers. See screenshots & setup β
# One-line install (recommended, auto-detects OS/arch)
curl -fsSL https://raw.githubusercontent.com/Higangssh/homebutler/main/install.sh | sh
# Or via Homebrew
brew install Higangssh/homebutler/homebutler
# Or via npm (MCP server only)
npm install -g homebutler
# Interactive setup β adds your servers in seconds
homebutler init
# Run
homebutler status
homebutler watch # TUI dashboard (all servers)
homebutler serve # Web dashboard at http://localhost:8080
homebutler docker list
homebutler wake desktop
homebutler ports
homebutler status --all
# Install a self-hosted app (e.g. Uptime Kuma monitoring)
homebutler install uptime-kumaDeploy self-hosted apps with a single command. Each app runs via docker compose with automatic pre-checks, health verification, and clean lifecycle management.
# List available apps
homebutler install list
# Install (default port)
homebutler install uptime-kuma
# Install with custom port
homebutler install uptime-kuma --port 8080
# Install jellyfin with media directory
homebutler install jellyfin --media /mnt/movies
# Check status
homebutler install status uptime-kuma
# Stop (data preserved)
homebutler install uninstall uptime-kuma
# Stop + delete everything
homebutler install purge uptime-kuma~/.homebutler/apps/
βββ uptime-kuma/
βββ docker-compose.yml β auto-generated, editable
βββ data/ β persistent data (bind mount)
- Pre-checks β Verifies docker is installed/running, port is available, no duplicate containers
- Compose-based β Each app gets its own
docker-compose.ymlyou can inspect and customize - Data safety β
uninstallstops containers but keeps your data;purgeremoves everything - Cross-platform β Auto-detects docker socket (default, colima, podman)
| App | Default Port | Description |
|---|---|---|
uptime-kuma |
3001 | Self-hosted monitoring tool |
vaultwarden |
8080 | Bitwarden-compatible password manager |
filebrowser |
8081 | Web-based file manager |
it-tools |
8082 | Developer utilities (JSON, Base64, Hash, etc.) |
gitea |
3002 | Lightweight self-hosted Git service |
jellyfin |
8096 | Free software media system (movies, TV, music) |
More apps coming soon. Want to add one? See Contributing.
homebutler <command> [flags]
Commands:
status System status (CPU, memory, disk, uptime)
docker list List running containers
install <app> Install a self-hosted app (docker compose)
alerts Show current alert status
watch TUI dashboard (monitors all configured servers)
serve Web dashboard (browser-based, go:embed)
Flags:
--json JSON output (default: human-readable)
--server <name> Run on a specific remote server
--all Run on all configured servers in parallel
--port <number> Port for serve command (default: 8080)
--config <path> Config file (auto-detected, see Configuration)
Run homebutler --help for all commands.
π All Commands & Flags
Commands:
init Interactive setup wizard
status System status (CPU, memory, disk, uptime)
watch TUI dashboard (monitors all configured servers)
serve Web dashboard (browser-based, go:embed)
docker list List running containers
docker restart <n> Restart a container
docker stop <n> Stop a container
docker logs <n> Show container logs
wake <name> Send Wake-on-LAN packet
ports List open ports with process info
network scan Discover devices on LAN
alerts Show current alert status
alerts --watch Continuous monitoring with real-time alerts
trust <server> Register SSH host key (TOFU)
backup Backup Docker volumes, compose files, and env
backup list List existing backups
restore <archive> Restore from a backup archive
upgrade Upgrade local + all remote servers to latest
deploy Install homebutler on remote servers
install <app> Install a self-hosted app (docker compose)
install list List available apps
install status <a> Check installed app status
install uninstall Stop app (keep data)
install purge Stop app + delete all data
mcp Start MCP server (JSON-RPC over stdio)
version Print version
Flags:
--json JSON output (default: human-readable)
--server <name> Run on a specific remote server
--all Run on all configured servers in parallel
--port <number> Port for serve command (default: 8080)
--demo Run serve with realistic demo data
--watch Continuous monitoring mode (alerts command)
--interval <dur> Watch interval, e.g. 30s, 1m (default: 30s)
--config <path> Config file (auto-detected, see Configuration)
--local Upgrade only the local binary (skip remote servers)
--local <path> Use local binary for deploy (air-gapped)
--service <name> Target a specific Docker service (backup/restore)
--to <path> Custom backup destination directory
π Web Dashboard
homebutler serve starts an embedded web dashboard β no Node.js, no Docker, no extra dependencies.
homebutler serve # http://localhost:8080
homebutler serve --port 3000 # custom port
homebutler serve --demo # demo mode with sample dataπ₯οΈ TUI Dashboard
homebutler watch launches an interactive terminal dashboard (btop-style):
homebutler watch # monitors all configured serversAuto-refreshes every 2 seconds. Press q to quit.
homebutler alerts --watch # default: 30s interval
homebutler alerts --watch --interval 10s # check every 10 secondsDefault thresholds: CPU 90%, Memory 85%, Disk 90%. Customizable via config.
One-command Docker backup β volumes, compose files, and env variables.
homebutler backup # backup everything
homebutler backup --service jellyfin # specific service
homebutler backup --to /mnt/nas/backups/ # custom destination
homebutler backup list # list backups
homebutler restore ./backup.tar.gz # restore
β οΈ Database services should be paused before backup for data consistency.
π Full backup documentation β β how it works, archive structure, security notes.
homebutler init # interactive setup wizardπ Configuration details β β config file locations, alert thresholds, all options.
Manage multiple servers from a single machine over SSH.
homebutler status --server rpi # query specific server
homebutler status --all # query all in parallel
homebutler deploy --server rpi # install on remote server
homebutler upgrade # upgrade all serversπ Multi-server setup β β SSH auth, config examples, deploy & upgrade.
Built-in MCP server β manage your homelab from any AI tool with natural language.
{
"mcpServers": {
"homebutler": {
"command": "npx",
"args": ["-y", "homebutler@latest"]
}
}
}Works with Claude Desktop, ChatGPT, Cursor, Windsurf, and any MCP client.
π MCP server setup β β supported clients, available tools, agent skills.
brew install Higangssh/homebutler/homebutlerAutomatically installs to PATH. Works on macOS and Linux.
curl -fsSL https://raw.githubusercontent.com/Higangssh/homebutler/main/install.sh | shAuto-detects OS/architecture, downloads the latest release, and installs to PATH.
npm install -g homebutlerDownloads the Go binary automatically. Use npx -y homebutler@latest to run without installing globally.
go install github.com/Higangssh/homebutler@latestgit clone https://github.com/Higangssh/homebutler.git
cd homebutler
make buildrm $(which homebutler) # Remove binary
rm -rf ~/.config/homebutler # Remove config (optional)Goal: Engineers manage servers from chat β not SSH.
Alert fires β AI diagnoses β AI fixes β you get a summary on your phone.
homebutler is the tool layer in an AI ChatOps stack. It doesn't care what's above it β use any chat platform, any AI agent, or just your terminal.
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Layer 3 β Chat Interface β
β Telegram Β· Slack Β· Discord Β· Terminal Β· Browser β
β (Your choice β homebutler doesn't touch this) β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββ
β Layer 2 β AI Agent β
β OpenClaw Β· LangChain Β· n8n Β· Claude Desktop β
β (Understands intent β calls the right tool) β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ
β CLI exec or MCP (stdio)
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββ
β Layer 1 β Tool (homebutler) β YOU ARE HERE β
β β
β βββββββββββ βββββββββββ βββββββββββ β
β β CLI β β MCP β β Web β β
β β stdout β β stdio β β :8080 β β
β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ β
β ββββββββββββββΌβββββββββββββ β
β βΌ β
β internal/* β
β system Β· docker Β· ports Β· network β
β wake Β· alerts Β· remote (SSH) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββ
Three interfaces, one core:
| Interface | Transport | Use case |
|---|---|---|
| CLI | Shell stdout/stderr | Terminal, scripts, AI agents via exec |
| MCP | JSON-RPC over stdio | Claude Desktop, ChatGPT, Cursor, any MCP client |
| Web | HTTP (go:embed) |
Browser dashboard, on-demand with homebutler serve |
All three call the same internal/ packages β no code duplication.
homebutler is Layer 1. Swap Layer 2 and 3 to fit your stack:
- Terminal only β
homebutler status(no agent needed) - Claude Desktop β MCP server, Claude calls tools directly
- OpenClaw + Telegram β Agent runs CLI commands from chat
- Custom Python bot β
subprocess.run(["homebutler", "status", "--json"]) - n8n / Dify β Execute node calling homebutler CLI
No ports opened by default. CLI and MCP use stdin/stdout only. The web dashboard is opt-in (homebutler serve, binds 127.0.0.1).
Now: CLI + MCP + Web dashboard β you ask, it answers.
Goal: Full AI ChatOps β infrastructure that manages itself.
Contributions welcome! Please open an issue first to discuss what you'd like to change.




