Monitoring system performance from the terminal is essential when diagnosing server performance bottlenecks, tracking resource-intensive background scripts, or monitoring hardware utilisation during software builds. While venerable utilities like top and htop provide reliable instantaneous tabular snapshots of active processes, they lack historical context: you cannot see whether a memory spike began ten seconds ago or has been steadily growing over the last thirty minutes.
To deliver rich temporal insights directly within your terminal console, Zenith provides a modern, Rust-built terminal monitor that combines dynamic process tables with zoomable real-time sparkline graphs. Zenith tracks CPU utilization, memory pressure, disk I/O, network traffic, and includes built-in support for NVIDIA GPU metrics without requiring complex graphical desktop environments. This tutorial covers how to install Zenith on Linux, navigate its zoomable history graphs, filter active processes, and monitor dedicated graphics cards.
What Is Zenith and How Does It Compare to htop?
Zenith bridges the gap between lightweight terminal process lists and full-scale graphical telemetry dashboards like Netdata or Grafana:
- Zoomable Historical Graphs: Visualises performance trends with ASCII and Braille sparklines. You can zoom in or out in real time to inspect trends across minutes, hours, or days.
- Dedicated GPU Telemetry: Automatically detects NVIDIA graphics processors and renders dedicated graphs for GPU core utilisation, VRAM consumption, temperature, and fan speeds.
- Comprehensive Disk & Network Tracking: Breaks down cumulative read/write throughput per physical drive and tracks incoming/outgoing bandwidth per network interface.
- Fast Responsive Navigation: Written in Rust, Zenith runs with minimal CPU overhead, making it well-suited for lightweight VPS instances and high-performance workstations alike.
How to Install Zenith on Linux
Zenith is distributed through pre-compiled static release archives, Cargo, and native package managers.
Method 1: Installing via Cargo
If you have Rust and Cargo configured on your machine, install the standard version with:
cargo install zenith
If your Linux workstation includes an NVIDIA graphics card and proprietary drivers, compile Zenith with NVIDIA GPU telemetry support enabled:
cargo install zenith --features nvidia
Method 2: Downloading Pre-Compiled Static Binaries
For quick installation without the Rust toolchain:
- Download the latest Linux 64-bit release binary from GitHub releases using
curl:curl -sL https://github.com/bvaisvil/zenith/releases/latest/download/zenith-x86_64-unknown-linux-musl.tar.gz | tar xz - Move the compiled executable to your system path:
sudo mv zenith /usr/local/bin/ - Verify installation by checking the application version:
zenith --version
Launching and Navigating the Zenith Interface
Launch the monitor simply by running:
zenith
The screen divides into four primary functional zones: the top panels graph CPU and Memory historical loads, the middle panels plot Disk I/O and Network bandwidth, and the bottom panel provides an interactive, scrollable process table.
Zooming Time Scales in Historical Graphs
The standout feature of Zenith is its dynamic time-scale manipulation:
- Press + (Plus) to zoom in, narrowing the graph’s horizontal time window down to individual seconds.
- Press – (Minus) to zoom out, expanding the visual timeline to inspect resource consumption across hours.
- Press e to toggle historical graph display modes between percentage-based scaling and absolute raw metrics.
Navigating and Managing Processes
Interacting with the process table mimics standard Vim and terminal conventions:
- Up / Down Arrow (or j / k): Scroll through active processes in the process table.
- Tab: Cycle active focus between different system metric panels and the process table.
- / (Slash): Open the interactive filter bar to search for processes by name or user (e.g.,
nginx,python,docker). - p: Toggle process grouping between individual threads and parent process hierarchies.
- d: Send a termination signal (
SIGTERM) to the highlighted process. - q: Exit Zenith and restore your normal terminal shell prompt.
Configuring Launch Options and Refresh Rates
You can customise Zenith’s behaviour using startup command-line flags:
Adjusting Polling Frequency
By default, Zenith evaluates system metrics once per second. To reduce CPU overhead during background server monitoring, set a slower update rate (in milliseconds) with the -r flag:
zenith -r 2000
Hiding Specific Telemetry Panels
If you are monitoring a headless server without wireless cards or auxiliary drives, you can suppress individual metric panels to maximise process table visibility:
zenith --disable-disk --disable-net
Troubleshooting Common Zenith Operational Issues
Keep these technical considerations in mind when running Zenith:
- NVIDIA GPU Metrics Missing: Ensure the proprietary NVIDIA driver kernel modules are loaded and that you installed Zenith compiled with the
--features nvidiaflag. On Wayland or Nouveau open-source drivers, proprietary NVML telemetry queries may be unsupported. - Root Privileges for Granular Process Details: While standard user accounts can run Zenith, inspecting processes owned by root or other system daemons requires launching with administrative privileges:
sudo zenith - Terminal Font Rendering: Zenith renders sparkline curves using Unicode Braille glyphs. If graphs appear as broken rectangular boxes, ensure your terminal emulator uses a font with full Unicode support, such as Cascadia Code, JetBrains Mono, or Fira Code.