by Higangssh
๐ Manage your homelab from chat. Single binary, zero dependencies.
# Add to your Claude Code skills
git clone https://github.com/Higangssh/homebutlerManage your homelab from chat, AI tools, or the 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 tool layer you can use from chat, AI tools, or the terminal.
The clearest story in homebutler today is watch:
That makes it useful both as a normal CLI and as the execution layer under tools like OpenClaw.
| | 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 | Low single-binary footprint | Medium | High | High |
uptime-kuma, jellyfin, pi-hole, and more)homebutler servehomebutler watch)homebutler watch tui (btop-style)
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.
homebutler serve # Start on port 8080
homebutler serve --port 3000 # Custom port
homebutler serve --demo # Demo mode with realistic sample data
Your container crashed at 3 AM โ but why? homebutler watch catches it the moment it happens, saves the dying logs, figures out the cause, and tells you if it's happening over and over.
Supported backends: Docker (real-time event stream) ยท systemd (polling) ยท PM2 (polling)
homebutler watch add nginx # Interactive: choose Docker / systemd / PM2
homebutler watch add --kind docker nginx # or specify directly
homebutler watch add --kind systemd nginx.service
homebutler watch add --kind pm2 my-api
homebutler watch list # See what you're watching
homebutler watch start # Foreground, Ctrl+C to stop
homebutler watch start --interval 10s # Custom poll interval (default 30s)
When a crash is detected, you'll see:
[03:14:22] INCIDENT: nginx (incident nginx-20260410-031422.581-7a2124)
Crash: OOM โ process killed by SIGKILL (oom, confidence: high)
โ FLAPPING: acute (3 restarts in short window)
homebutler watch history # List all incidents
homebutler watch show <incident-id> # Full details
watch show output includes:
Every incident is automatically analyzed using exit codes and log patterns:
| Signal | Exit Code | Meaning | |--------|-----------|---------| | SIGKILL | 137 | OOM Killer or forced kill | | SIGSEGV | 139 | Segmentation fault (memory corruption) | | SIGTERM | 143 | Graceful shutdown request | | โ | 1 | Application error | | โ | 0 | Clean exit (may be intentional restart) |
Log patterns like panic:, Out of memory, Connection refused, FATAL, and timeout are matched automatically to help identify the root cause.
Detects when a process is stuck in a restart loop (e.g., crash โ restart โ crash again):
Flapping incidents are tagged [FLAPPING] in history and highlighted in watch show.
Notifications are disabled by default, which is useful for air-gapped or closed networks where everything runs locally.
A minimal example in ~/.config/homebutler/config.yaml:
notify:
telegram:
bot_token: "your-bot-token"
chat_id: "your-chat-id"
watch:
enabled: true
notify_on: flapping
cooldown: 5m
flapping:
short_window: 10m
short_threshold: 3
long_window: 24h
long_threshold: 5
alerts:
cpu: 90
memory: 85
disk: 90
rules:
- name: cpu-spike
metric: cpu
threshold: 90
action: notify
Legacy ~/.homebutler/watch/config.json is still read as a fallback for watch-specific settings, and legacy alerts.yaml notify/webhook provider settings are still accepted for older setups.
watch.enabled: true โ allow watch notificationswatch.notify_on: flapping โ notify only when repeated restart loops are detectedwatch.notify_on: incident โ notify on every incidentwatch.notify_on: all โ notify on both incidents and flappingwatch.notify_on: off โ disable watch notifications without removing provider configwatch.cooldown: 5m โ suppress duplicate notifications for the same event fingerprint during the cooldown windowwatch.flapping โ optional advanced tuning for restart-loop detectionhomebutler watch remove nginx # Stop watching
homebutler watch check # One-shot check (no continuous monitoring)
homebutler watch tuiโ A terminal-based dashboard powered by Bubble Tea. Monitors all configured servers w
No comments yet. Be the first to share your thoughts!