Skip to main content

Sentinella 🐦‍⬛

Cross-platform system monitor with TUI, web dashboard, and remote monitoring

Sentinella is a cross-platform, open-source system monitor written in Python that works on Linux, BSD, macOS, and Windows.


✨ Features

  • 🖥 Interactive TUI Dashboard: A beautiful terminal dashboard powered by Textual. Inspect CPU, memory, disk, network, active processes, users, sensors, and containers. Supports instant runtime theme toggling (t key: dark/light), dynamic process re-sorting (p key), force refresh (r key), and clear visual stale-state indicators during collection hiccups.
  • 🌐 Modern Web Dashboard: A real-time browser interface powered by FastAPI and WebSockets via a high-performance, capped BroadcastHub. Features 100% offline/air-gapped vendorized assets, persistent light/dark themes, dynamic thresholds and process ranking matching agent config, snapshot payload wire trimming (~70% payload reduction), an accessible (ARIA, keyboard focus-trapped) authentication modal with XOR obfuscation for client-side storage, and reconnection backoff with manual retry.
  • 📡 Remote Monitoring Agent: Run Sentinella as a remote server agent (serve mode) and monitor hosts securely via RemoteCollector over HTTP/WebSockets from a centralized Sentinella instance, or fetch console summaries remotely.
  • 🚀 Quick Summary (fetch): A quick, neofetch-style console summary of system hardware, OS, and resource utilization, available locally or queried from a remote agent (sentinella --remote HOST:PORT fetch).
  • 📊 Structured Exports (print): Print snapshots of system metrics to stdout in Text, CSV, or JSON formats with module name validation, ideal for scripting, integrations, or cron jobs.
  • 📦 Container Support: Native monitoring for Docker and LXC containers (memory, CPU, status, and metadata) with streaming bounded output readers to avoid memory exhaustion.
  • 🔒 Security-First: Constant-time API key verification, security headers (Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy: no-referrer) applied to all HTTP responses, automatic warnings for insecure open network binds across IPv4/IPv6 without authentication, CSV formula-injection sanitization, and permission warnings (chmod 600) for config files holding plaintext credentials.

🚀 Quick Start

Prerequisites

  • Python: 3.11 or higher.
  • Package Manager: uv (recommended) or pip.

Installation

  1. Clone the repository:

    git clone https://github.com/salvatorecorvaglia/sentinella.git
    cd sentinella
    
  2. Sync the workspace (using uv):

    uv sync --all-extras --dev
    
  3. Install the package (using pip):

    pip install -e .
    

🖥 Command Line Usage

Once installed, the sentinella executable will be available on your system path.

# Start the interactive TUI Dashboard (default)
sentinella

# Run the TUI connected to a remote Sentinella agent
sentinella --remote 127.0.0.1:9090

# Print a quick neofetch-style system summary
sentinella fetch

# Fetch a system summary from a remote Sentinella agent
sentinella --remote 127.0.0.1:9090 fetch

# Start the Web Dashboard server (default: port 8080)
sentinella web

# Start the Remote Monitoring Agent server (default: port 9090)
sentinella serve

# Print system stats directly to stdout (JSON format)
sentinella print --format json

# Print specific modules' metrics (e.g. cpu, memory)
sentinella print cpu memory

# Print metrics from a remote Sentinella agent
sentinella --remote 127.0.0.1:9090 print

⌨️ TUI Keyboard Controls

Key Action
q / Ctrl+C Quit Sentinella
t Toggle theme on the fly (Dark ⇄ Light)
p Cycle process sorting order (cpu → memory → pid → name)
r Force immediate metric refresh

Global CLI Options

  • -c PATH, --config PATH: Path to a custom sentinella.toml configuration file.
  • -v, --verbose: Enable verbose debug logging.
  • -r HOST:PORT, --remote HOST:PORT: Connect to a remote Sentinella agent instead of inspecting the local system (applicable to TUI, fetch, and print).

🛠 Configuration

Sentinella can be configured using a sentinella.toml file. The search order for configuration is:

  1. --config / -c CLI flag (explicit path).
  2. ./sentinella.toml (current working directory).
  3. ~/.config/sentinella/sentinella.toml (user profile configuration).
  4. Default built-in values.

A default configuration template is available in sentinella.example.toml.

Configuration Options Reference

[general]
refresh_interval = 2        # Seconds between updates (minimum: 1)
theme = "dark"              # Theme to apply: "dark" or "light"

[modules]
cpu = true                  # Enable/disable specific monitoring modules
memory = true
disk = true
network = true
processes = true
users = true
sensors = true
containers = true

[web]
enabled = false             # Automatically run web server in TUI background
host = "127.0.0.1"          # Host address to bind the web server
port = 8080                 # Port for the web server (1-65535)
api_key = ""                # API key for the dashboard (empty = no authentication)

[remote]
enabled = false             # Automatically run remote agent in TUI background
host = "127.0.0.1"          # Host address to bind the agent server
port = 9090                 # Port for the remote agent (1-65535)
api_key = ""                # API key for agent connection security

[export]
format = "text"             # Default export format: "text", "csv", or "json"

[processes]
max_display = 25            # Max processes to display in TUI and print output
sort_by = "cpu"             # Sort criteria: "cpu", "memory", "pid", "name"

🤝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

📜 Changelog

Detailed release history and version changes can be found in CHANGELOG.md.

🔐 Security

If you discover a security vulnerability, please see our Security Policy.

📝 License

Distributed under the MIT License. See LICENSE for more information.


Author: Salvatore Corvaglia

Metadata

Release files for sentinella-monitor 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sentinella-monitor 1.0.0
File Size Uploaded
sentinella_monitor-1.0.0.tar.gz 185.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sentinella-monitor 1.0.0
File Interpreter ABI Platform
sentinella_monitor-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 357.9 kB

Release files / sentinella_monitor-1.0.0.tar.gz

Download URL sentinella_monitor-1.0.0.tar.gz
Size 185.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7bd3e7acb66f9e8d3f4a0a8e547d82930592dc473675992c03939fd845c63316
BLAKE2b-256 checksum
How to use checksums
72b1f2df4fd0f3bc508417613724e93d8b1b31f1bf49b3bf50131ac54d582f16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release files / sentinella_monitor-1.0.0-py3-none-any.whl

Download URL sentinella_monitor-1.0.0-py3-none-any.whl
Size 172.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1507f9b7303f84ac5b16e872c68e254dcb47b74c136be180a97b474615476d57
BLAKE2b-256 checksum
How to use checksums
39cf3432c044990328e5585d13831e5052b0853ef1edacfb7eead8f23e8191a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

1.1.0

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page