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.1.tar.gz (22.1 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.1-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

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

Hashes for sysvis-1.1.1.tar.gz
Algorithm Hash digest
SHA256 ee04b09c8f670bcf4d70899fe0763ca19fb81aa1f9b65f4e81f33a103894ecfb
MD5 6605eb587d0fe60b20498ea2d57a32c9
BLAKE2b-256 baa450315756af3a844982d6ef38c9ff7061af7f2a03882ec898e3452548b09b

See more details on using hashes here.

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

Hashes for sysvis-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e14640aeae78b969764b799509b0b72763ffd6c93032613c64c0733686583109
MD5 9db5bd402bd4b804df4779d4f82ebae6
BLAKE2b-256 be85bd04a9bed0389ca4d2ff1823d68a6194d46bc37e24578b3f9f6939b3bc72

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