VIGIL
Monitoring System - Système de surveillance en temps réel avec agent multi-plateforme, serveur web centralisé et dashboard interactif pour monitorer les ressources système (CPU, mémoire, réseau, processus). Installation automatisée sur Windows et Linux.
Install / Use
/learn @christ20351/VIGILREADME
🖥️ VIGIL MVP v2.0
VIGIL est un Système de Monitoring Centralisé
A powerful and lightweight real-time monitoring system to supervise multiple computers from a central web interface — no cloud, no subscription, fully self-hosted.

🎯 Architecture
┌─────────────┐ ┌─────────────────┐ ┌─────────────┐
│ Agent │──WS──▶ │ Central Server │ ◀──WS──│ Agent │
│ (PC 1) │ │ (FastAPI) │ │ (PC 2) │
└─────────────┘ └─────────────────┘ └─────────────┘
│
▼
Web Interface
http://SERVER_IP:5000
- Agent : installed on each machine to monitor. Collects metrics and sends them to the server via WebSocket every second.
- Server : central hub that receives all metrics, stores history in SQLite, and serves the web dashboard.
- Dashboard : real-time web interface accessible from any browser on the network.
✨ Features
📊 Real-time Monitoring
- CPU, RAM, Disk usage with live graphs
- Network traffic: upload/download speed
- Top 30 processes by CPU usage (PID, name, CPU%, RAM%, state, user)
- Active network connections (TCP/UDP, local/remote IPs, states)
- Network interfaces: IPv4, IPv6, speed, active/inactive state
🖥️ Modern Interface
- Responsive web dashboard (Chart.js)
- Distinctive PC icons with online/offline status badges
- History tab: visualize last 24h+ of metrics
- Notifications panel: alerts organized by agent and day
- Activity sidebar: browse history per agent (1h / 4h / 24h / 7d)
- Smooth animations and transitions
🔔 Configurable Alerts
- CPU alert with duration threshold (e.g. CPU > 90% for more than 25s)
- Instant RAM and Disk alerts
- Offline agent detection with red badge and notification
� S.M.A.R.T. Disk Health Monitoring
⚠️ Administrator privileges are required – SMART polling only works when the program is started with elevated rights (Windows Admin / Linux root).
- Real-time disk health status (PASSED/FAILED) for each drive
- Reads and displays individual SMART attributes (reallocated sectors, spin-up time, etc.)
- Temperature graphs with per-disk thresholds and color coding
- Automatic alerts when any SMART attribute crosses a safety limit
- Periodic background polling and history retention (30 days by default)
- Supports NVMe and SATA/ATA disks via
smartctlintegration - See FEATURES-SMART.md for complete details and configuration options
�🔐 Optional Authentication
- Token-based session authentication
- Login page with first-run account creation
- Logout button in dashboard topbar
⚙️ Settings
- Edit all server parameters from the web interface
- Automatic backup before each save
- One-click reset to previous configuration
🚀 Quick Start
Option 1 — Pre-built Binaries (Recommended, no Python required)
Download the latest release from the Releases page.
| File | OS | Component |
| --------------------------- | ------- | ---------------- |
| vigil-server-windows.zip | Windows | Central Server |
| vigil-agent-windows.zip | Windows | Monitoring Agent |
| vigil-server-linux.tar.gz | Linux | Central Server |
| vigil-agent-linux.tar.gz | Linux | Monitoring Agent |
Server setup:
- Extract
vigil-server-*to a folder - Run
vigil-server.exe(Windows) or./vigil-server(Linux) as Administrator - An interactive setup menu appears on first launch — configure host, port, auth, and alert thresholds
- Open your browser at
http://localhost:5000(or the configured port)
Agent setup:
- Extract
vigil-agent-*to a folder - Run
vigil-agent.exe(Windows) or./vigil-agent(Linux) as Administrator - Enter the server IP and port — configuration is saved to
agent_config.json - The agent connects automatically and appears in the dashboard
⚠️ Windows: if SmartScreen blocks the exe → "More info" → "Run anyway" ⚠️ Linux: use
sudo ./vigil-agentfor full network access
Option 2 — From Source (requires Python 3.11+)
git clone https://github.com/christ20351/VIGIL.git
cd VIGIL
Windows:
install.bat
Linux/Mac:
chmod +x install.sh
./install.sh
The install script will:
- Ask whether to install the Server or the Agent
- Detect
python/python3and create a local virtual environment (.venv) - Automatically upgrade bundled
pipand install Python dependencies inside the venv - Handle Debian/Ubuntu "externally‑managed" environments by using the venv
- Create a default
config.yamland prompt for host, port, and auth - Offer to launch the component immediately
- Provide clear error messages and hints when something goes wrong
Manual start after installation:
# Server
cd server
python server.py
# Agent (Linux)
cd agent
sudo python agent.py
# Agent (Windows — run as Administrator)
cd agent
python agent.py
🔧 Configuration
Server — config.yaml
Generated automatically on first launch next to the executable (or in server/ when running from source). Edit it manually or use the Settings tab in the web interface.
| Parameter | Default | Description |
| ---------------------- | ----------- | ------------------------------------------ |
| SERVER_HOST | "0.0.0.0" | Listening interface (0.0.0.0 = all) |
| SERVER_PORT | 5000 | Web server port |
| ALLOWED_AGENT_IPS | [] | IPs allowed for agents (empty = all) |
| ALLOWED_CLIENT_IPS | [] | IPs allowed for browsers (empty = all) |
| ENABLE_AUTH | false | Enable token authentication |
| AUTH_TOKEN | "..." | Secret token (if ENABLE_AUTH = true) |
| TIMEOUT | 60 | Seconds before marking an agent offline |
| CPU_ALERT_THRESHOLD | 90 | CPU (%) to trigger alert |
| CPU_ALERT_DURATION | 25 | Duration in seconds above CPU threshold |
| RAM_ALERT_THRESHOLD | 95 | RAM (%) to trigger instant alert |
| DISK_ALERT_THRESHOLD | 90 | Disk (%) to trigger instant alert |
| PROCESS_LIMIT | 100 | Max processes reported per agent |
| NETWORK_CONN_LIMIT | 100 | Max network connections reported per agent |
To force reconfiguration via terminal:
vigil-server.exe --reconfigure
Agent — agent_config.json
Created automatically after the interactive setup on first launch, saved next to the executable.
| Parameter | Default | Description |
| ----------------- | ---------------- | ------------------------------- |
| SERVER_IP | "192.168.1.10" | Central server IP or hostname |
| SERVER_PORT | 5000 | Central server port |
| UPDATE_INTERVAL | 1 | Metrics send interval (seconds) |
| ENABLE_AUTH | false | Enable auth token |
| AUTH_TOKEN | null | Token (must match server token) |
To reconfigure:
vigil-agent.exe --reconfigure
📁 File Structure (binaries)
After extracting the release archives, your folders will look like:
vigil-server/
├── vigil-server.exe ← or vigil-server on Linux
├── config.yaml ← created on first launch
├── config.yaml.bak ← automatic backup before each save
├── users.yaml ← user accounts (if auth enabled)
├── metrics.db ← SQLite history database
├── static/
└── templates/
vigil-agent/
├── vigil-agent.exe ← or vigil-agent on Linux
└── agent_config.json ← created after first setup
🌐 API Endpoints
| Method | Endpoint | Description |
| ------ | ---------------------------------- | ----------------------------------------- |
| GET | / | Web dashboard |
| GET | /health | Server health check |
| GET | /api/computers | List all agents and their current metrics |
| GET | /api/history/{hostname}?hours=24 | Metric history for a specific agent |
| GET | /api/notifications | List all alerts |
| GET | /api/settings | Read current server configuration |
| POST | /api/settings | Update server configuration |
| POST | /api/settings/reset | Restore configuration from backup |
| WS | /ws | WebSocket for web clients (browser) |
| WS | /ws/agent | WebSocket for agents |
🏢 Deployment Guide
Example: 1 server + 20 PCs
Step 1 — Central Server
- Choose a machine that stays on 24/7
- Run
vigil-server.exeand complete the setup - Note the displayed IP (e.g.
192.168.1.10) - Open the firewall port:
sudo ufw allow 5000/tcp # Linux # or Windows Firewall → New inbound rule → Port 5000 - Access
http://192.168.1.10:5000
Step 2 — Agents
On each PC to monitor:
- Copy and extract
vigil-agent-windows.zip - Run
vigil-agent.exeas Administrator - Enter the server IP:
192.168.1.10 - The PC appea
