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 (
servemode) and fetch metrics securely viaRemoteCollectorover 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-referrerheader protection, and safe/clean connection closures.
🚀 Quick Start
Prerequisites
- Python:
3.11or higher. - Package Manager: uv (recommended) or
pip.
Installation
-
Clone the repository:
git clone https://github.com/salvatorecorvaglia/raven.git cd raven
-
Sync the workspace (using
uv):uv sync --all-extras --dev
-
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 customraven.tomlconfiguration 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:
--config/-cCLI flag (explicit path)../raven.toml(current working directory).~/.config/raven/raven.toml(user profile configuration).- 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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c598afc76427c210bd0ca0635ac879f352c94f72e90607ae4a1fc004eb59c5d8
|
|
| MD5 |
d94e10a71056a83d175c5e75df0ee074
|
|
| BLAKE2b-256 |
02a7ce90153fd55fcbed9c3b000a57772d18f79dc0acf982a8b96b9bd04a65ea
|
Provenance
The following attestation bundles were made for raven_monitor-0.7.0.tar.gz:
Publisher:
release.yml on salvatorecorvaglia/raven
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
raven_monitor-0.7.0.tar.gz -
Subject digest:
c598afc76427c210bd0ca0635ac879f352c94f72e90607ae4a1fc004eb59c5d8 - Sigstore transparency entry: 2257047209
- Sigstore integration time:
-
Permalink:
salvatorecorvaglia/raven@47c53dc36b5dc5475559cb7c32857c9d7e6efdd2 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/salvatorecorvaglia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47c53dc36b5dc5475559cb7c32857c9d7e6efdd2 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fed07b425f644df9df485f73153df7efc984aac1a580d8b1d504ab39f10ca50
|
|
| MD5 |
0360ee253c3ca89e4ddb84b1e4f435bf
|
|
| BLAKE2b-256 |
e123d8cc17b58e009d9c65eedeffaaf496f5c6c3ce203805d0167f123df73d99
|
Provenance
The following attestation bundles were made for raven_monitor-0.7.0-py3-none-any.whl:
Publisher:
release.yml on salvatorecorvaglia/raven
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
raven_monitor-0.7.0-py3-none-any.whl -
Subject digest:
7fed07b425f644df9df485f73153df7efc984aac1a580d8b1d504ab39f10ca50 - Sigstore transparency entry: 2257047223
- Sigstore integration time:
-
Permalink:
salvatorecorvaglia/raven@47c53dc36b5dc5475559cb7c32857c9d7e6efdd2 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/salvatorecorvaglia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47c53dc36b5dc5475559cb7c32857c9d7e6efdd2 -
Trigger Event:
push
-
Statement type: