Skip to main content

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

Project description

Raven 🐦‍⬛

Cross-platform system monitor for Linux, BSD, macOS, and Windows

Raven 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.
  • 🌐 Modern Web Dashboard: A real-time web interface powered by FastAPI and WebSockets. Includes light/dark mode persistence, secure API key authentication with XOR obfuscation for client-side storage, and a smooth user experience.
  • 📡 Remote Monitoring Agent: Run Raven as a remote server agent (serve mode) and fetch metrics securely via RemoteCollector over HTTP/WebSockets from a centralized Raven instance.
  • 🚀 Quick Summary (fetch): A quick, neofetch-style console summary of your system's hardware, OS, and current utilization.
  • 📊 Structured Exports (print): Print snapshots of system metrics to stdout in Text, CSV, or JSON formats, ideal for scripting, integrations, or cron jobs.
  • 📦 Container Support: Native monitoring for Docker and LXC containers (memory, CPU, status, and metadata).
  • 🔒 Security-First: Support for timing-attack resistant API key authentication, Referrer-Policy: no-referrer header protection, and safe/clean connection closures.

🚀 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/raven.git
    cd raven
    
  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 raven executable will be available on your system path.

# Start the interactive TUI Dashboard (default)
raven

# Run the TUI connected to a remote Raven agent
raven --remote 127.0.0.1:9090

# Print a quick neofetch-style system summary
raven fetch

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

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

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

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

Global CLI Options

  • -c PATH, --config PATH: Path to a custom raven.toml configuration file.
  • -v, --verbose: Enable verbose debug logging.
  • -r HOST:PORT, --remote HOST:PORT: Connect to a remote Raven agent instead of inspecting the local system.

🛠 Configuration

Raven can be configured using a raven.toml file. The search order for configuration is:

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

A default configuration template is available in raven.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.

📝 License

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


Author: Salvatore Corvaglia

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

raven_monitor-0.7.0.tar.gz (57.8 kB view details)

Uploaded Source

Built Distribution

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

raven_monitor-0.7.0-py3-none-any.whl (62.9 kB view details)

Uploaded Python 3

File details

Details for the file raven_monitor-0.7.0.tar.gz.

File metadata

  • Download URL: raven_monitor-0.7.0.tar.gz
  • Upload date:
  • Size: 57.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for raven_monitor-0.7.0.tar.gz
Algorithm Hash digest
SHA256 c598afc76427c210bd0ca0635ac879f352c94f72e90607ae4a1fc004eb59c5d8
MD5 d94e10a71056a83d175c5e75df0ee074
BLAKE2b-256 02a7ce90153fd55fcbed9c3b000a57772d18f79dc0acf982a8b96b9bd04a65ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for raven_monitor-0.7.0.tar.gz:

Publisher: release.yml on salvatorecorvaglia/raven

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

File details

Details for the file raven_monitor-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: raven_monitor-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 62.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for raven_monitor-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fed07b425f644df9df485f73153df7efc984aac1a580d8b1d504ab39f10ca50
MD5 0360ee253c3ca89e4ddb84b1e4f435bf
BLAKE2b-256 e123d8cc17b58e009d9c65eedeffaaf496f5c6c3ce203805d0167f123df73d99

See more details on using hashes here.

Provenance

The following attestation bundles were made for raven_monitor-0.7.0-py3-none-any.whl:

Publisher: release.yml on salvatorecorvaglia/raven

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