# Reported issues for homebutler

Pod holds 13 of 13 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [homebutler](/mcp/homebutler).

## Most discussed

### feat: add Proxmox VE cluster integration

## Problem

HomeButler already gives a useful single-server and SSH multi-server view, but a Proxmox VE homelab is operated as a cluster: nodes, LXC containers, VMs, storage, and tasks need to be visible together. Today this requires switching to the Proxmox UI or shell for both monitoring and provisioning.

## Proposed solution

Add an optional Proxmox VE integration that uses the official API and fits the existing CLI, JSON, web dashboard, and MCP interfaces. Deliver it in independently useful

[Read the thread](https://github.com/Higangssh/homebutler/issues/32) · 2026-07-25 · closed · outside contributor · 12 comments

### A flag-shaped container name skips validation on the remote path, so docker_restart can return help text

## Description

`docker.Restart`, `docker.Stop` and `docker.Logs` all validate the container name with `isValidName` before shelling out, and #82 adds the same check to `Top` and `Inspect`. That check only guards the local execution path.

`executeRemote` (`internal/mcp/server.go:483`) forwards the name straight through:

```go
case "docker_restart":
    remoteArgs = []string{"docker", "restart", stringArg(args, "name"), "--json"}
```

`remote.Run` shell-quotes every argument with `util.ShellQuo

[Read the thread](https://github.com/Higangssh/homebutler/issues/83) · 2026-08-25 · closed · 2 comments

### Decide whether homebutler executes externally-authored provisioning scripts (Proxmox Phase 3)

## Description

Split out of #32 as promised there, so a monitoring feature is not carrying a security decision along with it.

The Proxmox proposal included a third phase: provisioning guests through the Proxmox VE Community Scripts catalog. It is a genuinely useful idea and it is also unlike anything homebutler does today, which is why it needs its own discussion rather than a line in a Phase 1 PR.

## Why it is different from `install`

`homebutler install` looks superficially similar — pick 

[Read the thread](https://github.com/Higangssh/homebutler/issues/62) · 2026-08-22 · closed · 2 comments

### ports: ParseLinuxOutput drops the PID that ss already reports

## Description

`PortInfo` has a `PID` field that is serialized to JSON:

```go
type PortInfo struct {
	Protocol string `json:"protocol"`
	Address  string `json:"address"`
	Port     string `json:"port"`
	PID      string `json:"pid,omitempty"`
	Process  string `json:"process,omitempty"`
}
```

`ParseDarwinOutput` populates it (`internal/ports/ports.go:86`). `ParseLinuxOutput` never does (`internal/ports/ports.go:124`), even though the PID is sitting right there in the `ss` output it already parse

[Read the thread](https://github.com/Higangssh/homebutler/issues/36) · 2026-08-17 · closed · 2 comments

### security: optionally separate Proxmox read and action credentials

## Problem

A single Proxmox endpoint credential is simple, but it couples dashboard, watcher, `doctor`, read-only MCP tools, and guest power actions. A credential used continuously for observation should not need power-management permission.

## Proposal

Support an optional second, narrowly scoped action credential per Proxmox endpoint. The standard endpoint credential remains read-only. Dashboard, watcher, `doctor`, status commands, and read-only MCP tools always use only that credential. Gue

[Read the thread](https://github.com/Higangssh/homebutler/issues/107) · 2026-08-30 · open · outside contributor · 1 comment

### homebutler is indexed on our MCP marketplace

Hey -- found homebutler while indexing servers for https://getlulu.dev/mcps. 🏠 Manage your homelab from chat. Single binary, zero dependencies.

You're indexed and ranked well already:

[![MCP Marketplace](https://img.shields.io/badge/MCP%20Marketplace-Indexed-blueviolet)](https://getlulu.dev/mcps)

Feel free to drop that badge in your README -- helps agents discover it. If monetizing usage via SDK is ever interesting, it's a small opt-in addition -- otherwise just a heads-up, no action needed.

[Read the thread](https://github.com/Higangssh/homebutler/issues/34) · 2026-08-10 · closed · external user · 1 comment

### MCP removed the initialize handshake, and homebutler only speaks the old era

## Description

MCP `2026-07-28` removed the `initialize`/`notifications/initialized` handshake. Every request now carries its protocol version and client capabilities in `_meta`, servers **MUST** implement a `server/discover` RPC returning their supported versions, capabilities and identity, and protocol-level sessions are gone so any request can land on any instance.

homebutler implements the handshake and nothing else (`internal/mcp/server.go:160`). In the spec's own terminology it is a **le

[Read the thread](https://github.com/Higangssh/homebutler/issues/86) · 2026-08-25 · open · 0 comments

### incident files have no size limit, and every incident re-reads the whole directory

## Description

#50 capped the incident directory at 200 files. Two things it did not cap are still open, and both get worse exactly when `watch` is under load.

## Nothing bounds the bytes

`docker logs --tail 100` (`internal/watch/docker_monitor.go:166`) and `journalctl -u <unit> -n 100` (`internal/watch/systemd_monitor.go:106`) bound *lines*, not bytes. There is no truncation anywhere in `internal/watch` — no byte cap, no `LimitReader`.

A process that writes a stack trace, a JSON document, o

[Read the thread](https://github.com/Higangssh/homebutler/issues/81) · 2026-08-24 · closed · 0 comments

## Most recent

### Proxmox endpoints are invisible in the web dashboard

## Description

#78 adds read-only Proxmox visibility over the CLI and MCP. It does not touch `web/`, so a configured Proxmox endpoint appears nowhere in `homebutler serve`.

Phase 1 in #32 named the dashboard:

> Support JSON output and a concise cluster summary in the dashboard and MCP tools.

Deferring it is the right call and is agreed in #78 — the data shape should settle against real clusters before a second consumer is built on it. This issue is the named second phase that the deferral re

[Read the thread](https://github.com/Higangssh/homebutler/issues/79) · 2026-08-24 · closed · 0 comments

### hasSecrets misses notify credentials, so configs holding only a bot token are never permission-checked

## Description

`config.Load` enforces `0600` on the config file when it holds secrets. It decides that with `hasSecrets` (`internal/config/config.go:261`):

```go
func hasSecrets(cfg *Config) bool {
	for _, s := range cfg.Servers {
		if s.Password != "" {
			return true
		}
	}
	return false
}
```

Only `servers[].password` counts. Notify credentials do not.

So a config containing a Telegram bot token, a Slack webhook, or a Discord webhook and no SSH password is never permission-checked. The fi

[Read the thread](https://github.com/Higangssh/homebutler/issues/61) · 2026-08-22 · closed · 0 comments

### processes and network are observed but never tracked

## Description

`Snapshot` (`internal/report/report.go:21`) holds `System`, `Containers`, `Ports`, and `Warnings`. That is the whole set of things homebutler can compare across runs.

`processes` and `network` are collected and rendered but never reach it. So "what is eating the CPU" can be answered for right now and never compared against last time — the question "what started eating the CPU since yesterday" has no path to an answer, even though the command to observe it has existed for a while

[Read the thread](https://github.com/Higangssh/homebutler/issues/59) · 2026-08-22 · open · 0 comments

### Replace remoteSupport bool with target kinds before 1.0 freezes the tool surface

## Description

`capability.remoteSupport` reads as the gate on whether an MCP tool can run against a remote server. It is not. Nothing reads it at runtime.

`toolDefinitions()` (`internal/mcp/capabilities.go:17`) copies `c.tool` and discards both `risk` and `remoteSupport`. `executeTool` (`internal/mcp/server.go:207`) routes to `executeRemote` whenever a `server` argument names a non-local server, without consulting the field. The real gate is the `switch tool` inside `executeRemote` (`internal

[Read the thread](https://github.com/Higangssh/homebutler/issues/56) · 2026-08-22 · closed · 0 comments

### Close the MCP coverage gap before 1.0 freezes the tool surface

Twenty-three MCP tools cover `status`, `docker`, `ports`, `network`, `wake`,
`alerts`, `inventory`, `report`, `doctor`, `backup`, and `install`. Four
commands have no tool at all, and one of them is the one the README leads with.

## The gap

`watch` is missing entirely. The README asks "Why did this service restart at
3 AM?" and `watch` is what answers it, so the question an agent is most likely
to ask is the one it cannot. `report` answers what changed and `watch` answers
what broke; only half

[Read the thread](https://github.com/Higangssh/homebutler/issues/54) · 2026-08-22 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/Higangssh/homebutler/issues).
