Lean cross-platform monitoring agent for the terminal and native app: live dashboard, baseline-aware anomaly insights, persistent history, 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, baseline-aware anomaly insights, and a persistent history it remembers. Terminal & native-app only: no server, no open port.
โก 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 measured as a true delta between refreshes (never a misleading instantaneous 0%); RAM utilizes the authentic
htopfree/buffers/cached formula. - ๐ก๏ธ Cross-Platform Security Panel โ One normalized firewall / open-ports / failed-auth view on every OS: Linux (UFW โ nftables โ iptables,
fail2ban, journald/auth.log), macOS (Application Firewall viasocketfilterfw, unified-log auth failures), and Windows (Get-NetFirewallProfile, Security-log event 4625). A capability that isn't present degrades cleanly to "unavailable โ reason", never a crash. - ๐ Baseline-Aware Anomaly Insights โ Unlike fixed-threshold monitors, SysDock learns what's normal for this machine and flags what's unusual โ spikes, sustained pressure, and slow leaks โ and names the culprit process (e.g. โCPU 94% now vs ~18% typical ยท likely ffmpeg (pid 8821)โ).
sysdock insights, plus a live band in the dashboard. - ๐ง Its Own Memory โ SysDock persists a lightweight local history (standard-library SQLite, no daemon) so it can show real trends, baselines, and peaks over the last hour/day/week โ not just the instantaneous value.
sysdock historyrenders min/avg/max + sparklines per metric. - ๐ Zero Configuration โ Runs out of the box on Linux, macOS, and Windows with Python 3.9+. No heavy daemons, no config files.
๐ฆ 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 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 insights # flag anomalies vs. this machine's learned baseline
sysdock insights --json # findings as JSON
sysdock record # headless recorder โ builds history (no server/browser)
sysdock record --interval 10 # sample every 10s
sysdock rewind --peak cpu # time-travel to the worst CPU moment on record
sysdock rewind --ago 10m # what was running 10 minutes ago
sysdock rewind 14:30 # โฆat 14:30 today
sysdock history # show recorded trends (its own memory): min/avg/max + sparklines
sysdock history --window 7d # summarise the last 7 days
sysdock history --json # raw history summary as JSON
sysdock history --clear # wipe the local history store
sysdock check # report detected capabilities (--json for raw)
sysdock version # print version
sysdock install # install the headless recorder as a background service (root)
sysdock uninstall # remove background service (requires root)
๐ Anomaly Insights (what stateless monitors can't do)
htop / btop / glances color a value red at a fixed threshold โ they have no memory, so they can't tell you whether what you're seeing right now is unusual for this machine. SysDock keeps a persistent baseline and turns it into plain-language, actionable findings โ including which process is responsible.
sysdock insights # evaluate the current reading vs. the learned baseline
sysdock insights --json # machine-readable findings
It detects:
- Spikes โ a reading that is both statistically unusual (z-score over the metric's own spread) and materially above its baseline, with the culprit process attributed (e.g. โCPU 94% now vs ~18% typical ยท likely ffmpeg (pid 8821, 190% CPU)โ).
- Sustained pressure โ chronically high averages, not just transient blips.
- Slow upward creep on memory/swap that looks like a leak โ invisible to a threshold monitor until it's already on fire.
- Cross-subsystem correlation โ when two subsystems are anomalous together, it names the root cause: RAM + swap โ "system is paging", CPU + disk โ "likely I/O-bound".
The same findings appear as a live Insights band in the terminal dashboard (alongside per-metric sparklines of the recent trend). The engine is conservative: it stays quiet until it has a trustworthy baseline and only speaks when a move is genuinely abnormal โ so no alert fatigue.
โช Time-travel (flight recorder)
SysDock records the top processes alongside every metric sample, so you can rewind to a past spike and see what was running then โ something no stateless monitor (htop/btop/glances) can do, because they keep no history.
sysdock rewind --peak cpu # jump straight to the worst CPU moment on record
sysdock rewind --ago 10m # reconstruct the system 10 minutes ago
sysdock rewind 03:14 # โฆat 03:14 today (when that alert fired)
It reconstructs the metrics and the process table for that instant, bounded so it never borrows a process list from a different time.
Terminal & native app only โ no browser. SysDock runs in your terminal or as a native app window; there is no web server, no open port, and nothing to expose. History is built locally by
sysdock record(or eachsysdock status).
๐ง Its Own Memory (Persistent History)
Most terminal monitors are amnesiac โ they only ever show now. SysDock keeps a small local SQLite database (standard library only, no daemon) and folds each snapshot into it, so it can tell you what normal looks like on this machine.
sysdock history # trends over the last 24h (min/avg/max + sparklines)
sysdock history --window 7d # the last week
sysdock history --json # machine-readable summary
History accrues automatically whenever sysdock record runs (continuously) or
each time you run sysdock status. The database is bounded by automatic retention
(7 days) and a hard row cap, so it stays lightweight forever. It lives at:
| Platform | Location |
|---|---|
| ๐ง Linux | $XDG_DATA_HOME/sysdock/history.db (default ~/.local/share/sysdock/) |
| ๐ macOS | ~/Library/Application Support/sysdock/history.db |
| ๐ช Windows | %LOCALAPPDATA%\sysdock\history.db |
Override the location with
SYSDOCK_DATA_DIR. Wipe it any time withsysdock history --clear.
๐ฏ Metric Accuracy Details
SysDock takes immense pride in providing data that you can actually trust:
| Metric | Method |
|---|---|
| CPU % | delta between refreshes, per core (same model as 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-3.0.1.tar.gz.
File metadata
- Download URL: sysdock-3.0.1.tar.gz
- Upload date:
- Size: 70.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfabdf6c984ec5abc70b94eb35008109f794660a087c7e73870a746c08346ff3
|
|
| MD5 |
f992e6914854cb98c102d656b9407869
|
|
| BLAKE2b-256 |
c5c9151344e07ab522825e6719d0c9b17be80281bedadec8a113f88ac7fefa50
|
Provenance
The following attestation bundles were made for sysdock-3.0.1.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-3.0.1.tar.gz -
Subject digest:
bfabdf6c984ec5abc70b94eb35008109f794660a087c7e73870a746c08346ff3 - Sigstore transparency entry: 2073005347
- Sigstore integration time:
-
Permalink:
Kavyvachhani/SysDock@a81bf7d55b7cd8124aef812fa8102e6a43f1ea95 -
Branch / Tag:
refs/tags/v3.0.1 - Owner: https://github.com/Kavyvachhani
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@a81bf7d55b7cd8124aef812fa8102e6a43f1ea95 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sysdock-3.0.1-py3-none-any.whl.
File metadata
- Download URL: sysdock-3.0.1-py3-none-any.whl
- Upload date:
- Size: 79.3 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 |
6a22da9185622bb4d2824aeed1e1f562069c596d1fcbac51ef4e067e7857eee7
|
|
| MD5 |
33b06a126a5fbd9802e33697251c9a8e
|
|
| BLAKE2b-256 |
bb315703800a24a7e030cd5b6b908656c0d98d9b15d1a4fd5734f155d107ead1
|
Provenance
The following attestation bundles were made for sysdock-3.0.1-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-3.0.1-py3-none-any.whl -
Subject digest:
6a22da9185622bb4d2824aeed1e1f562069c596d1fcbac51ef4e067e7857eee7 - Sigstore transparency entry: 2073005381
- Sigstore integration time:
-
Permalink:
Kavyvachhani/SysDock@a81bf7d55b7cd8124aef812fa8102e6a43f1ea95 -
Branch / Tag:
refs/tags/v3.0.1 - Owner: https://github.com/Kavyvachhani
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@a81bf7d55b7cd8124aef812fa8102e6a43f1ea95 -
Trigger Event:
push
-
Statement type: