Lean cross-platform monitoring agent: terminal + web dashboard, Prometheus metrics, and a security panel (firewall, open ports, failed auth).
Project description
SysDock 🚀
Built and independently maintained by Kavy Vachhani
Modern cross-platform monitoring agent — Linux, macOS, and Windows — with a live terminal dashboard, Docker metrics, and pip-installable CLI.
⚡ What is SysDock?
SysDock is a lightweight, zero-configuration monitoring tool for Linux, macOS, and Windows. It runs completely in the terminal and provides real-time insights into your system's performance, Docker containers, and live firewall rules.
Think of it as htop + docker stats + ufw status rolled into one beautiful dashboard, running natively on any platform!
pipx install sysdock
sysdock # opens the live dashboard instantly
✨ Features
- 🖥 Live Terminal Dashboard — Monitor CPU per-core, RAM, disk, network throughput, processes, and security.
- 🐳 Laser-Accurate Docker Metrics — CPU %, true memory usage (correctly subtracting page caching), and network I/O per container exactly matching the
docker statsformula. - 📊 htop-Grade Accuracy — CPU sampled perfectly at precise intervals; RAM utilizes the authentic
htopfree/buffers/cached formula. - 🛡️ Active Firewall & Security Panel — Live UFW (Uncomplicated Firewall) status, permitted port rules, SSH failures, and
fail2bantracking directly on the dashboard. - 🌐 Built-in HTTP API — Instantly export metrics as a JSON snapshot or via a live SSE (Server-Sent Events) network stream without external agents.
- 🛠 Zero Configuration — Works cleanly on almost any Linux distribution with Python 3.6+. No heavy daemons needed.
📦 Installation
We highly recommend using pipx (or a standard pip environment) for clean installation:
# Recommended standard install
pipx install sysdock
# Install with native Docker SDK (richer container stats)
pipx install "sysdock[docker]"
# Upgrade to the latest version
pipx upgrade sysdock
Note: If pipx is not available on your system, standard pip install sysdock works beautifully as well.
💻 Native App Installers (macOS, Windows, Linux)
Download the latest pre-built native installer directly from GitHub Releases:
| Platform | Installer | How to Install |
|---|---|---|
| 🍎 macOS | SysDock_macOS.pkg |
Double-click the .pkg — installs SysDock.app into /Applications |
| 🐧 Linux | sysdock_linux.deb |
sudo dpkg -i sysdock_linux.deb |
| 🪟 Windows | SysDock_Windows.zip |
Extract the zip, run sysdock.exe |
🍎 macOS Step-by-Step
- Download
SysDock_macOS.pkgfrom Releases - Double-click it to run the macOS Installer
- SysDock.app is installed into your
/Applicationsfolder - Open it from Launchpad or Spotlight — it launches its own window!
🪟 Windows Step-by-Step
- Download
SysDock_Windows.zipfrom Releases - Extract the zip file
- Double-click
sysdock.exeinside the extracted folder — no installation required!
🐧 Linux (Debian/Ubuntu)
wget https://github.com/Kavyvachhani/SysDock/releases/latest/download/sysdock_linux.deb
sudo dpkg -i sysdock_linux.deb
sysdock
Native installers are automatically built and published to GitHub Releases on every version tag.
🚀 Quick Reference
sysdock # open live dashboard (default)
sysdock dash # same as above
sysdock web # serve web dashboard + JSON API + live stream on 127.0.0.1:8787
sysdock status # one-shot snapshot (rich table)
sysdock status --json # full snapshot as JSON
sysdock status --top 20 # show more processes
sysdock status --no-docker # skip Docker collection
sysdock check # report detected capabilities (--json for raw)
sysdock version # print version
sysdock install # install as a systemd background service (requires root)
sysdock uninstall # remove background service (requires root)
📡 Web Dashboard & HTTP API
sysdock web serves a built-in dashboard, a JSON snapshot API, a live SSE
stream, and a Prometheus endpoint — all from a single shared snapshot (N clients
never trigger N collections). It uses the Python standard library only; no web
framework is pulled in.
sysdock web # 127.0.0.1:8787 — loopback only, no auth needed
sysdock web --host 0.0.0.0 # expose it — a bearer token is generated & printed once
sysdock web --port 9000 --no-metrics
| Endpoint | Description |
|---|---|
GET / |
Built-in web dashboard (HTML/CSS/JS) |
GET /api/snapshot |
Full JSON snapshot — host, cpu, memory, disk, network, processes, docker, security, gpu |
GET /api/stream |
Server-Sent Events — pushes a live snapshot every ~2 seconds |
GET /metrics |
Prometheus text exposition (disable with --no-metrics) |
GET /health |
Basic {"status": "ok"} check (always unauthenticated) |
Security: binds
127.0.0.1by default. Any non-loopback bind requires a bearer token (auto-generated, printed once, persisted; rotate with--regen-token). Responses carry strict security headers and a locked-down CSP, tokens never appear in URLs or logs, and requests are rate-limited per client IP. Terminate TLS with a reverse proxy and restrict the port at your firewall when exposing it.--no-authon a non-loopback bind is for trusted networks only.
🎯 Metric Accuracy Details
SysDock takes immense pride in providing data that you can actually trust:
| Metric | Method |
|---|---|
| CPU % | 1-second delta sampling per core (identical to htop) |
| RAM used | total − free − buffers − cached (authentic htop formula) |
| Docker CPU | (cpu_delta / sys_delta) × nCPUs × 100 (matches docker stats) |
| Docker Memory | Subtracts page caching (inactive_file/cache) from raw memory usage |
🐧 Compatibility
| Distro | Status |
|---|---|
| Ubuntu 20.04 / 22.04 / 24.04 | ✅ Fully Supported |
| Debian 10 / 11 / 12 | ✅ Fully Supported |
| Amazon Linux 2 / 2023 | ✅ Fully Supported |
| CentOS / RHEL (7 / 8 / 9) | ✅ Fully Supported |
| Alpine / Arch Linux | ✅ Fully Supported |
Cross-platform (Linux, macOS, Windows); requires Python 3.9 – 3.13.
💼 License & Links
- PyPI Package: pypi.org/project/sysdock
- Source Code: github.com/Kavyvachhani/SysDock
- Issue Tracker: github.com/Kavyvachhani/SysDock/issues
MIT License © 2026 built by Kavy Vachhani
Project details
Release history Release notifications | RSS feed
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 sysdock-2.0.0.tar.gz.
File metadata
- Download URL: sysdock-2.0.0.tar.gz
- Upload date:
- Size: 79.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
755d4a9a245093291f3e8cc463525e093c097b4f7afd5e380d85286aa409cf1e
|
|
| MD5 |
5879bb36bb8dba03fbbf2f23dc30650f
|
|
| BLAKE2b-256 |
d0fe8fac425124c4c3574625beb9f3899e54297851b2b0e07cf27787cb8021d2
|
Provenance
The following attestation bundles were made for sysdock-2.0.0.tar.gz:
Publisher:
workflow.yml on Kavyvachhani/SysDock
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sysdock-2.0.0.tar.gz -
Subject digest:
755d4a9a245093291f3e8cc463525e093c097b4f7afd5e380d85286aa409cf1e - Sigstore transparency entry: 1845920108
- Sigstore integration time:
-
Permalink:
Kavyvachhani/SysDock@520bdd0cdc5ef37bc996d2060d3bba7036be35de -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/Kavyvachhani
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@520bdd0cdc5ef37bc996d2060d3bba7036be35de -
Trigger Event:
push
-
Statement type:
File details
Details for the file sysdock-2.0.0-py3-none-any.whl.
File metadata
- Download URL: sysdock-2.0.0-py3-none-any.whl
- Upload date:
- Size: 94.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d3b0d9e76c2627c3d1ead2f7a26ae07baae822fd7c843e54c34837d5b43f9d0
|
|
| MD5 |
52f41922f187dacbc0fd3cfefaf30b8c
|
|
| BLAKE2b-256 |
d1f154f4c4380537fa04372ab88bb6153af166c637c78e718879bb870664e143
|
Provenance
The following attestation bundles were made for sysdock-2.0.0-py3-none-any.whl:
Publisher:
workflow.yml on Kavyvachhani/SysDock
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sysdock-2.0.0-py3-none-any.whl -
Subject digest:
3d3b0d9e76c2627c3d1ead2f7a26ae07baae822fd7c843e54c34837d5b43f9d0 - Sigstore transparency entry: 1845921867
- Sigstore integration time:
-
Permalink:
Kavyvachhani/SysDock@520bdd0cdc5ef37bc996d2060d3bba7036be35de -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/Kavyvachhani
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@520bdd0cdc5ef37bc996d2060d3bba7036be35de -
Trigger Event:
push
-
Statement type: