Skip to main content

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.

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.1.tar.gz (8.1 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.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sentinel_monitor-0.1.1.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

Hashes for sentinel_monitor-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d1189871f0dc1a55e9d56bd07af38e9fc876b359338bdeb70ce9d08eeddaa523
MD5 b455d9ae7689a99c5000ac1716ae87a3
BLAKE2b-256 5f31486b7db724db993ce3ae43403bb17845acf521ab79cc05f15ed29e9e08d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sentinel_monitor-0.1.1-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

Hashes for sentinel_monitor-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aa4944261dea7db39982f19f9560cb5831156078f261a4a5117c876868f636cf
MD5 a28f87ca304b0aeb327a7f87b5075d37
BLAKE2b-256 8fa6e2d54571ca64075834228c3e01a69e6dd01ceba3632f3a9137cd355967de

See more details on using hashes here.

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