Web Analytics

vigil-tui

⭐ 153 stars French by GIN-SYSTEMS

VIGIL

Moniteur de puissance en temps réel pour terminal — CPU · GPU · RAM · Réseau · Processus

CI Python Platform License


vigil-tui dashboard


Vue d’ensemble

vigil est un tableau de bord terminal haute résolution qui affiche la puissance en watts en direct, les températures, les fréquences d’horloge, les scores d’efficacité et le coût de l’électricité pour chaque composant majeur — le tout dans le terminal sans navigateur, sans service en arrière-plan, sans télémétrie.

Il lit directement depuis les capteurs matériels (hwmon, RAPL, LibreHardwareMonitor, NVML) et bascule élégamment lorsqu’un capteur est indisponible. Chaque panneau se met à jour en temps réel, le tout fonctionne avec une seule commande vigil.


Fonctionnalités

Puissance & Températures

Graphiques & Visualisation

Intelligence des processus

Efficacité & Coût

Alertes & Journalisation

Thèmes & UX

---

Support des plateformes

| Plateforme | Puissance CPU | Temp CPU | Puissance GPU | Temp GPU | |---|---|---|---|---| | Linux | hwmon · RAPL · estimation | hwmon | NVML | NVML | | Windows 11 / 10 | LibreHardwareMonitor · estimation | LHM | NVML | NVML | | macOS | estimation uniquement | — | NVML (si présent) | NVML |

Windows — lectures CPU précises

vigil lit la puissance réelle CPU via LibreHardwareMonitor (MPL-2.0) par son interface WMI. Sans cela, vigil utilise automatiquement une estimation CPU% × TDP.

> vigil ne bundle ni ne modifie LibreHardwareMonitor. Il se connecte à son interface WMI au moment de l’exécution. LHM doit être lancé séparément.


Installation

Requirements: Python 3.11+

# Clone
git clone https://github.com/GIN-SYSTEMS/vigil-tui
cd vigil-tui

Linux / macOS

pip install .

Windows (includes WMI + pywin32 for LHM support)

pip install ".[windows]"

Run:

vigil           # launch dashboard
vigil --log     # launch + write JSONL tick log
vigil --help    # all options


Raccourcis clavier

| Touche | Action | |-----|--------| | * / ? | Basculer l’aide superposée | | q / Ctrl+C | Quitter | | p | Mettre en pause / reprendre l’échantillonnage | | r | Réinitialiser l’historique du graphique | | + / - | Zoomer / dézoomer l’axe Y | | b | Capturer la ligne de base — appuyer de nouveau pour effacer | | s | Enregistrer une capture d’écran SVG | | t | Basculer le thème (sombre ↔ clair) | | c | Ouvrir la configuration / l’assistant de configuration |


Configuration

Le premier lancement crée ~/.config/vigil/config.toml :

[hardware]
cpu_tdp_watts       = 65.0     # CPU TDP ceiling for estimation
gpu_tdp_watts       = 165.0    # GPU TDP ceiling
update_interval     = 1.0      # seconds between ticks
history_len         = 120      # chart ring-buffer depth

[cost] kwh_price = 2.0 # electricity price per kWh currency_symbol = "₺"

[alerts] webhook_url = "" # HTTP POST endpoint — empty = disabled cpu_temp_thresh = 90 # °C cpu_watt_thresh_pct = 90 # % of TDP

[ui] theme = "tactical" # "tactical" or "ghost"


How the power waterfall works

vigil starts
│
├─ Linux?
│   ├─ hwmon sysfs (k10temp / zenpower / amd_energy)   ← real sensor
│   ├─ RAPL powercap energy_uj delta                   ← kernel counter
│   └─ CPU% × TDP estimate                             ← always available
│
└─ Windows?
    ├─ LibreHardwareMonitor WMI (requires Admin + LHM) ← real sensor
    └─ CPU% × TDP estimate                             ← always available

GPU → NVML (pynvml) on all platforms if no NVIDIA GPU: panel shows "unavailable", no crash


Project Structure

vigil-tui/
├── src/vigil/
│   ├── app.py                   # Textual app, layout, tick loop
│   ├── config.py                # Static constants
│   ├── config_manager.py        # TOML config loader/writer
│   ├── session.py               # Cost tracking, webhooks, JSONL logging
│   ├── collectors/
│   │   ├── base.py              # Collector ABC + SensorReading
│   │   ├── cpu.py               # hwmon → RAPL → LHM → estimate
│   │   ├── gpu.py               # NVIDIA NVML
│   │   ├── ram.py               # RAM wattage model
│   │   ├── netdisk.py           # Network + disk I/O rates
│   │   └── system.py            # Orchestrator → SystemSnapshot
│   └── widgets/
│       ├── power_header.py      # Top bar: wordmark + gauge
│       ├── cpu_panel.py         # Left: CPU + per-core bars
│       ├── braille_chart.py     # Center: power history
│       ├── clock_chart.py       # Center: clock history
│       ├── process_table.py     # Center: process ranking
│       ├── gpu_panel.py         # Right: GPU metrics
│       ├── financial_widget.py  # Cost display
│       ├── netdisk_widget.py    # Network + disk rates
│       ├── status_bar.py        # Footer
│       ├── boot_screen.py       # Splash screen
│       ├── help_overlay.py      # Key bindings overlay
│       └── setup_wizard.py      # First-run wizard
├── .github/workflows/ci.yml
├── pyproject.toml
├── requirements.txt
└── LICENSE


Dépendances

| Paquet | Utilité | |---------|---------| | textual >= 0.80 | Framework TUI | | psutil >= 5.9.8 | CPU%, liste des processus, E/S réseau/disque | | pynvml >= 11.5.0 | Métriques GPU NVIDIA | | wmi >= 1.5.1 (Windows) | Pont WMI LHM | | pywin32 >= 306 (Windows) | Support Windows COM/WMI |


Licence

MIT — libre à utiliser, modifier et distribuer.


construit par GIN-SYSTEMS

--- Tranlated By Open Ai Tx | Last indexed: 2026-07-17 ---