A terminal UI that shows live network interface bandwidth and top IP talkers.
![screenshot not included yet]
- 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
- Linux only — reads from
/proc/net/devand/sys/class/net/ - A terminal with Unicode and color support
- Optional:
sudofor per-IP conntrack data (most useful feature)
If you don't have Rust installed, run this:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shThen restart your shell or run:
source ~/.cargo/envgit clone https://github.com/YOUR_USERNAME/netmon-tui.git
cd netmon-tui
cargo runFor the full experience with per-IP data:
sudo cargo runCargo will download dependencies and build everything on the first run. Subsequent runs will be much faster.
| Key | Action |
|---|---|
q or Esc |
Quit |
s |
Toggle simple / full view |
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.
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
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.