| name | homeserver |
| description | Homelab server management via homebutler CLI. Check system status (CPU/RAM/disk), manage Docker containers, Wake-on-LAN, scan open ports, discover network devices, monitor resource alerts, and manage multiple servers over SSH. Use when asked about server status, docker containers, wake machines, open ports, network devices, system alerts, or multi-server management. |
| metadata | {"openclaw":{"emoji":"🏠","requires":{"anyBins":["homebutler"]},"configPaths":["homebutler.yaml","~/.config/homebutler/config.yaml"]}} |
Homeserver Management
Manage homelab servers using the homebutler CLI. Single binary, JSON output, AI-friendly.
Prerequisites
homebutler must be installed and available in PATH.
which homebutler
brew install Higangssh/homebutler/homebutler
go install github.com/Higangssh/homebutler@latest
git clone https://github.com/Higangssh/homebutler.git
cd homebutler && make build && sudo mv homebutler /usr/local/bin/
curl -fsSL https://raw.githubusercontent.com/Higangssh/homebutler/main/install.sh -o install.sh
less install.sh
sh install.sh
Commands
System Status
homebutler status
homebutler status --server rpi
homebutler status --all
Returns: hostname, OS, arch, uptime, CPU (usage%, cores), memory (total/used/%), disks (mount/total/used/%)
Docker Management
homebutler docker list
homebutler docker list --server rpi
homebutler docker list --all
homebutler docker restart <name>
homebutler docker stop <name>
homebutler docker logs <name>
homebutler docker logs <name> 200
Wake-on-LAN
homebutler wake <mac-address>
homebutler wake <name>
homebutler wake <mac> 192.168.1.255
Config names are defined in config under wake targets.
Open Ports
homebutler ports
homebutler ports --server rpi
homebutler ports --all
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.
Resource Alerts
homebutler alerts
homebutler alerts --server rpi
homebutler alerts --all
Checks CPU/memory/disk against thresholds in config. Returns status (ok/warning/critical) per resource.
Deploy (Remote Installation)
homebutler deploy --server rpi
homebutler deploy --server rpi --local ./homebutler
homebutler deploy --all
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).
MCP Server
homebutler mcp
Starts a built-in MCP (Model Context Protocol) server for use with Claude Desktop, ChatGPT, Cursor, and other MCP clients. Exposes all homebutler tools (system_status, docker_list, docker_restart, docker_stop, docker_logs, wake, open_ports, network_scan, alerts) via standard MCP protocol. No network ports opened — uses stdio only.
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 details
wake — Named WOL targets with MAC + broadcast
alerts.cpu/memory/disk — Threshold percentages
output — 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: ~/.ssh/id_ed25519
- 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 status to 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
--local for 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
- docker not installed → Tell user docker is not available on that server
- docker daemon not running → Suggest
sudo systemctl start docker
- network scan timeout → Normal on large subnets, suggest retrying
- permission denied → May need sudo for ports/docker commands on some systems
Example Interactions
User: "How's the server doing?"
→ Run homebutler status, summarize: "CPU 23%, memory 40%, disk 37%. Uptime 42 days. All good 👍"
User: "Check all servers"
→ Run homebutler status --all, summarize each server's status
User: "How's the Raspberry Pi?"
→ Run homebutler status --server rpi, summarize
User: "What docker containers are running?"
→ Run homebutler docker list, list container names and states
User: "Wake up the NAS"
→ Run homebutler wake nas (if configured) or ask for MAC address
User: "Any alerts across all servers?"
→ Run homebutler alerts --all, report any warnings/critical
User: "Deploy homebutler to the new server"
→ Run homebutler deploy --server <name>, report result