Explains what changed, not just that it changed — releases, JSON fields, HTTP status, commits
Sentinel
Add it once. Sentinel watches it. Know when it changes.
A dependency-free Python CLI that monitors the things developers depend on — and explains exactly what changed.
0
Third-party dependencies
5 types
GitHub, HTTP, API, PyPI, npm
SQLite
Durable change history
CI-ready
JSON output + exit codes
Why it stands out
The decisions, trade-offs, and details that make Sentinel worth your time.
Zero dependencies: Python 3.11+, pip install and go
Durable SQLite history with uptime statistics, watch mode and machine-readable output
Ships with a safety-first updater that verifies checksums before touching anything
Monitor everything that matters
Checking releases, endpoints and version fields by hand is tedious and forgettable. Sentinel turns it into a repeatable, inspectable routine — and keeps a durable history so you know when something changed, not just that it did.
GitHub releases, tags and commits
Watch microsoft/vscode for releases, python/cpython for commits, or any repository for new tags. Repositories are verified to exist when added.
Websites and APIs
Track a page for changes or drill into a JSON endpoint with a jpath such as $.version or $.stargazers_count, with custom headers and environment-variable secrets.
PyPI and npm packages
Know the moment a dependency ships a new release — with human names for the sources you care about most.
Diffs, not noise
Sentinel reports what changed: a version going 1.102.0 → 1.103.0, an endpoint going HTTP 200 → HTTP 404, or a JSON field moving between values.
Durable history
Every observation is stored in SQLite. sentinel history shows a source's timeline; sentinel uptime turns checks into uptime statistics.
Watch mode
Run sentinel watch --interval 10m to check repeatedly and print changes as they happen. Ctrl-C stops cleanly and the interval is configurable.
Built for scripts
sentinel check --json emits machine-readable output. Exit codes mean something: 0 = no changes, 1 = changes detected, 2 = a source failed.
Safety-first updates
Monitoring is passive; updating is explicit and potentially destructive. The two are kept strictly separate. sentinel upgrade downloads verified release assets — checksum-checked — into <install-path>/<version>/.
Immediately useful defaults
Interactive add, non-interactive one-liners, show, status, list, config — a complete CLI surface with no setup ceremony.
A five-minute setup that keeps paying off
Sentinel is deliberately boring where it matters: install it, point it at the things you depend on, and let it speak only when something changes.
Install
pip install . — Python 3.11+ and nothing else. No virtualenv gymnastics required.
Add sources
sentinel add github microsoft/vscode --monitor release, sentinel add pypi requests, sentinel add api https://api.example.com/version --jpath '$.version'. Interactive or one-line.
Check and watch
Run sentinel check in a cron job or CI pipeline, or sentinel watch --interval 10m while you work.
Upgrade deliberately
When you're ready, sentinel upgrade fetches verified assets into a versioned folder. Nothing is replaced behind your back.
CLI surface
sentinel add Add a source (github | http | api | pypi | npm) sentinel check Check now — prints diffs, stores history, sets exit code sentinel watch Check repeatedly, stream changes as they happen sentinel history A source's observation timeline sentinel uptime Uptime statistics from the checks log sentinel status Sources, current values, health sentinel show Full detail of one source sentinel upgrade Verified, checksum-checked software updates (dry-run safe)
Tech stack
Deliberately dependency-free so it can run anywhere Python runs — including CI images you don't control.
Licensed under MIT.
Built in the open. Star it, try it, break it.
Sentinel is MIT-licensed and developed in public. Feedback, issues, and contributions are genuinely welcome.