Skip to main content

updates2mqtt{ align=left }

updates2mqtt

Rhizomatics Open Source

PyPI - Version Ruff Coverage Tests pre-commit.ci status Publish Python 🐍 distribution 📦 to PyPI and TestPyPI Github Deploy CodeQL Dependabot Updates



Summary

Let Home Assistant tell you about new updates to Docker images for your containers.

Example Home Assistant update pageExample Home Assistant Release Notes{width=300}

Read the release notes, and optionally click Update to trigger a Docker pull (or optionally build) and update.

Example Home Assistant update dialog{width=480}

Description

Updates2MQTT perioidically checks for new versions of components being available, and publishes new version info to MQTT. HomeAssistant auto discovery is supported, so all updates can be seen in the same place as Home Assistant's own components and add-ins.

Currently only Docker containers are supported, either via an image registry check (using either v1 Docker APIs or the OCI v2 API), or a git repo for source (see Local Builds), with specific handling for Docker, Github Container Registry, Gitlab, Codeberg, Microsoft Container Registry, Quay and LinuxServer Registry, with adaptive behaviour to cope with most others. The design is modular, so other update sources can be added, at least for notification. The next anticipated is apt for Debian based systems.

Components can also be updated, either automatically or triggered via MQTT, for example by hitting the Install button in the HomeAssistant update dialog. Icons and release notes can be specified for a better HA experience. See Home Assistant Integration for details.

To get started, read the Installation and Configuration pages.

For a quick spin, try this:

docker run -v /var/run/docker.sock:/var/run/docker.sock -e MQTT_USER=user1 -e MQTT_PASS=user1 -e MQTT_HOST=192.168.1.5 ghcr.io/rhizomatics/updates2mqtt:latest

or without Docker, using uv

export MQTT_HOST=192.168.1.1;export MQTT_USER=user1;export MQTT_PASS=user1;uv run --with updates2mqtt python -m updates2mqtt

It also comes with a basic command line tool that will perform the analysis for a single running container, or fetch manifests, JSON blobs and lists of tags from remote registries (known to work with GitHub, GitLab, Codeberg, Quay, LSCR and Microsoft MCR).

Release Support

Presently only Docker containers are supported, although others are planned, probably with priority for apt.

Ecosystem Support Comments
Docker Scan. Fetch Fetch is docker pull only. Restart support only for docker-compose image based containers.

Heartbeat

A heartbeat JSON payload is optionally published periodically to a configurable MQTT topic, defaulting to healthcheck/{node_name}/updates2mqtt. It contains the current version of Updates2MQTT, the node name, a timestamp, and some basic stats.

Healthcheck

A healthcheck.sh script is included in the Docker image, and can be used as a Docker healthcheck, if the container environment variables are set for MQTT_HOST, MQTT_PORT, MQTT_USER and MQTT_PASS. It uses the mosquitto-clients Linux package which provides mosquitto_sub command to subscribe to topics.

!!! tip

Check healthcheck is working using `docker inspect --format "{{json .State.Health }}" updates2mqtt | jq` (can omit `| jq` if you don't have jsonquery installed, but much easier to read with it)

Another approach is using a restarter service directly in Docker Compose to force a restart, in this case once a day:

restarter:
    image: docker:cli
    volumes: ["/var/run/docker.sock:/var/run/docker.sock"]
    command: ["/bin/sh", "-c", "while true; do sleep 86400; docker restart updates2mqtt; done"]
    restart: unless-stopped
    environment:
      - UPD2MQTT_UPDATE=AUTO

Target Containers

While updates2mqtt will discover and monitor all containers running under the Docker daemon, there are some options to make to those containers to tune how it works.

These happen by adding environment variables or docker labels to the containers, typically inside an .env file, or as environment options inside docker-compose.yaml.

Automated updates

If Docker containers should be immediately updated, without any confirmation or trigger, e.g. from the HomeAssistant update dialog, then set an environment variable UPD2MQTT_UPDATE in the target container to Auto ( it defaults to Passive). If you want it to update without publishing to MQTT and being visible to Home Assistant, then use Silent.

restarter:
    image: docker:cli
    command: ["/bin/sh", "-c", "while true; do sleep 86400; docker restart mailserver; done"]
    environment:
      - UPD2MQTT_UPDATE=AUTO

Automated updates can also apply to local builds, where a git_repo_path has been defined - if there are remote commits available to pull, then a git pull, docker compose build and docker compose up will be executed.

Other apps useful for self-hosting with the help of MQTT:

  • psmqtt - Report system health and metrics via MQTT

Find more at awesome-mqtt

For a more powerful Docker focussed update manager, try What's Up Docker

Development

This component relies on several open source packages:

  • docker-py SDK for Python for access to Docker APIs
  • Eclipse Paho MQTT client
  • OmegaConf for configuration and validation
  • structlog for structured logging (optionally JSON) and rich for better exception reporting
  • hishel for caching metadata
  • httpx for retrieving metadata
  • The Astral uv and ruff tools for development and build
  • pytest and supporting add-ins for automated testing
  • usingversion to log current version info

Rhizomatics Open Source for Home Assistant

HACS

  • AutoArm - Automatically arm and disarm Home Assistant alarm control panels using physical buttons, presence, calendars, sun and more
  • Remote Logger - OpenTelemetry (OTLP) and Syslog event capture for Home Assistant
  • Supernotify - Unified notification for easy multi-channel messaging, including powerful chime and security camera integration.

Python / Docker

  • Anpr2MQTT - Integrate with ANPR/ALPR licence plate cameras via file system (NAS/FTP) to MQTT with optional image analysis and UK DVLA integration.

Release files for updates2mqtt 1.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for updates2mqtt 1.12.0
File Size Uploaded
updates2mqtt-1.12.0.tar.gz 46.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for updates2mqtt 1.12.0
File Interpreter ABI Platform
updates2mqtt-1.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 98.9 kB

Release files / updates2mqtt-1.12.0.tar.gz

Download URL updates2mqtt-1.12.0.tar.gz
Size 46.9 kB
Tags Source
SHA-256 checksum
How to use checksums
57e01073059fe5ccec0c52cf7d813c6bed4da2727a73434d387d98101fcd020d
BLAKE2b-256 checksum
How to use checksums
d9fd650f4a26c10eaeda726ba9fe96d986151e9157ba915e2950f1f755cf59a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / updates2mqtt-1.12.0-py3-none-any.whl

Download URL updates2mqtt-1.12.0-py3-none-any.whl
Size 52.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a02222f6a71bb40cbbc58de8c0b8cd3b9c6f68dc2f4ccd3ff1624a5b57275da
BLAKE2b-256 checksum
How to use checksums
1f96dafaf4c19df93b2747f2fb97ffe1c0ebaa18e1c7363516f3c4046a83a7e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.12.0 This release

2 release files

1.11.1

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.7

2 release files

1.9.6

2 release files

1.9.5

2 release files

1.9.4

2 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.0

2 release files

1.8.5

2 release files

1.8.3

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page