Narsil

The Flame of the West · Reforged in Rust

narsil

A System Monitor Reforged

Named after the blade shattered at the dawn of the Third Age
and reforged for a king — narsil is sharper
than the tools that came before it.

cargo install narsil GitHub ↗ crates.io ↗
🦀 Rust ratatui AMD + NVIDIA GPU (Linux & Windows) Linux · Windows · macOS 🌍 EN · DE · FR · ES GPL-3.0

What Narsil Sees

Seven Views. One Kingdom.

Every metric your system holds, rendered in Braille and flame — without ever leaving the terminal. Runs on Linux, Windows and macOS. GPU monitoring is supported on Linux and Windows.

🎨

Split-Colour Gauge Inversion

Every percentage label inside a gauge automatically inverts its colour character-by-character at the fill boundary — so text is always readable, even when the bar sits at exactly 50%. No other terminal monitor does this.

unique to narsil
🗺️

Overview

CPU & RAM gauges, live RX/TX sparklines, and a process list that fills every available line of your terminal.

🧠

CPU

Global usage history rendered in Braille dot art, followed by per-core gauges colour-coded by load intensity.

Braille charts
💾

Memory

RAM and Swap history charts with live GiB usage gauges. See exactly how much of your kingdom's silver remains.

🌐

Network

Combined RX/TX history chart alongside live per-direction throughput — every packet a message from the realm.

💿

Disks

Per-partition usage bars at fixed height, with ▲ ▼ scroll indicators when your vaults exceed the visible height.

scrollable
🔬

Processes

Process table sorted by CPU usage — the lords of the realm and their burdens, always filling the visible height.

🎮

GPU (Linux & Windows)

Per-GPU cards with utilisation and VRAM history charts, live gauges, temperature, and power draw. AMD and NVIDIA supported on Linux; AMD (DXGI) and NVIDIA (NVML) on Windows. Linux requires the amdgpu or NVIDIA proprietary driver.

AMD ✓  NVIDIA ✓

Configurable Refresh Rate

Pass --interval <ms> to tune between low-latency and low-CPU usage. Defaults to 1 000 ms. Key events are processed between ticks with zero busy-waiting — swift and silent as a ranger.

--interval <ms>
🌍

Multilingual UI

English, German, French, and Spanish built in. Language is auto-detected from the OS locale (LANG, LANGUAGE, native API) and overridable with --lang de. Translations are plain TOML files — adding a new language requires no Rust knowledge.

--lang <code>
✦ ᚾ ✦

Forge Your Blade

Installation

Runs on Linux, Windows 10+, and macOS 12+. Rust is only needed for the crates.io and source options. GPU support requires Linux or Windows.

crates.io
crates.io
All platforms · Rust needed
cargo install narsil
Arch Linux
AUR
Arch Linux · 4 packages
yay -S narsil-bin
AppImage
AppImage
Linux x86_64 · self-contained
./narsil-*.AppImage
Windows
Windows
x86_64 · zip from Releases
narsil.exe
🗃️
Tarball
Linux x86_64 · GitHub Releases
tar xzf narsil-*.tar.gz
🔨
Source
All platforms · Rust needed
cargo build --release

The quickest path. Cargo fetches, compiles with full optimisations, and installs the binary to ~/.cargo/bin/. Works on Linux, Windows, and macOS.

cargo install narsil
Make sure ~/.cargo/bin/ is on your $PATH. For NVIDIA GPU support see the NVIDIA support tab.

Four AUR packages cover every combination of source/binary and standard/NVIDIA.

PackageTypeNVIDIA
narsil source
narsil-nvidia source
narsil-bin binary
narsil-nvidia-bin binary
# Prebuilt binary — fastest install yay -S narsil-bin # Or build from source yay -S narsil

Self-contained Linux bundle — no installation needed. Download, make executable, run.

# Download from GitHub Releases, then: chmod +x narsil-*-x86_64.AppImage ./narsil-*-x86_64.AppImage
Two variants per release: narsil-{version}-x86_64.AppImage (standard) and narsil-nvidia-{version}-x86_64.AppImage (with NVIDIA support). Requires a Linux x86_64 system.

→ Latest GitHub Release ↗

Prebuilt Windows x86_64 executable — no Rust, no compiler needed. Download, extract, run in PowerShell or cmd.

# After extracting the zip: .\narsil.exe
Download narsil-{version}-x86_64-windows.zip from GitHub Releases ↗. A NVIDIA variant (narsil-nvidia-…-windows.zip) is also provided.

The GPU tab is compiled into the Windows build and supports AMD GPUs via DXGI and NVIDIA GPUs via NVML (--features nvidia).

Plain Linux tarball — drop the binary wherever you like. No package manager needed.

