Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

netmon-tui

A terminal UI that shows live network interface bandwidth and top IP talkers.

![screenshot not included yet]

Features

  • Real-time bandwidth monitoring for all network interfaces
  • Sparkline graphs showing recent RX/TX history (last 60 seconds)
  • Utilization bars with color-coded warnings (green → yellow → red)
  • Per-IP talker breakdown when conntrack is available
  • Simple mode (top 2 interfaces) and full mode (adds top talkers)
  • Error and drop counters highlighted when something is wrong

Requirements

  • Linux only — reads from /proc/net/dev and /sys/class/net/
  • A terminal with Unicode and color support
  • Optional: sudo for per-IP conntrack data (most useful feature)

Getting Started

1. Install Rust

If you don't have Rust installed, run this:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Then restart your shell or run:

source ~/.cargo/env

2. Clone and run

git clone https://github.com/YOUR_USERNAME/netmon-tui.git
cd netmon-tui
cargo run

For the full experience with per-IP data:

sudo cargo run

Cargo will download dependencies and build everything on the first run. Subsequent runs will be much faster.

3. Controls

Key Action
q or Esc Quit
s Toggle simple / full view

What you'll see

Header bar shows total bandwidth across all interfaces (RX ↓ and TX ↑).

Interface panel shows each interface with:

  • Name, link status (UP/DOWN), and link speed
  • Sparkline for recent RX history (cyan) and TX history (magenta)
  • Current bandwidth in bps/K/M/G
  • Utilization bar that changes color as load increases

Bottom bar shows interface status indicators, total error/drop counts, and total active flows.

Full view also shows a top talkers section with per-IP bandwidth bars and connection counts.

Project Structure

netmon-tui/
├── Cargo.toml          # Rust project config and dependencies
├── src/
│   ├── main.rs         # Terminal setup and event loop
│   ├── app.rs          # Application state and data processing
│   ├── collector.rs    # Reads /proc/net/dev and conntrack data
│   └── ui.rs           # Renders the TUI using ratatui
└── README.md           # This file

Notes

This was my first Rust project, written on a machine that had never seen Rust before. It's not going to win any code beauty contests, but it works. If something breaks, feel free to open an issue.

About

Rust Network TUI monitoring application

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages