Skip to content

Higangssh/homebutler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

172 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HomeButler

HomeButler

Manage your homelab from any AI β€” Claude, ChatGPT, Cursor, or terminal. One binary. Zero dependencies.

Go Go Report Card License: MIT Release homebutler MCP server

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.

homebutler demo

▢️ Click to watch demo β€” Alert β†’ Diagnose β†’ Fix, all from chat (34s)

Why homebutler?

Other tools give you dashboards. homebutler gives you a conversation.

3 AM. Your server disk is 91% full. Here's what happens next:

HomeButler alert β†’ diagnose β†’ fix via Telegram

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 βœ… ❌ ⚠️ API ⚠️ API
Docker control βœ… ⚠️ Monitor ❌ βœ…
Wake-on-LAN βœ… ❌ ❌ ❌
Network scan βœ… ❌ ❌ ❌
Remote deploy βœ… One command ❌ ❌ ❌
Air-gapped install βœ… Copy binary ⚠️ apt/brew ❌ Docker ❌ Docker
Resource usage ~10MB, 0% idle Medium High High

Features

  • 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

πŸ“¦ One-Command App Install

homebutler install demo

homebutler install uptime-kuma β€” Deploy self-hosted apps in seconds. Pre-checks Docker, ports, and duplicates. Generates docker-compose.yml automatically. See all available apps β†’

Demo

🌐 Web Dashboard

homebutler web dashboard

homebutler serve β€” A real-time web dashboard embedded in the single binary via go: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

πŸ–₯️ TUI Dashboard

homebutler TUI dashboard

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.

🧠 AI-Powered Management (MCP)

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 β†’

Quick Start

# 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-kuma

App Install

Deploy 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

How it works

~/.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.yml you can inspect and customize
  • Data safety β€” uninstall stops containers but keeps your data; purge removes everything
  • Cross-platform β€” Auto-detects docker socket (default, colima, podman)

Available apps

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.

Usage

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

πŸ“– Web dashboard details β†’

πŸ–₯️ TUI Dashboard

homebutler watch launches an interactive terminal dashboard (btop-style):

homebutler watch               # monitors all configured servers

Auto-refreshes every 2 seconds. Press q to quit.

Alert Monitoring

homebutler alerts --watch                  # default: 30s interval
homebutler alerts --watch --interval 10s   # check every 10 seconds

Default thresholds: CPU 90%, Memory 85%, Disk 90%. Customizable via config.

Backup & Restore

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.

Configuration

homebutler init    # interactive setup wizard

πŸ“– Configuration details β†’ β€” config file locations, alert thresholds, all options.

Multi-server

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.

MCP Server

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.

Installation

Homebrew (Recommended)

brew install Higangssh/homebutler/homebutler

Automatically installs to PATH. Works on macOS and Linux.

One-line Install

curl -fsSL https://raw.githubusercontent.com/Higangssh/homebutler/main/install.sh | sh

Auto-detects OS/architecture, downloads the latest release, and installs to PATH.

npm (MCP server)

npm install -g homebutler

Downloads the Go binary automatically. Use npx -y homebutler@latest to run without installing globally.

Go Install

go install github.com/Higangssh/homebutler@latest

Build from Source

git clone https://github.com/Higangssh/homebutler.git
cd homebutler
make build

Uninstall

rm $(which homebutler)           # Remove binary
rm -rf ~/.config/homebutler      # Remove config (optional)

Architecture

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.

Contributing

Contributions welcome! Please open an issue first to discuss what you'd like to change.

License

MIT