GitHunt
TH

SysOracle is a fast, scriptable Linux system monitoring tool written in Rust and powered by Lua.

SysOracle ๐Ÿ”ฎ

SysOracle is a modern, cross-platform terminal system monitor with real-time graphs, Lua-based alerts, and a beautiful terminal UI. Built in Rust for performance and reliability.

Platform
Language
License

โœจ Features

  • High-performance Rust core - Minimal CPU/memory footprint
  • Real-time graphs - Smooth scrolling CPU & memory history charts
  • Modern TUI - Clean, btop/htop inspired interface
  • Theme support - Dark and light themes (toggle with t)
  • Multiple view modes - Dashboard, CPU-only, Memory-only, Process-only
  • Process management - Browse, sort, and kill processes with confirmation
  • Lua scripting - Programmable alerts and automation
  • Configurable - Adjust refresh rate, history size, and more
  • Network stats - Real-time speed (MB/s) and total bandwidth
  • Keyboard-driven - No mouse required
  • Per-core CPU monitoring - Individual core usage bars with color coding (v2.0)
  • Sort toggle - Switch between CPU/Memory sorting (v2.0)
  • Live network speed - Real-time MB/s transfer rates (v2.0)
  • GPU monitoring - NVIDIA GPU usage and VRAM tracking (v3.0)
  • Disk usage - Multi-disk space monitoring with visual bars (v3.0)
  • System uptime - Live uptime display in header (v3.0)
  • Responsive layouts - Auto-adapts to terminal size (FULL/COMPACT/MINIMAL) (v3.0)

๐ŸŽฎ Quick Start

Installation

Prerequisites

  • Rust (>= 1.75)
  • Cargo
  • (Optional) NVIDIA drivers for GPU monitoring

Build & Run

Standard build:

git clone https://github.com/thulasiramk-2310/sysoracle.git
cd sysoracle
cargo build --release
./target/release/sysoracle

With GPU support:

cargo build --release --features gpu

Or run directly in development mode:

cargo run

๐ŸŽน Keyboard Shortcuts

Key Action
a Show all panels (dashboard view)
c CPU-only fullscreen view (with per-core bars)
m Memory-only fullscreen view
p Process-only fullscreen view
s Toggle sort mode (CPU โ‡„ Memory)
t Toggle theme (Dark/Light)
โ†‘ / โ†“ Navigate process list
k Kill selected process (with confirmation)
r Refresh/reload
q Quit application

๐Ÿ–ผ๏ธ UI Layout

Dashboard View (Mode: ALL)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ SysOracle | OS: Windows | View: ALL | Uptime: 5h 23m | Time: 14:32:15 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CPU 45.2% โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€ MEM 68% โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘  โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘ โ”‚      โ”‚
โ”‚ โ”‚ 4 cores @ 3.6 GHz              โ”‚ โ”‚ 5.2 / 16 GB          โ”‚      โ”‚
โ”‚ โ”‚ โ–โ–‚โ–ƒโ–„โ–…โ–„โ–ƒโ–‚โ–โ–‚โ–ƒโ–„โ–…โ–†โ–…โ–„โ–ƒโ–‚โ–โ–‚โ–ƒโ–„โ–…โ–„โ–ƒโ–‚  โ”‚ โ”‚ โ–‚โ–ƒโ–„โ–…โ–„โ–ƒโ–‚โ–โ–‚โ–ƒโ–„โ–…โ–„โ–ƒโ–‚โ– โ”‚      โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Network โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€ GPU (NVIDIA) โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ RX โ†“ 15.2 MB/s (1234 MB total)    โ”‚ โ”‚ Usage: 45%            โ”‚ โ”‚
โ”‚ โ”‚ TX โ†‘ 3.4 MB/s (456 MB total)      โ”‚ โ”‚ VRAM: 2.1 / 8 GB      โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Disks โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚ โ”‚ C:\ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 256 / 512 GB (50%)          โ”‚     โ”‚
โ”‚ โ”‚ D:\ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 400 / 2000 GB (20%)         โ”‚     โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Processes (โ†‘โ†“ navigate | k kill) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚ โ”‚ PID     NAME                CPU%    MEM%                 โ”‚     โ”‚
โ”‚ โ”‚ 1234    chrome              15.2    8.4                  โ”‚     โ”‚
โ”‚ โ”‚ 5678    vscode              12.1    12.3                 โ”‚     โ”‚
โ”‚ โ”‚ 9012    rust-analyzer       8.5     4.2                  โ”‚     โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Alerts โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚ โ”‚ โœ“ No active alerts                                       โ”‚     โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ a All | c CPU | m Memory | p Process | s Sort | t Theme | q Quit โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

