Changelog
What changed in each release, newest first. The full changelog in the repository covers every release since 0.1 in detail. To update, see Upgrading.
1.7.0
November 10, 2026 · Latest · Check when upgrading
- Windows builds. Each release has a Windows zip for x64 and Arm with
homebutler.exeinside, and a Claude Desktop extension for each.npm install -g homebutlernow works on Windows 10 version 1803 or later. --allexits1when any server couldn't be asked or its command failed there. Every server is still printed, and the error names the failed servers. A server without Docker failsdocker list --allon every run.upgradefrom adevbuild exits0again. The local binary is skipped, with the--jsonstatusskippedinstead oferror, and remote servers are still upgraded.backup drill --all --server <name>failed on the server withaccepts 1 arg(s), received 0. The drill's own--allis now sent to the server.
1.6.0
November 9, 2026 · Check when upgrading
--serverand--allno longer act on the wrong machine. Commands that can't reach another server, such asinstallandinventory, ran locally when given either flag. They now refuse it and exit1.--allrefuses commands it can't summarize.docker restart,docker stop,backup,restore,wake,docker logs,docker top,docker inspectandalerts --watchfail before any server is asked.deployandupgradeexit1when any server failed. A binary thatdeployuploaded and that then failed to run is reported as a failure.--allwithout--jsonprinted(parse error)for every SSH server. Each command now has its own summary line, and a missing reading shows-.processes,report,docker stats,backup listandnetwork scananswer for alocal: trueserver under--all, soreport --allalso saves a snapshot there.doctor --strict --allexits non-zero when any server didn't pass.GET /api/portsreturns500with the reason when ports can't be read.statusbuilt for Windows reads real CPU, memory, disk and uptime. No Windows archive is published yet.
1.5.0
November 9, 2026 · Check when upgrading
- Claude Desktop extension. Each release has a
.mcpbbundle for macOS and Linux that installs the MCP server without Node.js or a separate homebutler. It starts in read-only mode. HOMEBUTLER_TOKEN. Start the dashboard container with its token in the environment and no config file on the host.- Inside a container,
homebutler mcprefuses local calls to tools that read the machine it runs on. These returned the container's own numbers. - The image sets
HOMEBUTLER_CONTAINER=1, so runtimes that write no container marker file get the same checks as Docker and Podman. GET /api/report?server=<name>saves no snapshot on that server, and returns the samesummaryas a local report. Polling had moved that server's baseline, and Homepage cards showed-.- The dashboard's sign-in screen names
HOMEBUTLER_TOKEN. - SSH errors name the
keyconfig key and the config file that was loaded.
1.4.0
October 29, 2026 · Check when upgrading
docker_topanddocker top --jsonreturn the kernel's process name incommand, so a token in a container's command line no longer reaches an agent. The terminal table still shows the full line.reportis more accurate about processes. Young processes are kept in the baseline, a daemon that restarted just before a report is the same daemon, daemons systemd starts on demand get noneworgoneline, and a process that keeps restarting gets astateline.- filebrowser keeps its accounts and settings across
uninstalland reinstall. See the filebrowser note. Its upstream project is archived. - Every MCP tool carries
readOnlyHintanddestructiveHint. install_purgenames volumes left behind inkept_volumesandunchecked_volumes.config validateno longer quotes a webhook token from a URL with no scheme.- Stopping
watch startwaits for its monitors and leaves nodocker eventsprocess behind. - Commands no longer wait five seconds on a terminal that doesn't answer a colour query.
1.3.0
October 17, 2026
- Read-only agents.
homebutler mcp --max-risk readoffers an agent only the tools that change nothing. Tools above the limit are left out oftools/listand refused when called by name, andreportruns without saving a snapshot.--max-riskalso takeswriteanddestructive(the default, every tool). See Read-only mode. - Read mode covers this MCP server only. The CLI and
homebutler serveon the same machine are unaffected, and read tools still show container logs and details.
1.2.0
October 12, 2026 · Behavior change
- Fixed: every container and threshold alert from
watch startreached its notification channel dated0001-01-01 00:00:00. - New:
alerts.ignorelists containers that are stopped and started on purpose, such as one a cron job stops every night.watch startandalerts --watchdon't report them going down or recovering. See Alert thresholds. - Behavior change:
install purgealso removes the anonymous volumes of an app whose container was recreated, for example after an image update. Named, external and in-use volumes are still kept and listed. - Fixed:
config validatereported a workingalerts.rulesblock as an unknown key. It now checks each rule and reports a misspelled key at its line.
1.1.1
October 11, 2026
- Fixed: an idle Linux machine read
CPU 0.0%. CPU usage is now measured over one second instead of 200 ms, sostatus, the dashboard and the alerts watcher each take 0.8 seconds longer to answer.
1.1.0
October 11, 2026 · Behavior change
- Behavior change:
reportno longer compares the processes that belong to a container. A recreated container is reported once, asreplaced, instead of again through each of its processes. The first report after upgrading may list a recreated container's old processes asgoneone time. - Behavior change:
install purgeremoves the Docker volumes the app's containers used and names each one. It saysCompletely removedonly when Docker confirms every volume is gone.uninstallis unchanged and keeps them.
1.0.0
October 11, 2026
- The 1.0 compatibility promise. MCP tool names, input schemas and risk classes, JSON field names and types, the change and finding vocabularies,
doctorexit codes, documented config keys, and HTTP routes with their protection don't change before 2.0. See JSON output and stability. - Apart from the release workflow, 1.0.0 is the same code as 0.41.3.
Before 1.0
The 0.x releases built up the commands documented on this site. The last four (0.41.0 to 0.41.3) fixed what an 11-day test run on a Raspberry Pi found, including OOM detection that now requires Docker's oom event, incident start times in RFC 3339 UTC, and lists that are [] instead of null. See the full changelog.