Release Tracker supports 12 different watchers to track releases across various platforms and package managers.
Track releases from GitHub repositories.
Type: github
Repo Format: owner/repository
watchers:
github:
type: github
config:
token: "${GH_TOKEN}" # Optional but recommended for rate limits
repos:
- name: "Docker"
repo: "moby/moby"
watcher: github
Track releases from GitLab repositories.
Type: gitlab
Repo Format: namespace/project
watchers:
gitlab:
type: gitlab
config:
token: "${GITLAB_TOKEN}" # Optional
base_url: "https://gitlab.com/api/v4" # Optional, for self-hosted
repos:
- name: "GitLab CE"
repo: "gitlab-org/gitlab-foss"
watcher: gitlab
Track Python packages from the Python Package Index.
Type: pypi
Repo Format: package-name
watchers:
pypi:
type: pypi
config: {}
repos:
- name: "Django"
repo: "django"
watcher: pypi
- name: "Requests"
repo: "requests"
watcher: pypi
Track container images from Docker Hub.
Type: dockerhub
Repo Format: namespace/repository
or library/repository
(official images)
watchers:
dockerhub:
type: dockerhub
config:
token: "${DOCKER_TOKEN}" # Optional
repos:
- name: "Nginx"
repo: "library/nginx" # Official image
watcher: dockerhub
- name: "Custom App"
repo: "mycompany/myapp" # Custom image
watcher: dockerhub
Track Node.js packages from the NPM registry.
Type: npm
Repo Format: package-name
or @scope/package-name
watchers:
npm:
type: npm
config:
registry_url: "https://registry.npmjs.org" # Optional
repos:
- name: "Express"
repo: "express"
watcher: npm
- name: "TypeScript Types"
repo: "@types/node" # Scoped package
watcher: npm
Track Java/JVM libraries from Maven Central.
Type: maven
Repo Format: groupId:artifactId
watchers:
maven:
type: maven
config:
base_url: "https://search.maven.org" # Optional
repos:
- name: "Spring Boot"
repo: "org.springframework.boot:spring-boot-starter"
watcher: maven
- name: "Jackson Core"
repo: "com.fasterxml.jackson.core:jackson-core"
watcher: maven
Track macOS packages from Homebrew.
Type: homebrew
Repo Format: formula-name
or homebrew/cask/app-name
watchers:
homebrew:
type: homebrew
config:
api_url: "https://formulae.brew.sh/api" # Optional
repos:
- name: "Git"
repo: "git" # Formula
watcher: homebrew
- name: "Docker Desktop"
repo: "homebrew/cask/docker" # Cask
watcher: homebrew
Track Android APKs from APKMirror.
Type: apkmirror
Repo Format: package.name
watchers:
apkmirror:
type: apkmirror
config:
auth_token: "YXBpLWFwa3VwZGF0ZXI6cm01cmNmcnVVakt5MDRzTXB5TVBKWFc4"
user_agent: "release-tracker"
api_url: "https://www.apkmirror.com/wp-json/apkm/v1/app_exists/"
repos:
- name: "WhatsApp"
repo: "com.whatsapp"
watcher: apkmirror
Track Android APKs from APKPure.
Type: apkpure
Repo Format: package.name
watchers:
apkpure:
type: apkpure
config:
user_agent: "release-tracker"
repos:
- name: "Signal"
repo: "org.thoughtcrime.securesms"
watcher: apkpure
Track open-source Android apps from F-Droid.
Type: fdroid
Repo Format: package.name
watchers:
fdroid:
type: fdroid
config:
base_url: "https://f-droid.org/en/packages/" # Optional
repo_url: "https://f-droid.org/repo/" # Optional
repos:
- name: "Termux"
repo: "com.termux"
watcher: fdroid
watchers:
github:
type: github
config:
token: "${GH_TOKEN}"
dockerhub:
type: dockerhub
config:
token: "${DOCKER_TOKEN}"
npm:
type: npm
config: {}
maven:
type: maven
config: {}
pypi:
type: pypi
config: {}
repos:
# Source code repositories
- name: "Kubernetes"
repo: "kubernetes/kubernetes"
watcher: github
config:
upload_assets: false
# Container images
- name: "Redis"
repo: "library/redis"
watcher: dockerhub
config:
upload_assets: false
# Package managers
- name: "React"
repo: "react"
watcher: npm
config:
upload_assets: false
- name: "Spring Framework"
repo: "org.springframework:spring-core"
watcher: maven
config:
upload_assets: false
- name: "Flask"
repo: "flask"
watcher: pypi
config:
upload_assets: true
persistence:
type: redis
config:
host: "localhost"
port: 6379
db: 0
notifiers:
- type: apprise
config:
url: "${APPRISE_URL}"
upload_assets
: Boolean to control asset downloading (can be set globally or per repo)token
: Authentication token for private repositories or higher rate limitsbase_url
: Custom GitLab instance URL (default: https://gitlab.com/api/v4)registry_url
: Custom NPM registry URL (default: https://registry.npmjs.org)base_url
: Custom Maven search URL (default: https://search.maven.org)api_url
: Homebrew API endpoint (default: https://formulae.brew.sh/api)auth_token
: Base64 encoded authentication tokenuser_agent
: Custom user agent stringapi_url
: APKMirror API endpointbase_url
: F-Droid base URL for package pagesrepo_url
: F-Droid repository URLuser_agent
: Custom user agent stringupload_assets: false
for watchers that donโt provide downloadable assetsWith these 12 watchers, you can track releases across:
Potential watchers that could be added:
To add a new watcher:
watcher/
directoryWatcher
base classfetch_latest_release()
methodutils.py
in build_watcher()
functionExample skeleton:
from watcher.base import ReleaseAsset, ReleaseInfo, Watcher
class NewPlatformWatcher(Watcher):
def fetch_latest_release(self, repo: str) -> ReleaseInfo:
# Implement API call and parsing logic
return ReleaseInfo(tag=version, assets=assets)