homebutler
Perform server health checks, container management, and network maintenance for homelabs.
Install
mkdir -p .claude/skills/homebutler && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10965" && unzip -o skill.zip -d .claude/skills/homebutler && rm skill.zipInstalls to .claude/skills/homebutler
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Homelab server operations via homebutler CLI/MCP. Check system status, generate butler reports, scan inventory/topology, manage Docker containers, install self-hosted apps, verify backup drills, Wake-on-LAN, port scanning, alerts, backup/restore, and multi-server SSH.Key capabilities
- →Monitors system status
- →Manages Docker containers
- →Performs network scans
- →Generates butler reports
How it works
It provides a unified CLI to interact with homelab servers, performing system checks, container management, and network diagnostics.
Inputs & outputs
When to use homebutler
- →Checking server uptime and usage
- →Managing Docker containers
- →Running backup drills
- →Port scanning network nodes
About this skill
Homebutler
Manage homelab servers using the homebutler CLI. Single binary, no daemon/database required, JSON output, MCP-friendly.
Prerequisites
homebutler must be installed and available in PATH.
# Check if installed
which homebutler
# Option 1: Install via Homebrew (macOS/Linux)
brew install Higangssh/homebutler/homebutler
# Option 2: Install via Go
go install github.com/Higangssh/homebutler@latest
# Option 3: Build from source
git clone https://github.com/Higangssh/homebutler.git
cd homebutler && make build && sudo mv homebutler /usr/local/bin/
Commands
Setup Wizard
homebutler init # Interactive config setup
Creates a config file at ~/.config/homebutler/config.yaml with guided prompts.
System Status
homebutler status # Local server
homebutler status --server rpi # Specific remote server
homebutler status --all # All servers in parallel
Returns: hostname, OS, arch, uptime, CPU (usage%, cores), memory (total/used/%), disks (mount/total/used/%)
Butler Report
homebutler report # Health, warnings, changes, suggested actions
homebutler report --no-save # Preview without writing a snapshot
homebutler report --keep 7 # Retain latest 7 snapshots
homebutler report --json # Structured output for automation/MCP
Use this first when the user asks “how is my homelab/server doing?” and wants a concise operational summary. It snapshots current system/container/port state and compares it with the previous run.
Inventory & Topology
homebutler inventory scan # Tree view of system, containers, ports
homebutler inventory scan --json # Structured inventory
homebutler inventory export --format mermaid # Mermaid topology diagram
Use this when the user asks what is running, which container owns a port, or wants topology/context for docs or AI analysis.
Docker Management
homebutler docker list # List all containers
homebutler docker list --server rpi # List on remote server
homebutler docker list --all # List on all servers
homebutler docker restart <name> # Restart a container
homebutler docker stop <name> # Stop a container
homebutler docker logs <name> # Last 50 lines of logs
homebutler docker logs <name> 200 # Last 200 lines
Wake-on-LAN
homebutler wake <mac-address> # Wake by MAC
homebutler wake <name> # Wake by config name
homebutler wake <mac> 192.168.1.255 # Custom broadcast
Config names are defined in config under wake targets.
Open Ports
homebutler ports # Local
homebutler ports --server rpi # Remote
homebutler ports --all # All servers
Returns: protocol, address, port, PID, process name
Network Scan
homebutler network scan
Discovers devices on the local LAN via ping sweep + ARP table. Returns: IP, MAC, hostname, status. Note: May take up to 30 seconds. Some devices may not appear if they don't respond to ping.
TUI Dashboard
homebutler watch # Live terminal dashboard for all servers
Real-time monitoring of all configured servers with auto-refresh. Shows CPU, memory, disk, docker containers in a terminal UI.
Web Dashboard
homebutler serve # Start web dashboard on port 8080
homebutler serve --port 3000 # Custom port
homebutler serve --demo # Demo mode with fake data (no real system calls)
Browser-based dashboard at http://localhost:8080. Read-only view of all servers, docker containers, alerts.
SSH Host Key Trust
homebutler trust <server> # Trust remote server's SSH host key
homebutler trust <server> --reset # Remove old key and re-trust
TOFU (Trust On First Use) model. Required before first SSH connection to a new server.
Upgrade
homebutler upgrade # Upgrade local + all remote servers
homebutler upgrade --local # Upgrade only local binary
Downloads latest release from GitHub and installs it. For remote servers, uses SSH to upgrade.
Resource Alerts
homebutler alerts # Local
homebutler alerts --server rpi # Remote
homebutler alerts --all # All servers
Checks CPU/memory/disk against thresholds in config. Returns status (ok/warning/critical) per resource.
Deploy (Remote Installation)
homebutler deploy --server rpi # Download from GitHub Releases
homebutler deploy --server rpi --local ./homebutler # Air-gapped: copy local binary
homebutler deploy --all # Deploy to all remote servers
Installs homebutler on remote servers via SSH. Auto-detects remote OS/architecture.
Install path priority: /usr/local/bin → sudo /usr/local/bin → ~/.local/bin (with PATH auto-registration in .profile/.bashrc/.zshrc).
App Install
homebutler install list # List available apps
homebutler install <app> # Install an app (docker compose)
homebutler install <app> --port 9090 # Custom port
homebutler install status <app> # Check app status
homebutler install uninstall <app> # Stop app, keep data
homebutler install purge <app> # Stop + delete all data
Deploys self-hosted apps via docker compose. Each app gets its own directory at ~/.homebutler/apps/<app>/ with auto-generated docker-compose.yml and persistent data. Pre-checks docker availability, port conflicts, and duplicates. Available apps include uptime-kuma, plex, vaultwarden, filebrowser, it-tools, gitea, jellyfin, homepage, stirling-pdf, speedtest-tracker, mealie, pi-hole, adguard-home, portainer, and nginx-proxy-manager.
Backup, Restore & Backup Drill
homebutler backup # Back up Docker compose volumes/files
homebutler backup --service uptime-kuma # Back up one service
homebutler backup list # List backup archives
homebutler backup drill uptime-kuma # Boot backup in isolation and verify HTTP health
homebutler backup drill --all # Drill every supported app in backup
homebutler backup drill --archive ./file # Drill a specific archive
homebutler restore ./backup.tar.gz # Restore volumes from archive
Prefer backup drill when the user asks whether backups are trustworthy: it validates the archive, boots the app in an isolated Docker environment, health-checks it, and cleans up.
MCP Server
homebutler mcp # Start MCP server (JSON-RPC over stdio)
Starts a built-in MCP (Model Context Protocol) server for use with Claude Desktop, ChatGPT, Cursor, and other MCP clients. No network ports opened — uses stdio only.
Current MCP tools:
system_statusreportinventory_scan,inventory_exportdocker_list,docker_restart,docker_stop,docker_logs,docker_statswake,open_ports,network_scan,alertsbackup_create,backup_list,backup_drill,backup_restoreinstall_list,install_app,install_status,install_uninstall,install_purge
Version
homebutler version
Output Format
All commands output human-readable text by default. Use --json flag for machine-parseable JSON output (recommended for AI/script integration).
Config File
Config file is auto-discovered in order:
--config <path>— Explicit flag$HOMEBUTLER_CONFIG— Environment variable~/.config/homebutler/config.yaml— XDG standard (recommended)./homebutler.yaml— Current directory
If no config found, sensible defaults are used.
Config Options
servers— Server list with SSH connection detailswake— Named WOL targets with MAC + broadcastalerts.cpu/memory/disk— Threshold percentagesoutput— Default output format
Multi-Server Config Example
servers:
- name: main-server
host: 192.168.1.10
local: true
- name: rpi
host: 192.168.1.20
user: pi
auth: key # "key" (default, recommended) or "password"
key: ~/.ssh/id_ed25519 # optional, auto-detects
- name: vps
host: example.com
user: deploy
port: 2222
auth: key
key: ~/.ssh/id_ed25519
Usage Guidelines
- Always run commands, don't guess — execute
homebutler statusto get real data - Interpret results for the user — don't dump raw JSON, summarize in natural language
- Warn on alerts — if any resource shows "warning" or "critical", highlight it
- Use --all for overview — when user asks about "all servers" or "everything", use
--all - Use --server for specific — when user mentions a server by name, use
--server <name> - Docker errors — if docker is not installed or daemon not running, explain clearly
- Network scan — warn user it may take ~30 seconds
- Security — never expose raw JSON with hostnames/IPs in group chats, summarize instead
- Deploy — suggest
--localfor air-gapped environments
Security Notes
- SSH authentication: Always prefer key-based auth over passwords. Never store plaintext passwords in config.
- Network scans: Only run on your own local network. Warn user before scanning.
- Deploy: Only deploy to servers you own. Confirm with user before remote installations.
- Config file permissions: Keep config files readable only by owner (
chmod 600). - No telemetry: homebutler sends zero data externally. All operations are local or to user-configured hosts only.
Error Handling
- SSH connection failed → Check host/port/user in config, verify SSH key is registered on remote
- homebutler not found on remote → Run
homebutler deploy --server <name>first - **doc
Content truncated.
When not to use it
- →When the server is not on the local network
Prerequisites
Limitations
- →Requires SSH access for remote servers
- →Limited to configured servers
How it compares
It offers a single-binary, MCP-friendly interface for complete homelab management.
Compared to similar skills
homebutler side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| homebutler (this skill) | 0 | 3mo | Review | Intermediate |
| restarting-netalertx-services | 1 | 6mo | Review | Beginner |
| docker-logs-snapshot | 0 | 6mo | Review | Beginner |
| upgrading-golang | 1 | 5mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
restarting-netalertx-services
netalertx
Control NetAlertX services inside the devcontainer. Use this when asked to start backend, start frontend, start nginx, start php-fpm, start crond, stop services, restart services, or check if services are running.
docker-logs-snapshot
jfriisj
Capture a quick, reproducible snapshot of Docker/Compose logs and container state for debugging. Use when smoke tests fail or you need attachable evidence.
upgrading-golang
chainloop-dev
Upgrades Go version across the entire Chainloop codebase including source files, Docker images, CI/CD workflows, and documentation. Use when the user mentions upgrading Go, golang version, or updating Go compiler version.
update-go-version
grafana
Update Go version across the Tempo codebase (go.mod, tools/go.mod, Dockerfile, CI workflows, tools image tag)
it-operations
davila7
Manages IT infrastructure, monitoring, incident response, and service reliability. Provides frameworks for ITIL service management, observability strategies, automation, backup/recovery, capacity planning, and operational excellence practices.
vibeops
rifatshampod
>