An open API service indexing awesome lists of open source software.

https://github.com/Higangssh/homebutler

๐Ÿ  Manage your homelab from chat. Single binary, zero dependencies.
https://github.com/Higangssh/homebutler

ai chatops cli devops docker go golang homelab mcp mcp-server monitoring openclaw raspberry-pi selfhosted ssh wake-on-lan

Last synced: 8 days ago
JSON representation

๐Ÿ  Manage your homelab from chat. Single binary, zero dependencies.

Awesome Lists containing this project

README

          


HomeButler

# HomeButler


Website ยท Docs ยท Releases

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

[![Go](https://img.shields.io/badge/Go-1.26+-00ADD8?logo=go&logoColor=white)](https://go.dev)
[![Go Report Card](https://goreportcard.com/badge/github.com/Higangssh/homebutler)](https://goreportcard.com/report/github.com/Higangssh/homebutler)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Release](https://img.shields.io/github/v/release/Higangssh/homebutler)](https://github.com/Higangssh/homebutler/releases)
[![homebutler MCP server](https://glama.ai/mcp/servers/Higangssh/homebutler/badges/score.svg)](https://glama.ai/mcp/servers/Higangssh/homebutler)

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](https://github.com/openclaw/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 15 self-hosted apps with one command (`uptime-kuma`, `jellyfin`, `pi-hole`, 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)
- **Self-Healing** โ€” YAML-defined rules that auto-detect and auto-fix issues (restart containers, prune disk, run scripts)
- **Alerts & Notifications** โ€” Multi-channel alerts via Telegram, Slack, Discord, or generic webhook
- **Backup & Restore** โ€” One-command Docker volume backup with compose + env files
- **Backup Drill** โ€” Verify backups actually work by booting them in isolated containers
- **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 โ†’](#app-install)

## 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 processes sorted by CPU/memory with zombie detection
- **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

```bash
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 โ†’](#mcp-server)

## Quick Start

```bash
# 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.

```bash
# 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 | Notes |
|-----|-------------|-------------|-------|
| `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 | Media system (movies, TV, music) | `--media /path` to mount media dir |
| `homepage` | 3010 | Modern homelab dashboard | |
| `stirling-pdf` | 8083 | All-in-one PDF tool (merge, split, convert, OCR) | |
| `speedtest-tracker` | 8084 | Internet speed test with historical graphs | |
| `mealie` | 9925 | Recipe manager and meal planner | |
| `pi-hole` | 8088 | DNS ad blocking | โš ๏ธ Uses port 53 (DNS), NET_ADMIN capability |
| `adguard-home` | 3000 | DNS ad blocker and privacy | โš ๏ธ Uses port 53 (DNS) |
| `portainer` | 9443 | Docker management GUI | โš ๏ธ Mounts Docker socket (HTTPS) |
| `nginx-proxy-manager` | 81 | Reverse proxy with SSL and web UI | โš ๏ธ Uses ports 80/443 |

### App-specific options

```bash
# Jellyfin: mount your media library
homebutler install jellyfin --media /mnt/movies

# Pi-hole / AdGuard: DNS ad blocking (port 53 required)
homebutler install pi-hole
# โš ๏ธ If port 53 is in use (Linux): sudo systemctl disable --now systemd-resolved

# Portainer: Docker GUI (mounts docker socket)
homebutler install portainer
# Access via HTTPS: https://localhost:9443

# Nginx Proxy Manager: reverse proxy
homebutler install nginx-proxy-manager
# Default login: admin@example.com / changeme (change immediately!)

# Any app: custom port
homebutler install --port 9999
```

### Safety checks

- **Port conflict detection** โ€” Checks if the port is already in use before install
- **DNS mutual exclusion** โ€” Warns if pi-hole and adguard-home are both installed
- **Docker socket warning** โ€” Alerts when an app requires Docker socket access (portainer)
- **OS-specific guidance** โ€” Linux gets systemd-resolved fix, macOS gets lsof command
- **Post-install tips** โ€” DNS setup, HTTPS access, default credential warnings

> Want more apps? [Open an issue](https://github.com/Higangssh/homebutler/issues) or see [Contributing](CONTRIBUTING.md).

## Usage

```
homebutler [flags]

Commands:
status System status (CPU, memory, disk, uptime)
docker list List running containers
install 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 Run on a specific remote server
--all Run on all configured servers in parallel
--port Port for serve command (default: 8080)
--config 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 Restart a container
docker stop Stop a container
docker logs Show container logs
wake Send Wake-on-LAN packet
ports List open ports with process info
ps Show top processes (alias: processes)
ps --sort mem Sort by memory instead of CPU
ps --limit 20 Show top 20 (default: 10, 0 = all)
network scan Discover devices on LAN
alerts Show current alert status
alerts --watch Continuous monitoring with real-time alerts
trust Register SSH host key (TOFU)
backup Backup Docker volumes, compose files, and env
backup list List existing backups
backup drill Verify backup restores correctly (isolated)
backup drill --all Verify all apps in backup
restore Restore from a backup archive
upgrade Upgrade local + all remote servers to latest
deploy Install homebutler on remote servers
install Install a self-hosted app (docker compose)
install list List available apps
install status 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 Run on a specific remote server
--all Run on all configured servers in parallel
--port Port for serve command (default: 8080)
--demo Run serve with realistic demo data
--watch Continuous monitoring mode (alerts command)
--interval Watch interval, e.g. 30s, 1m (default: 30s)
--config Config file (auto-detected, see Configuration)
--local Upgrade only the local binary (skip remote servers)
--local Use local binary for deploy (air-gapped)
--service Target a specific Docker service (backup/restore)
--to Custom backup destination directory
--archive Specific backup archive for drill
--all Verify all supported apps (backup drill)
```

๐ŸŒ Web Dashboard

`homebutler serve` starts an embedded web dashboard โ€” no Node.js, no Docker, no extra dependencies.

```bash
homebutler serve # http://localhost:8080
homebutler serve --port 3000 # custom port
homebutler serve --demo # demo mode with sample data
```

๐Ÿ“– **[Web dashboard details โ†’](docs/web-dashboard.md)**

๐Ÿ–ฅ๏ธ TUI Dashboard

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

```bash
homebutler watch # monitors all configured servers
```

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

## Alert Monitoring

```bash
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.

```bash
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 โ†’](docs/backup.md)** โ€” how it works, archive structure, security notes.

### ๐Ÿ›ก๏ธ Self-Healing

**Your homelab fixes itself while you sleep.**

Define rules in YAML. homebutler watches your servers and takes action automatically โ€” restart crashed containers, prune disk, or run custom scripts.

```bash
homebutler alerts init # interactive setup wizard
homebutler alerts --watch # start self-healing daemon
homebutler alerts history # view past events
homebutler alerts test-notify # test your notification channels
```

**Example `~/.homebutler/alerts.yaml`:**

```yaml
rules:
- name: container-down
metric: container
watch: [uptime-kuma, vaultwarden]
action: restart
cooldown: 5m

- name: disk-full
metric: disk
threshold: 85
action: exec
exec: "docker system prune -f"

notify:
telegram:
bot_token: "your-bot-token"
chat_id: "your-chat-id"
slack:
webhook_url: "https://hooks.slack.com/..."
discord:
webhook_url: "https://discord.com/api/webhooks/..."
```

**What it does:**

```
โฑ๏ธ 03:14:22 ๐Ÿ”ด disk-full triggered (disk 91%)
โ†’ Executing: docker system prune -f
โ†’ Reclaimed 4.2 GB
โœ“ 03:14:29 โœ… Resolved (disk 66%)
```

**Supported metrics:** `cpu`, `memory`, `disk`, `container`
**Supported actions:** `notify` (alert only), `restart` (docker restart), `exec` (run any command)
**Supported channels:** Telegram, Slack, Discord, generic webhook

### ๐Ÿ” Backup Drill

**"Having a backup" and "being able to restore" are different things.**

Backup Drill boots your backup in an isolated Docker environment and verifies the app actually responds โ€” like a fire drill for your data.

```bash
homebutler backup drill uptime-kuma # verify one app
homebutler backup drill --all # verify all apps
homebutler backup drill --json # machine-readable output
homebutler backup drill --archive ./file # use a specific backup
```

**What happens:**
1. Finds the latest backup archive
2. Verifies archive integrity (`tar` validation)
3. Creates an isolated Docker network + random port
4. Boots the app from backup data
5. Runs an HTTP health check
6. Reports pass/fail and cleans up everything

```
๐Ÿ” Backup Drill โ€” uptime-kuma

๐Ÿ“ฆ Backup: ~/.homebutler/backups/backup_2026-04-04_1711.tar.gz
๐Ÿ“ Size: 18.6 MB
๐Ÿ” Integrity: โœ… tar valid (8 files)

๐Ÿš€ Boot: โœ… container started in 0s
๐ŸŒ Health: โœ… HTTP 200 on port 58574
โฑ๏ธ Total: 2s

โœ… DRILL PASSED
```

**Zero risk** โ€” runs in a completely isolated environment. Your running services are never touched.

Supports health checks for: `nginx-proxy-manager`, `vaultwarden`, `uptime-kuma`, `pi-hole`, `gitea`, `jellyfin`, `plex`, `portainer`, `homepage`, `adguard-home`.

## Configuration

```bash
homebutler init # interactive setup wizard
```

๐Ÿ“– **[Configuration details โ†’](docs/configuration.md)** โ€” config file locations, alert thresholds, all options.

## Multi-server

Manage multiple servers from a single machine over SSH.

```bash
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 โ†’](docs/multi-server.md)** โ€” SSH auth, config examples, deploy & upgrade.

## MCP Server

Built-in [MCP](https://modelcontextprotocol.io/) server โ€” manage your homelab from any AI tool with natural language.

```json
{
"mcpServers": {
"homebutler": {
"command": "npx",
"args": ["-y", "homebutler@latest"]
}
}
}
```

Works with Claude Desktop, ChatGPT, Cursor, Windsurf, and any MCP client.

๐Ÿ“– **[MCP server setup โ†’](docs/mcp-server.md)** โ€” supported clients, available tools, agent skills.

## Installation

### Homebrew (Recommended)

```bash
brew install Higangssh/homebutler/homebutler
```

Automatically installs to PATH. Works on macOS and Linux.

### One-line Install

```bash
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)

```bash
npm install -g homebutler
```

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

### Go Install

```bash
go install github.com/Higangssh/homebutler@latest
```

### Build from Source

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

## Uninstall

```bash
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](LICENSE)