Skip to main content

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 >= 13
  • psutil >= 5.9
  • py-cpuinfo >= 9 — better CPU name detection
  • gputil (optional) — NVIDIA GPU panel

License

MIT

Project details


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.0.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sysvis-1.1.0-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file sysvis-1.1.0.tar.gz.

File metadata

  • Download URL: sysvis-1.1.0.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for sysvis-1.1.0.tar.gz
Algorithm Hash digest
SHA256 3efbf2ed5e99e7ca97e5838e8f1deef1fee25b2262b567f8d8aaa1b27a448a42
MD5 f65ebfd05ddad70fb5386d53d34e0630
BLAKE2b-256 5d9a0f8ea7c615db1dfed36d292f49af89c0d3b443a2662d93bed4ef44c01974

See more details on using hashes here.

File details

Details for the file sysvis-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: sysvis-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for sysvis-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c4008c5483ac16bc872523ab6b07eb1a1e747a510ff1d570fa4d2232a081c91f
MD5 ae63bd3f0118ba81b6915bd76c56d7fa
BLAKE2b-256 da88d7ed425480aa75c5d275f6852daac8861f9c68568921a509574bfbc65111

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page