Server Pulse is a compact Windows 11 desktop widget for watching two Linux servers over SSH.
It is meant for small VPS setups where you want CPU, RAM, disk, uptime, and network activity visible at a glance without deploying a full monitoring stack or keeping another browser dashboard open.
Each server card displays:
- online / offline state;
- CPU usage;
- RAM used / total and percentage;
- root disk used / total and percentage;
- uptime;
- network RX / TX rate;
- warning and overload states.
The widget refreshes every 5 seconds by default.
- PINNED / PIN — keep the widget above other windows or let it behave normally;
- ⚙ — connection settings;
- — — minimize to the Windows taskbar;
- × — close the widget;
- drag the top bar to move it.
Server Pulse deliberately stays small. It does not require a database, a web service, Docker, Prometheus, or an always-running monitoring daemon.
The recommended setup uses a dedicated SSH key whose only permitted action is to run the included read-only metrics collector.
Copy the collector to each Linux server:
sudo install -m 0755 server/serverpulse-metrics.sh /usr/local/bin/serverpulse-metricsCreate a dedicated key on Windows or another trusted workstation:
ssh-keygen -t ed25519 -f $HOME\.ssh\serverpulse_ed25519 -C serverpulse-monitorAdd only the public key to the Linux account's ~/.ssh/authorized_keys:
restrict,command="/usr/local/bin/serverpulse-metrics" ssh-ed25519 AAAA... serverpulse-monitor
That key cannot open a normal SSH shell or run arbitrary remote commands. It can only return the metrics Server Pulse understands.
See SECURITY.md for the security model.
The easiest route is to download ServerPulse.exe from the latest GitHub Release.
Open Settings and fill in, for each server:
- display name;
- host or IP;
- SSH user;
- SSH port;
- local path to the dedicated private key.
Server Pulse automatically looks for a working SSH client. It supports Windows OpenSSH and Git for Windows, and you can manually select another ssh.exe in Settings.
Local application data is stored under:
%LOCALAPPDATA%\ServerPulse\
Private-key contents are never copied into the config. Only the local path is stored.
Server Pulse keeps its own known_hosts file and uses:
StrictHostKeyChecking=accept-new
For higher-assurance environments, verify and pre-populate host fingerprints before the first connection.
You can launch the source version with fake data and no network access:
python app.py --demoThe screenshot in this README was captured from that mode. It contains no real infrastructure details.
Requirements:
- Windows 11;
- Python 3.11+;
- PyInstaller for building the standalone EXE.
Run:
python -m pip install pyinstaller
python -m unittest discover -s tests -v
.\build.ps1The executable will be written to:
dist\ServerPulse.exe
An Inno Setup script is also included in installer/ServerPulse.iss.
A sanitized example is available in config.example.json.
The real config.json, private keys, known_hosts, build output, and common secret file patterns are excluded by .gitignore.
Current defaults:
| Metric | Warning | Overload |
|---|---|---|
| CPU | 80% | 92% |
| RAM | 82% | 92% |
| Disk | 85% | 94% |
Green means normal, amber means high load, and red means overload.
Server Pulse is intentionally small. It is not trying to replace Grafana, Zabbix, Netdata, or Prometheus. It is a desktop glance view for a couple of Linux machines.
Possible future work:
- more than two server cards;
- optional tray mode;
- notifications for sustained overload or offline state;
- signed Windows binaries;
- customizable thresholds;
- compact vertical layout.
Bug reports and pull requests are welcome. Please do not include real credentials, private keys, or sensitive infrastructure details in issues.
See CONTRIBUTING.md.
MIT. See LICENSE.
