No description
The monolithic check_updates.py has been split into the update_monitor/ package with separate modules for fetching, extraction, comparison, classification, and notification. This makes the codebase easier to navigate and test. The flat services.yaml is replaced by per-service directories under services/<name>/config.yaml, co-locating config with update scripts and AI review examples. When --auto-update is enabled, services with an auto-update.sh script get their release notes classified by a local Ollama model (using few-shot examples from review-examples/) to decide whether the update can be applied automatically or needs manual admin intervention. Results are reported in a single consolidated Matrix message. Immich is the first service with auto-update configured, using 7 real release note examples to train the classifier. |
||
|---|---|---|
| services | ||
| systemd | ||
| tests | ||
| update_monitor | ||
| .env.sample | ||
| .gitignore | ||
| AGENTS.md | ||
| BACKLOG.md | ||
| pyproject.toml | ||
| README.md | ||
| test_classifier.py | ||
service-update-alerts
Small Python script to compare running service versions against upstream releases.
Requirements
- Python 3.10+
Setup
Create and activate a virtual environment, then install dependencies:
python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
Copy .env.sample to .env and fill required values. Export the variables before running the script:
export PAPERLESS_API_TOKEN=...
export FRESHRSS_USERNAME=...
export FRESHRSS_PASSWORD=...
export MATRIX_HOMESERVER=...
export MATRIX_ROOM_ID=...
export MATRIX_ACCESS_TOKEN=...
export UPTIME_KUMA_PUSH_URL=...
export UPTIME_KUMA_USERNAME=...
export UPTIME_KUMA_PASSWORD=...
The script also reads .env automatically if present.
The Matrix bot will attempt to join the configured room automatically if it is not already a member.
Usage
python3 check_updates.py --config services.yaml
python3 check_updates.py --config services.yaml --all
Tests
python -m pytest
To run live integration checks against the real services:
RUN_LIVE_TESTS=1 python -m pytest tests/test_live_services.py
Systemd (user)
Copy the unit files and enable the timer:
mkdir -p ~/.config/systemd/user
cp systemd/service-update-alerts.service ~/.config/systemd/user/
cp systemd/service-update-alerts.timer ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now service-update-alerts.timer
View logs:
journalctl --user -u service-update-alerts.service