Arrow-key terminal system monitor with actionable insights
Project description
SYSVIS
Arrow-key interactive terminal system monitor with real-time insights.
SYSVIS System Monitor OS Windows 11 HOST Vasu-Krishna ⏱ 00h 48m
❯ 1. CPU Cores, frequency, per-core usage, load average
2. Memory RAM & swap usage with pressure insights
3. Disk Partitions, free space, I/O throughput
4. Network Speed, interfaces, IP addresses, WiFi SSID
5. Processes Top CPU & memory consumers
6. GPU Utilisation, VRAM, temperature
7. System Info OS, kernel, uptime, installed applications
8. Live Monitor All key metrics updating in real time
9. Health Report A-F score per category with recommendations
↑ ↓ arrow keys to move, Enter to open, q to quit
Install
pip install sysvis
# Optional: NVIDIA GPU support
pip install sysvis[gpu]
Run
# Arrow-key menu (default)
sysvis
# Or as a module
python -m sysvis
Navigate
| Key | Action |
|---|---|
↑ ↓ |
Move selection |
Enter |
Open view |
q / Esc |
Go back / quit |
Use as a library
# Launch the interactive menu
import sysvis
sysvis.run()
# Collect data silently in your own script
from sysvis import SystemCollector
import time
c = SystemCollector(interval=1.0)
time.sleep(1.5) # wait for first sample
data = c.data
print(f"CPU: {data['cpu'].percent_total:.1f}%")
print(f"RAM: {data['memory'].ram_percent:.1f}%")
print(f"Host: {data['network'].hostname}")
c.stop()
# Open a specific view directly
from sysvis import SystemCollector
from sysvis.views import cpu, memory, health
import time
c = SystemCollector()
time.sleep(1.5)
cpu(c) # live CPU view — blocks until q
memory(c) # live memory view
health(c) # health report
c.stop()
# Use dataclasses with type hints
from sysvis import SystemCollector, CPUMetrics, MemoryMetrics
import time
c = SystemCollector()
time.sleep(1.5)
cpu: CPUMetrics = c.data["cpu"]
mem: MemoryMetrics = c.data["memory"]
print(cpu.cpu_name)
print(cpu.logical_cores)
print(mem.ram_total)
c.stop()
Available views
| Function | Description |
|---|---|
cpu(collector) |
Live CPU — cores, frequency, per-core bars, sparkline |
memory(collector) |
Live RAM + swap bars and insights |
disk(collector) |
Partition table, I/O speed |
network(collector) |
Speeds, IPs, interfaces, sparklines |
processes(collector) |
Top processes by CPU |
gpu(collector) |
GPU util, VRAM, temperature (requires gputil) |
sysinfo(collector) |
OS info + installed apps list |
live(collector) |
Compact overview of all metrics |
health(collector) |
A–F score per category + recommendations |
Data collected
data = collector.data
data["cpu"].percent_total # overall CPU %
data["cpu"].percent_per_core # list of per-core %
data["cpu"].cpu_name # CPU model name
data["cpu"].logical_cores # number of logical cores
data["cpu"].freq_current # current frequency MHz
data["memory"].ram_percent # RAM usage %
data["memory"].ram_free # free RAM in bytes
data["memory"].ram_total # total RAM in bytes
data["memory"].swap_percent # swap usage %
data["disk"].partitions # list of dicts (mountpoint, used, free, total, percent)
data["disk"].read_speed # bytes/sec
data["disk"].write_speed # bytes/sec
data["network"].upload_speed # bytes/sec
data["network"].download_speed # bytes/sec
data["network"].local_ip # local IP address
data["network"].hostname # machine hostname
data["network"].wifi_ssid # connected WiFi name
data["network"].ethernet_ip # ethernet IP
data["network"].wifi_ip # WiFi IP
data["network"].interfaces # list of all interfaces
data["gpu"].available # True if GPU detected
data["gpu"].gpus # list of GPU dicts (load, mem, temp)
data["processes"].top_processes # list of top processes by CPU
data["processes"].total_processes
data["processes"].running
data["processes"].sleeping
data["system"].os_name # e.g. Windows
data["system"].os_release # e.g. 11
data["system"].hostname
data["system"].uptime_seconds
data["system"].installed_apps # list of installed apps
data["system"].installed_apps_count
Project structure
sysvis_lib/
├── sysvis/
│ ├── __init__.py ← public API: SystemCollector, run()
│ ├── __main__.py ← python -m sysvis
│ ├── collectors/
│ │ ├── __init__.py
│ │ └── system.py ← threaded non-blocking psutil collectors
│ └── views/
│ ├── __init__.py ← exports all 9 view functions
│ ├── _helpers.py ← bar, spark, hb, getch, clear …
│ ├── menu.py ← arrow-key interactive menu
│ ├── cpu.py
│ ├── memory.py
│ ├── disk.py
│ ├── network.py
│ ├── processes.py
│ ├── gpu.py
│ ├── sysinfo.py
│ ├── live.py
│ └── health.py
├── pyproject.toml
├── setup.py
└── README.md
Requirements
- Python 3.8+
rich >= 13psutil >= 5.9py-cpuinfo >= 9— better CPU name detectiongputil(optional) — NVIDIA GPU panel
License
MIT
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
sysvis-1.1.1.tar.gz
(22.1 kB
view details)
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
sysvis-1.1.1-py3-none-any.whl
(26.3 kB
view details)
File details
Details for the file sysvis-1.1.1.tar.gz.
File metadata
- Download URL: sysvis-1.1.1.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee04b09c8f670bcf4d70899fe0763ca19fb81aa1f9b65f4e81f33a103894ecfb
|
|
| MD5 |
6605eb587d0fe60b20498ea2d57a32c9
|
|
| BLAKE2b-256 |
baa450315756af3a844982d6ef38c9ff7061af7f2a03882ec898e3452548b09b
|
File details
Details for the file sysvis-1.1.1-py3-none-any.whl.
File metadata
- Download URL: sysvis-1.1.1-py3-none-any.whl
- Upload date:
- Size: 26.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e14640aeae78b969764b799509b0b72763ffd6c93032613c64c0733686583109
|
|
| MD5 |
9db5bd402bd4b804df4779d4f82ebae6
|
|
| BLAKE2b-256 |
be85bd04a9bed0389ca4d2ff1823d68a6194d46bc37e24578b3f9f6939b3bc72
|