CPU-Only View (Press c)

Full-screen CPU usage graph with:

  • Overall CPU percentage and history graph
  • Per-core usage bars with individual percentages
  • Color-coded bars (green/yellow/red based on load)
  • Scrolling 60-point history

Memory-Only View (Press m)

Full-screen memory usage showing:

  • Used/total memory in GB and percentage
  • Real-time consumption graph
  • Color-coded gauge visualization
  • 60-point scrolling history

Process-Only View (Press p)

Expanded process table with:

  • Full process list with PID, name, CPU%, and memory%
  • Sortable by CPU or memory (toggle with s)
  • Kill process capability (select and press k)
  • Confirmation dialog for safety

GPU Monitoring (v3.0)

When built with --features gpu, displays:

  • NVIDIA GPU utilization percentage
  • VRAM usage (used/total in GB)
  • Real-time monitoring (requires NVIDIA drivers)
  • Graceful fallback if GPU not detected

Disk Usage (v3.0)

Shows all mounted disks with:

  • Drive letters/mount points
  • Visual usage bars (color-coded)
  • Used/total space in GB
  • Percentage utilization

Responsive Layouts (v3.0)

Auto-adapts to terminal size:

  • FULL (โ‰ฅ40 lines): All panels with graphs
  • COMPACT (25-39 lines): Condensed layout
  • MINIMAL (<25 lines): Essential info only

๐Ÿ“ Configuration

config.toml

Create or edit config.toml in the project root:

# SysOracle Configuration File

[general]
# Refresh rate in milliseconds (default: 800)
refresh_rate = 800

[lua]
# Directory containing Lua alert rules
rules_dir = "lua/rules"

[ui]
# Show process list in dashboard
show_processes = true

# History size for CPU/Memory graphs (default: 60)
history_size = 60

๐Ÿค– Lua Scripting

SysOracle supports custom Lua scripts for programmable alerts and automation.

Available Variables

cpu.usage        -- Current CPU usage percentage (0-100)
mem.used         -- Memory used in bytes
mem.total        -- Total memory in bytes
mem.used_percent -- Memory usage percentage (0-100)

Available Functions

notify(message)  -- Display an alert message
run(command)     -- Execute a shell command

Example Rules

CPU Alert (lua/rules/cpu.lua)

if cpu.usage > 80 then
  notify("โš  CPU usage above 80%")
  run("notify-send 'SysOracle: High CPU usage'")
end

Memory Alert (lua/rules/memory.lua)

if mem.used_percent > 85 then
  notify("โš  Memory usage critical")
  run("notify-send 'SysOracle: High memory usage'")
end

Advanced Rule

-- Alert if CPU is high for extended period
local high_cpu_count = high_cpu_count or 0

if cpu.usage > 75 then
  high_cpu_count = high_cpu_count + 1
  if high_cpu_count > 10 then
    notify("โš  Sustained high CPU usage detected")
    run("echo 'High CPU' >> /tmp/sysoracle.log")
  end
else
  high_cpu_count = 0
end

Rules are automatically loaded from lua/rules/ directory.

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚          Terminal UI (ratatui)          โ”‚
โ”‚  Dashboard โ€ข Graphs โ€ข Tables โ€ข Themes   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                  โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚            Rust Core                    โ”‚
โ”‚  App Logic โ€ข Metrics โ€ข Event Handling   โ”‚
โ”‚  Timer-based Refresh โ€ข Selective Update โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚               โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Lua Engine   โ”‚   โ”‚  Alert Engine     โ”‚
โ”‚  Rules โ€ข Auto โ”‚   โ”‚  Thresholds       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚               โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚      System Metrics Collection          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ sysinfo: CPU โ€ข Memory โ€ข Net โ€ข Process   โ”‚
โ”‚ nvml-wrapper: GPU (NVIDIA) โ€ข VRAM       โ”‚
โ”‚ Disks API: Multi-disk space monitoring  โ”‚
โ”‚ chrono: System time & uptime tracking   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ› ๏ธ Tech Stack

