1
0
Fork 0
mirror of https://github.com/getwud/wud.git synced 2026-09-25 10:15:10 +02:00
Keep your containers up-to-date! https://getwud.github.io/wud/
  • TypeScript 76.7%
  • Vue 11.5%
  • MDX 4.6%
  • JavaScript 2.3%
  • Gherkin 2%
  • Other 2.7%
Find a file
2026-09-23 18:34:33 +00:00
.agents feat(api,ui): add Server-Sent Events (SSE) and async container watch (#1273) 2026-09-19 22:17:18 +02:00
.github 🚀 [WATCHER] Add Docker Swarm watcher provider with automated E2E tests (#1250) 2026-09-13 16:20:01 +02:00
.openhands 🚀 [DEV] Introduce formal multi-agent personas and workflows in .agents/ (#1256) 2026-09-15 13:16:11 +02:00
.vscode Test/#893 (#941) 2026-02-18 13:02:32 +01:00
app 🐛 [REGISTRY] Fix HTTPS proxy support with tunneling agent (fixes #982) (#1284) 2026-09-22 23:23:35 +02:00
e2e 🐛 [WATCHER] Fix container temporary name persistence on rename (fixes #770) (#1277) 2026-09-21 20:18:47 +02:00
grafana Include REST API into Docusaurus (#1196) 2026-09-06 11:18:21 +02:00
scripts fix(release): prevent trailing blank line in next.md reset causing MD012 error 2026-09-19 13:26:28 +02:00
test Test/#893 (#941) 2026-02-18 13:02:32 +01:00
ui feat(api,ui): add Server-Sent Events (SSE) and async container watch (#1273) 2026-09-19 22:17:18 +02:00
ui-e2e ci(screenshots): allow login capture in demo builds with screenshots flag; revert build:screenshots 2026-09-07 11:21:36 +02:00
website docs: update UI screenshots [automated] 2026-09-23 18:34:33 +00:00
.cursorrules Add AI agents coding rules 2026-09-01 20:47:49 +02:00
.dockerignore Adding UI build step into Docker build process (#1076) 2026-07-12 20:00:29 +02:00
.gitignore Include REST API into Docusaurus (#1196) 2026-09-06 11:18:21 +02:00
AGENTS.md docs: update agent guidelines for root orchestrator role 2026-09-17 00:03:47 +02:00
CLAUDE.md Add AI agents coding rules 2026-09-01 20:47:49 +02:00
CONTRIBUTING.md Move doc from getwud.github.io/wud to getwud.app (#1200) 2026-09-07 09:47:28 +02:00
Docker.entrypoint.sh Migrate logger from unmaintained Bunyan to Pino (#1193) 2026-09-05 09:17:17 +02:00
Dockerfile Migrate logger from unmaintained Bunyan to Pino (#1193) 2026-09-05 09:17:17 +02:00
GEMINI.md docs: update agent guidelines for root orchestrator role 2026-09-17 00:03:47 +02:00
LICENSE Init project and set up doc 2019-08-23 18:30:29 +02:00
README.md 📝 [DOCS] Update documentation badge and Kubernetes annotations example to getwud.app 2026-09-13 17:34:10 +02:00

WUD (What's Up Docker? Logo

What's Up Docker? (WUD)

Keep your containers up-to-date across any orchestrator, automatically and effortlessly.

Docker Pulls GitHub Stars CI Status License Documentation GitHub Sponsors Buy Me A Coffee Donate PayPal

Docker Docker Swarm Kubernetes Nomad Docker Compose

📖 Documentation • 🚀 Quick Start • ⚙️ Configuration • 🔔 Triggers • 📦 Registries • 🛠️ Contributing • 💬 Issues & Support


WUD Web Dashboard UI

💡 About WUD

WUD (What's Up Docker?) is a lightweight, proactive container update monitoring and automation tool. It continuously scans your container environments, detects image updates across public and private registries, performs semantic version analysis, and alerts you via your favorite notification channels—or triggers automatic container updates seamlessly.

flowchart LR
    W["🔍 <b>WATCHERS</b><br/>Discover running containers<br/><i>Docker, Swarm, Kubernetes, Compose, Nomad...</i>"]
    WUD{{"⚡ <b>WUD ENGINE</b><br/>Compare versions &amp; digests"}}
    R["📦 <b>REGISTRIES</b><br/>Inspect tags &amp; manifests<br/><i>Docker Hub, GHCR, Private OCI</i>"]
    T["🚀 <b>TRIGGERS</b><br/>Notify &amp; Auto-Update<br/><i>Discord, Slack, Compose, MQTT</i>"]

    W -->|"Scan"| WUD
    WUD <-->|"Inspect"| R
    WUD -->|"Execute"| T

✨ Features

  • 🔍 Multi-Orchestrator Engine
    Monitor standalone Docker daemons, remote Docker engines over TLS, Docker Compose setups, Docker Swarm clusters, native Kubernetes clusters (Deployments, StatefulSets, DaemonSets, CronJobs), or HashiCorp Nomad clusters.
  • 📦 Multi-Registry Integration
    Zero-config & authenticated support for Docker Hub, GitHub Container Registry (GHCR), AWS ECR, Google GCR/GAR, Azure ACR, Quay, GitLab, Gitea, Forgejo, Codeberg, LinuxServer (LSCR), and any custom/self-hosted OCI registry.
  • 🔔 30+ Notification & Automation Triggers
    Discord, Matrix, Mattermost, Zulip, Telegram, Slack, Signal, WhatsApp, Bark, Prowl, Home Assistant, Gotify, Ntfy, Pushover, Apprise, Webhooks, Kafka, AMQP/RabbitMQ, NATS, Opsgenie, PagerDuty, Uptime Kuma, GitHub Actions, GitLab CI, SMTP email, shell scripts, and native Docker / Compose / Nomad auto-updaters.
  • 🔄 Automated Container Updates
    Automatically pull new images and recreate containers on demand (Docker, Docker Compose, Nomad).
  • 🏷️ SemVer & Tag Filtering
    Flexible versioning strategies: target semver (major, minor, patch), match custom regular expressions, pin versions, or define include/exclude tag rules.
  • 🖥️ Interactive Web UI & REST API
    Clean, responsive web dashboard to inspect container statuses, trigger manual update checks, and query data via a full-featured REST API.
  • 📊 Prometheus & Grafana Ready
    Built-in Prometheus /metrics endpoint and pre-built Grafana dashboards for observability.
  • 🔒 Enterprise-Grade Authentication & RBAC
    Role-Based Access Control (admin, rw, ro), database-backed user management, personal API tokens, and single sign-on with OpenID Connect (OIDC) (Keycloak, Authentik, Authelia, etc.) or local accounts.

⚡ Quick Start

1. Run with Docker

docker run -d \
  --name wud \
  -p 3000:3000 \
  -e WUD_AUTH_ADMIN_USER="admin" \
  -e WUD_AUTH_ADMIN_PASSWORD="MySecurePassword123" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  getwud/wud:latest

2. Run with Docker Compose

services:
  whatsupdocker:
    image: getwud/wud:latest
    container_name: wud
    ports:
      - "3000:3000"
    environment:
      - WUD_AUTH_ADMIN_USER=admin
      - WUD_AUTH_ADMIN_PASSWORD=MySecurePassword123
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

🌐 Access the Web UI: Open http://localhost:3000 in your browser (login with admin / MySecurePassword123).


🧩 Supported Integrations

🔍 Watchers & Orchestrators

Environment Supported Workloads Configuration Guide
Docker Local socket, Remote TCP over TLS, Docker Compose Built-in (Active by default)
Docker Swarm Services, Stacks, Replicated & Global workloads Socket / Remote TCP over TLS
Kubernetes Deployments, StatefulSets, DaemonSets, CronJobs In-cluster RBAC / Kubeconfig
Nomad Jobs (service, batch, system), Task Groups HTTP API / ACL Token

📦 Registries

Registry Description Authentication
Docker Hub Public and private Docker Hub images Anonymous / Token / Password
Docker Hardened Images (DHI) Docker Hardened Images (dhi.io) Token / Password
GitHub (GHCR) GitHub Container Registry packages Personal Access Token
AWS ECR Amazon Elastic Container Registry AWS IAM Keys / IAM Roles
Google GCR / Artifact Registry GCP Container & Artifact Registry Service Account Key (JSON)
Azure ACR Azure Container Registry Service Principal / Admin Secret
GitLab Registry GitLab Container Registry Deploy Token / PAT
Quay.io Red Hat Quay Robot Account / OAuth Token
Self-Hosted / OCI Harbor, Nexus, Artifactory, Gitea, Forgejo, Codeberg Basic Auth / Bearer Token

🔔 Triggers & Notifications

Category Supported Channels
Chat & Messaging Discord, Matrix, Mattermost, Signal, Telegram, Slack, Rocket.Chat, WhatsApp, Zulip
Push Notifications & Alerting Bark, Gotify, IFTTT, Ntfy, Opsgenie, PagerDuty, Prowl, Pushover, Apprise
Auto-Update & Orchestration Docker Container, Docker Compose, HashiCorp Nomad
IoT & Message Queues AMQP (RabbitMQ), Apache Kafka, MQTT (Home Assistant auto-discovery), NATS
Automation & Custom GitHub Actions, GitLab CI, Home Assistant (Webhook), HTTP Webhooks, Shell Command Execution, SMTP Email, Uptime Kuma

🏷️ Configuration via Labels & Annotations

WUD can be configured globally through environment variables or granularly per container/workload using Docker labels or Kubernetes annotations:

Docker & Compose (Labels)

services:
  my-app:
    image: myorg/myapp:1.2.0
    labels:
      # Only consider semver minor and patch updates (e.g. 1.2.1, 1.3.0, but not 2.0.0)
      - "wud.tag.include=^1\\.\\d+\\.\\d+$"
      - "wud.tag.transform=^v(.*)$$ => $$1"
      
      # Send update notifications to a specific Discord webhook
      - "wud.trigger.discord.mywebhook.enabled=true"
      
      # Automatically recreate this container when an update is available
      - "wud.trigger.docker.myupdater.enabled=true"

Kubernetes (Annotations)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: default
  annotations:
    # Explicitly watch this workload
    getwud.app/watch: "true"
    
    # Only consider semver minor and patch updates
    getwud.app/tag.include: "^1\\.\\d+\\.\\d+$"
    getwud.app/tag.transform: "^v(.*)$ => $1"
    
    # Custom display icon in WUD UI
    getwud.app/display.icon: "mdi:kubernetes"

Explore all configuration options in the Configuration Hub.


📚 Documentation

For complete setup guides, advanced configurations, tutorials, and API references, check out our official documentation:

👉 https://getwud.app/


💖 Supporting WUD

WUD is free and open-source software built and maintained with passion. If WUD saves you time or helps keep your homelab and production containers running up-to-date, please consider supporting its ongoing development:

Your support helps cover domain name renewals (getwud.app), AI developer tooling subscriptions, and rewards the time spent maintaining registry integrations and building new features. Thank you!


📄 License

This project is open-source software licensed under the MIT License.