A modular CLI tool that checks for available software updates and sends notifications. Designed to run on servers, scheduled via cron. Single binary, no runtime dependencies.
- 15 Checkers -- APT, DNF, Pacman, Zypper, APK, macOS, Homebrew, npm, Snap, Flatpak, Docker, WordPress, Web Projects, Distro Release, OpenClaw
- 16 Notifiers -- Slack, Discord, Teams, Telegram, Email, ntfy, Pushover, Gotify, Home Assistant, Google Chat, Matrix, Mattermost, Rocket.Chat, PagerDuty, Pushbullet, Webhook
- Zero dependencies -- Single static binary, no runtime requirements
- Multi-platform -- Linux (amd64, arm64, armv7), macOS (amd64, arm64)
- Interactive setup -- Menu-driven wizard with auto-detection
- Self-update -- Update the binary itself from GitHub releases
- Cron scheduling -- Built-in cron job management
| Checker | Description | |
|---|---|---|
| 🐧 | APT | Debian, Ubuntu |
| 🐧 | DNF | Fedora, RHEL |
| 🐧 | Pacman | Arch Linux |
| 🐧 | Zypper | openSUSE |
| 🐧 | APK | Alpine Linux |
| 🍎 | macOS | macOS Softwareupdate |
| 🍺 | Homebrew | macOS & Linux |
| 📦 | npm | Global npm packages |
| 📦 | Snap | Snap packages |
| 📦 | Flatpak | Flatpak applications |
| 🐳 | Docker | Container image updates |
| 📝 | WordPress | Core, plugins & themes |
| 📦 | Web Projects | npm, yarn, pnpm, Composer |
| 💿 | Distro Release | OS version upgrades |
| 🐾 | OpenClaw | OpenClaw updates |
| Notifier | Notifier | ||
|---|---|---|---|
| 💬 | Slack | 💬 | Google Chat |
| 💬 | Discord | 🔗 | Matrix |
| 💬 | Microsoft Teams | 💬 | Mattermost |
| Telegram | 🚀 | Rocket.Chat | |
| 📧 | E-Mail (SMTP) | 🚨 | PagerDuty |
| 🔔 | ntfy | 📌 | Pushbullet |
| 📲 | Pushover | 🌐 | Webhook |
| 📡 | Gotify | 🏠 | Home Assistant |
curl -sSL https://raw.githubusercontent.com/mahype/update-watcher/main/scripts/install.sh | bashWith server setup (dedicated user, sudoers, cron):
curl -sSL https://raw.githubusercontent.com/mahype/update-watcher/main/scripts/install.sh | bash -s -- --serverWithout server setup (binary only):
curl -sSL https://raw.githubusercontent.com/mahype/update-watcher/main/scripts/install.sh | bash -s -- --no-serverDesktop / macOS
# Interactive setup wizard
update-watcher setup
# Run checks (notifications suppressed)
update-watcher run --notify=false
# Schedule daily checks at 7:00 AM
update-watcher install-cronLinux server (after --server install)
The installer creates a dedicated update-watcher system user — no login shell, no sudo rights. Run all commands as this user so config, cron job, and process are owned by it, not root.
# Interactive setup wizard
sudo -u update-watcher update-watcher setup
# Run checks (notifications suppressed)
sudo -u update-watcher update-watcher run --notify=false
# Schedule daily checks at 7:00 AM
sudo -u update-watcher update-watcher install-cronThe full documentation covers installation, configuration, all checkers and notifiers, CLI reference, server setup, and more:
https://mahype.github.io/update-watcher/
| Section | Description |
|---|---|
| Getting Started | Installation, quickstart, first run |
| Configuration | YAML reference, environment variables, security |
| Checkers | All 15 update checkers with options |
| Notifiers | All 16 notification channels with setup guides |
| CLI Reference | Commands, flags, exit codes |
| Server Setup | Linux, macOS, cron scheduling |
| Contributing | Architecture, adding checkers/notifiers |
MIT