Component Technology
Language Rust 2021
TUI Framework ratatui + crossterm
System Metrics sysinfo
GPU Monitoring nvml-wrapper (optional)
Time Handling chrono
Scripting Lua 5.4 (mlua)
CLI clap
Config TOML
Async Runtime tokio

๐Ÿ“‚ Project Structure

sysoracle/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.rs        # Entry point & initialization
โ”‚   โ”œโ”€โ”€ app.rs         # Application state & event loop
โ”‚   โ”œโ”€โ”€ tui.rs         # UI rendering & layouts
โ”‚   โ”œโ”€โ”€ metrics.rs     # System metrics collection
โ”‚   โ”œโ”€โ”€ alert.rs       # Alert engine
โ”‚   โ”œโ”€โ”€ lua_engine.rs  # Lua runtime & rule execution
โ”‚   โ”œโ”€โ”€ config.rs      # Configuration loading
โ”‚   โ””โ”€โ”€ cli.rs         # Command-line interface
โ”‚
โ”œโ”€โ”€ lua/
โ”‚   โ””โ”€โ”€ rules/
โ”‚       โ”œโ”€โ”€ cpu.lua    # CPU monitoring rules
โ”‚       โ””โ”€โ”€ memory.lua # Memory monitoring rules
โ”‚
โ”œโ”€โ”€ config.toml        # Configuration file
โ”œโ”€โ”€ Cargo.toml         # Rust dependencies
โ””โ”€โ”€ README.md          # This file

๐ŸŽฏ Use Cases

  • Development monitoring - Watch system resources while coding
  • Server monitoring - Lightweight alternative to htop/btop
  • Learning Rust - Well-structured example of TUI development
  • Scriptable alerts - Custom notifications and automation
  • Cross-platform - Works on Linux, macOS, and Windows

โšก Performance

SysOracle is highly optimized for minimal system overhead:

  • Idle CPU usage: ~0.1-0.5% (90-95% reduction from earlier versions)
  • Memory footprint: ~5-10 MB
  • Timer-based refresh: Configurable intervals (default: 800ms)
  • Selective system refresh: Only refreshes metrics needed for current view
  • Responsive input: 50ms polling for instant keyboard response
  • Efficient rendering: Smart redraw triggers, minimal screen updates

The event loop architecture decouples user input from metric collection, ensuring smooth navigation even during intensive system monitoring.

๐Ÿš€ Roadmap

  • Real-time CPU & memory monitoring
  • Process list with sorting
  • Lua-based alert rules
  • Multiple view modes
  • Theme support
  • Scrolling history graphs
  • Network statistics
  • Kill process with confirmation
  • Configuration file support
  • Disk usage monitoring (v3.0)
  • GPU usage tracking (NVIDIA) (v3.0)
  • Export metrics to CSV/JSON
  • Remote monitoring via HTTP API
  • Plugin system
  • More Lua API functions

๐Ÿค Contributing

Contributions are welcome! Here's how you can help:

  • ๐Ÿ› Report bugs and issues
  • ๐Ÿ’ก Suggest new features
  • ๐Ÿ”ง Submit pull requests
  • ๐Ÿ“š Improve documentation
  • โœจ Add new Lua rules
  • ๐ŸŽจ Enhance UI design

Development Setup

# Clone the repository
git clone https://github.com/your-username/sysoracle.git
cd sysoracle

# Run in development mode
cargo run

# Run with GPU support
cargo run --features gpu

# Run tests
cargo test

# Build release version
cargo build --release

# Build with GPU monitoring
cargo build --release --features gpu

๐Ÿ“„ License

MIT License - see LICENSE file for details

๐Ÿ‘ฅ Authors

Ravindran S

  • Linux Systems
  • Rust Development
  • Full Stack Development
  • GitHub

Thulasiram K

  • Full Stack Development
  • Python
  • Linux Systems
  • GitHub

Made with โค๏ธ and Rust