# Replace VERSION with the actual release tag tar xzf narsil-VERSION-x86_64.tar.gz ./narsil-VERSION/narsil
Download from GitHub Releases ↗. Two variants: narsil-{version}-x86_64.tar.gz (standard) and narsil-nvidia-{version}-x86_64.tar.gz (with NVIDIA support).

Clone and build locally — ideal for development or inspecting the forge.

git clone https://github.com/Pommersche92/narsil cd narsil cargo build --release # Linux / macOS ./target/release/narsil # Windows .\target\release\narsil.exe

Enable NVIDIA GPU monitoring via NVML. Requires proprietary NVIDIA drivers at link time. Supported on Linux and Windows.

# From crates.io cargo install narsil --features nvidia # From source cargo build --release --features nvidia # AUR yay -S narsil-nvidia-bin
The nvidia feature links against libnvidia-ml.so. If the NVML library is absent at link time, the build fails — this is by design.
✦ ᛊ ✦

The Stewards of Silicon

GPU Support

GPU monitoring is supported on Linux and Windows. On Linux, narsil reads deep into the kernel’s sysfs and NVML. On Windows, AMD GPUs are queried via DXGI and NVIDIA via NVML. On macOS the GPU tab is not compiled in; all other tabs work normally.

AMD Discrete
AMD Discrete
amdgpu kernel driver (Linux)
Utilisation VRAM Temperature Power
Fully Supported
AMD APU / iGPU
AMD APU / iGPU
amdgpu kernel driver (Linux)
Utilisation GTT Memory Temperature Power
Fully Supported
AMD (Windows)
AMD Discrete
DXGI 1.4 (Windows)
Utilisation VRAM Temperature Power
Partial Support
NVIDIA
NVIDIA
proprietary + --features nvidia (Linux & Windows)
Utilisation VRAM Temperature Power
Fully Supported
Intel iGPU / Arc
Intel iGPU / Arc
i915 / xe kernel driver
Utilisation Memory Temperature Power
Planned

AMD APU memory figures reflect GTT — system RAM dynamically shared with the GPU. narsil detects this automatically and labels the memory panel GTT instead of VRAM.
On Windows, AMD GPU utilisation, temperature, and power are not available via DXGI; only VRAM budget and usage are reported.

✦ ᛏ ✦

Command the Blade

Keybindings

Tab Next tab (wraps around)
Shift+Tab Previous tab
16 Jump directly to tab (all platforms)
7 Jump to GPU tab (Linux & Windows)
/ l Next tab
/ h Previous tab
/ j Scroll down
/ k Scroll up
q / Ctrl‑C Quit
❖ ᚪ ❖

Speak Every Tongue of Middle-earth

Multilingual UI

narsil detects your OS language automatically and renders the entire interface in your tongue. Pass --lang <code> to override. Translations are plain TOML files — adding a new language needs no Rust knowledge.

enEnglish — default fallback
deDeutsch — German
frFrançais — French
esEspañol — Spanish
🤖

Auto-detection

Reads LANGUAGE, LC_ALL, LC_MESSAGES, LANG in order, then falls back to the native OS locale API (GetUserDefaultLocaleName on Windows, CFLocale on macOS).

🛠️

CLI Override

Force any language at startup: narsil --lang de. Unknown codes fall back to English silently — no crash, no complaint.

📝

Translator-friendly

Strings are plain key = "value" TOML. No Rust, no recompile for the translator. One binary ships all languages — no language-specific builds.

✦ ᚨ ✦

Measured Against Heroes of Old

How does it compare?

The blades that came before, and what sets narsil apart.

Feature top htop gotop ⚔️ narsil
Language CCGo 🦀 Rust
GPU metrics partial AMD + NVIDIA (Linux & Windows)
Braille charts
Per-char label inversion
Disk usage bars
Scroll indicators
Keybinding status bar
Localised UI EN DE FR ES
Log tail panel planned
Alert rules planned
Remote / SSH mode planned
✦ ᛚ ✦

What the Palantír Foretells

Roadmap

🔜 Near-term

🔵 Intel GPU support via i915 / xe sysfs and hwmon
🏷️ AMD APU label fix — GTT vs dedicated VRAM, auto-detected and labelled correctly
DONE
⏱️ Configurable refresh rate via --interval <ms>
DONE
🎨 Built-in colour themes — dark, light, high-contrast

🔧 Medium-term

🔬 Per-process GPU attribution via NVML or DRM fdinfo
🌡️ Temperature history sparklines for CPU and GPU
💨 Fan speed display in GPU card view
💽 Disk I/O throughput — read/write MB/s per device
🔋 Battery & power panel for laptops

🚀 Long-term

📋 Log tail panel with regex highlight rules
🚨 Alert rules with desktop / webhook notifications
🖥️ SSH remote mode — monitor a remote host locally
📼 Session recording & replay for post-mortem analysis
📊 --json / --prometheus export for Grafana