Open Source · Real-Time · Self-Hosted

Monitor Everything
Prevent Downtime

WatchX is a full-spectrum server monitoring platform that tracks CPU, memory, disk, network, processes, ports, Docker containers, and system logs — all in real time with proactive alerting.

Built with
Node.js React WebSocket SQLite
Scroll to explore
Features

Full-Spectrum Monitoring

From CPU usage to Docker containers, from network ports to system logs — WatchX monitors every aspect of your infrastructure in real time.

Real-Time Metrics

CPU (total & per-core), memory, disk, network throughput, load average, temperature, and battery — streamed every 5 seconds via WebSocket.

Process Explorer

Sortable table of top 50 processes with CPU/memory usage, RSS, state, PID, and user information. Search and sort by any column.

Ports & Networks

See every listening port, active connection, and connection state (ESTABLISHED, TIME_WAIT, CLOSE_WAIT). Full network interface details.

Proactive Alerts

Configurable alert rules with thresholds, sustained duration, and cooldowns. Notifications via email, webhook, and in-app with auto-resolve.

Live Log Viewer

Real-time system log streaming with level filtering (error/warn/info/debug), full-text search, pause/resume, and color-coded entries.

Docker Monitoring

Container-level visibility with CPU, RAM, network stats per container. See running/stopped status, images, ports, and resource consumption.

System & Filesystem

Filesystem mounts with usage bars, network interfaces with IP/MAC/speed, logged-in users, services status — the complete system picture.

Interactive Charts

Beautiful time-series charts with gradient fills and configurable time ranges (15m to 24h). Historical data stored in SQLite with configurable retention.

Zero Configuration

Just install, run, and monitor. Default alert rules are seeded automatically. SQLite database requires no setup. One npm run dev to start.

Dashboard

Beautiful. Powerful. Real-Time.

A dark-themed dashboard designed for 24/7 NOC operations. Every panel updates in real time via WebSocket — no polling, no delays.

localhost:5173 — WatchX Dashboard
Connected
Total Servers
12
All healthy
Avg CPU
34%
Avg Memory
61%
Active Alerts
2
1 critical · 1 warning
CPU Usage — Last Hour
Memory Usage — Last Hour

Top Processes

542 total · 3 running · 539 sleeping
Search processes...
PIDNameUserCPU %MEM %RSSState
1842nodewww-data24.38.2656 MBrunning
892postgrespostgres15.712.1968 MBrunning
1204nginxroot3.12.4192 MBsleeping
2501redis-serverredis1.84.5360 MBsleeping
3102dockerdroot1.23.8304 MBsleeping
847
ESTABLISHED
23
LISTENING
145
TIME_WAIT
3
CLOSE_WAIT
1018
TOTAL
Listening Ports
PortProtocolProcessPIDAddress
80tcpnginx12040.0.0.0
443tcpnginx12040.0.0.0
3001tcpnode18420.0.0.0
5432tcppostgres892127.0.0.1
6379tcpredis-server2501127.0.0.1
12 errors 45 warnings 1,892 info 234 debug
Live
Feb 26 14:23:01 [INFO] Request processed: GET /api/health — 200 OK (2ms)
Feb 26 14:23:02 [INFO] WebSocket client connected: dashboard-1a2b3c
Feb 26 14:23:05 [WARN] High memory usage on db-primary-01: 89% (threshold: 80%)
Feb 26 14:23:05 [INFO] Alert triggered: MEM_HIGH_WARN for db-primary-01
Feb 26 14:23:10 [INFO] Metric received from prod-web-01: cpu=32.1% mem=58.4%
Feb 26 14:23:10 [INFO] Metric received from prod-api-02: cpu=47.2% mem=71.0%
Feb 26 14:23:11 [ERROR] Connection refused: smtp.example.com:587 — alert email failed
Feb 26 14:23:15 [INFO] Detail snapshot received: prod-web-01 (50 procs, 23 ports)
Feb 26 14:23:15 [DEBUG] Cache invalidation: metrics_prod-web-01_1h
Feb 26 14:23:20 [INFO] Request processed: GET /api/dashboard — 200 OK (8ms)
Feb 26 14:23:25 [WARN] CPU spike on prod-api-02: 82% → 47% (recovered)
Feb 26 14:23:30 [INFO] Alert resolved: CPU_HIGH_WARN for prod-api-02

Docker Containers

5 running · 1 stopped
api-gateway
nginx:1.25-alpine
CPU2.3%
RAM128 MB / 512 MB
app-server
node:20-slim
CPU18.7%
RAM480 MB / 1 GB
postgres-db
postgres:16-alpine
CPU8.4%
RAM768 MB / 2 GB
Architecture

How It Works

A lightweight agent on each server streams metrics over WebSocket to a central hub. The dashboard connects in real time — zero polling.

Agent

Runs on each server

CPU/Memory/Disk metrics
Process list (top 50)
Ports & connections
Docker containers
System log tail

WatchX Server

Central monitoring hub

WebSocket hub
REST API
SQLite persistence
Alert engine
Email/Webhook alerts

Dashboard

React + Tailwind + Recharts

Real-time WebSocket
Interactive charts
Process explorer
Log viewer
Alert management
Protocol: WebSocket (ws://) + REST API + SQLite
Quick Start

Up and Running in 60 Seconds

Clone, install, run. No configuration needed — sensible defaults and auto-seeded alert rules get you monitoring instantly.

1

Clone & Install

Terminal
$ git clone https://github.com/Aditya-Prakash14/WatchX.git
$ cd watchx
$ npm install
$ cd agent && npm install && cd ..
$ cd frontend && npm install && cd ..
2

Configure (Optional)

.env
# Server
PORT=3001
HOST=0.0.0.0

# Alerting (optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=alerts@yourcompany.com
ALERT_WEBHOOK_URL=https://hooks.slack.com/...
3

Launch Everything

Terminal
$ npm run dev

# Starts concurrently:
#   → Server on :3001 (API + WebSocket hub)
#   → Agent (collects local metrics)
#   → Frontend on :5173 (Vite dev server)
#
# Open http://localhost:5173 and start monitoring!

Monitor Remote Servers

Deploy the agent on any server — just set the WatchX server URL:

Remote Server
$ WATCHX_SERVER=ws://your-watchx-server:3001 node agent/

Stop Guessing.
Start Monitoring.

WatchX is free, open source, and self-hosted. Deploy in seconds, monitor everything, and get alerts before your users notice a problem.