Add your description here
Project description
Sentinel — Uptime & SSL Monitor
A fast, minimal CLI tool to monitor website uptime and SSL certificate health concurrently from your terminal.
The Problem
Managing multiple projects means keeping track of domain health and SSL expiration dates manually — which is tedious and easy to miss. Sentinel gives you an instant, locally executable snapshot of your web services without the overhead of a heavy monitoring stack or an external SaaS dependency.
Key Features
- Concurrent checks — all sites are probed simultaneously using async I/O, not one by one
- SSL health tracking — extracts certificate expiry directly via raw TCP sockets, no third-party APIs
- Responsive terminal UI — color-coded output that adapts to your terminal width
- Declarative config — define all your targets in a single YAML file
- Graceful error handling — DNS failures, timeouts, and connection drops are caught and reported per site without crashing
Installation
pip install sentinel-monitor
Or with uv:
uv tool install sentinel-monitor
Quick Start
Generate a starter config in your current directory:
sentinel init
Run the monitor:
sentinel
Point to a specific config file:
sentinel -c /path/to/targets.yaml
Check version:
sentinel --version
Configuration
settings:
timeout: 5
alert_webhook: "" # optional: Discord/Slack webhook URL
sites:
- name: "Google"
url: "https://google.com"
- name: "My API"
url: "https://api.example.com"
How It Works
Sentinel is built around three components:
Configuration Manager — parses targets.yaml into typed dataclasses, validates structure, and raises actionable errors on bad input.
Concurrency Engine — an asyncio event loop dispatches all HTTP checks simultaneously via httpx. Sites are never checked sequentially.
Network Probes — two probe types run per site:
- Uptime probe: async HTTP
HEADrequest — minimal bandwidth, no body fetched - SSL probe: raw TCP socket wrapped with
ssl.SSLContextto extract and parse X.509 certificate metadata, runs in a background thread viaasyncio.to_threadto avoid blocking the event loop
Development Setup
git clone https://github.com/tomi3-11/sentinel-monitor.git
cd sentinel-monitor
uv venv && source .venv/bin/activate
uv sync
sentinel -c targets.yaml
Docker
docker build -t monitor .
docker run -t monitor sentinel -c targets.yaml
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sentinel_monitor-0.1.0.tar.gz.
File metadata
- Download URL: sentinel_monitor-0.1.0.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f21283c94264478399c2ab47f549dd8c4bcfadf4a4cb9dea3faf2a0d69bd82ab
|
|
| MD5 |
b5e2016aee6b7384471e569669e4cdc0
|
|
| BLAKE2b-256 |
3fe219cb3d900121ab2b4c5cb753b2aa08a6daea94f6d58c214882e93798d83c
|
File details
Details for the file sentinel_monitor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sentinel_monitor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4635482d6fc31b5489322043ddcb0f730b7f9f8b84d9bbfebad92ca0ac1d72d4
|
|
| MD5 |
ebe16a5d1a2defaa5f153d203cdd9178
|
|
| BLAKE2b-256 |
e26ecd24a67f893e53f138b4dac4c2911a0cb284fd06fbaad29ec5d54dcab872
|