Skip to main content

A fast, minimal CLI tool to monitor website uptime and SSL certificate health.

Project description

Sentinel — Uptime & SSL Monitor

A fast, minimal CLI tool to monitor website uptime and SSL certificate health concurrently from your terminal.

![PyPI version](https://img.shields.io/pypi/v/sentinel-monitor) ![License](https://img.shields.io/github/license/tomi3-11/sentinel-monitor) ![PyPI downloads](https://img.shields.io/pypi/dm/sentinel-monitor) ![Last commit](https://img.shields.io/github/last-commit/tomi3-11/sentinel-monitor) ![Issues](https://img.shields.io/github/issues/tomi3-11/sentinel-monitor) ![Code style: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json) ![GitHub repo size](https://img.shields.io/github/repo-size/tomi3-11/sentinel-monitor)

demo


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 HEAD request — minimal bandwidth, no body fetched
  • SSL probe: raw TCP socket wrapped with ssl.SSLContext to extract and parse X.509 certificate metadata, runs in a background thread via asyncio.to_thread to 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sentinel_monitor-0.1.2.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sentinel_monitor-0.1.2-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file sentinel_monitor-0.1.2.tar.gz.

File metadata

  • Download URL: sentinel_monitor-0.1.2.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sentinel_monitor-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d9b26968819a360970bbc39ad8550d96e3550ad08142a5a884df2200814bf472
MD5 70ef9e964b2fab368c8564ba0e55c921
BLAKE2b-256 d9e4f6eba3d0aeab465fec973df1089e179cfa019034ad60177ade4e4f472afd

See more details on using hashes here.

Provenance

The following attestation bundles were made for sentinel_monitor-0.1.2.tar.gz:

Publisher: publish.yaml on tomi3-11/sentinel-monitor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sentinel_monitor-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sentinel_monitor-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1156a9271b2e885f265cc14afdbcf403087178e48bb33b31be4bb769718a426e
MD5 24f1292122c38ededc38ae932e93bcf0
BLAKE2b-256 40af2427ad0b35c4a611138c2f883e64051fbf51d2d1f6a55ba910912b9707ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for sentinel_monitor-0.1.2-py3-none-any.whl:

Publisher: publish.yaml on tomi3-11/sentinel-monitor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page