Diun is a notifier for container image updates. It watches the images your containers are built from and tells you when a tag you depend on changes — a new release, or the same tag rebuilt with a fresh base image after a security fix. Instead of polling registries by hand, or trusting that latest quietly moved, you run Diun once and get a message through whatever channel you already read.
It is a single Go binary, also published as a multi-arch container image, configured with a YAML file. The daemon runs on a schedule, inspects the manifests of the images it has been told to watch, keeps what it has seen in an embedded database, and only notifies when the digest behind a tag actually changes.
Alerts go to the services you already use: Discord, Slack, Teams, Telegram, Gotify, Ntfy, Pushover, Matrix, MQTT, AMQP, Rocket.Chat, SMTP mail, Signal through its REST bridge, generic webhooks, Apprise or a custom script. Notification templates are configurable, so a message can carry the image, the registry, the old and new digests, and links of your own.
The documented install is a container with the Docker socket mounted read-only and a diun.yml: docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v ./diun.yml:/diun.yml:ro crazymax/diun serve. State lives under /data, so mount a volume there to keep the record of seen images across restarts. A cron expression in the configuration sets how often it checks, and Diun also exposes a gRPC server with a standard health endpoint for orchestrators that want to probe it.
Diun only reports — it never pulls or restarts anything. Pair it with an updater such as WUD (What’s Up Docker?), or leave the restart manual and treat the notification as the trigger.
MIT. Free and open source, and self-hostable: the binary and the image are yours to run wherever you like.