| Crates.io | rustnet-monitor |
| lib.rs | rustnet-monitor |
| version | 0.18.0 |
| created_at | 2025-09-12 07:42:08.762493+00 |
| updated_at | 2026-01-07 19:09:53.144521+00 |
| description | A cross-platform network monitoring terminal UI tool built with Rust |
| homepage | https://github.com/domcyrus/rustnet |
| repository | https://github.com/domcyrus/rustnet |
| max_upload_size | |
| id | 1835287 |
| size | 8,918,561 |
A cross-platform network monitoring tool built with Rust. RustNet provides real-time visibility into network connections with detailed state information, connection lifecycle management, deep packet inspection, and a terminal user interface.

ESTABLISHED, SYN_SENT, TIME_WAIT), QUIC states (QUIC_INITIAL, QUIC_HANDSHAKE, QUIC_CONNECTED), DNS states, SSH states, and activity-based UDP statesport:, src:, dst:, sni:, process:, state:)RustNet uses kernel eBPF programs by default on Linux for enhanced performance and lower overhead process identification. However, this comes with important limitations:
Process Name Limitations:
comm field, which is limited to 16 charactersReal-world Examples:
Fallback Behavior:
To disable eBPF and use procfs-only mode, build with:
cargo build --release --no-default-features
See ARCHITECTURE.md for technical information.
RustNet provides real-time network interface statistics across all supported platforms:
i): Detailed table with comprehensive metrics for all interfacesSee USAGE.md for detailed documentation on interpreting interface statistics and platform-specific behavior.
Metrics Available:
Stats are collected every 2 seconds in a background thread with minimal performance impact.
Homebrew (macOS / Linux):
brew tap domcyrus/rustnet
brew install rustnet
Ubuntu (25.10+):
sudo add-apt-repository ppa:domcyrus/rustnet
sudo apt update && sudo apt install rustnet
Fedora (42+):
sudo dnf copr enable domcyrus/rustnet
sudo dnf install rustnet
Arch Linux:
sudo pacman -S rustnet
From crates.io:
cargo install rustnet-monitor
Windows (Chocolatey):
# Run in Administrator PowerShell
choco install rustnet
Other platforms:
Packet capture requires elevated privileges:
# Quick start (all platforms)
sudo rustnet
# Linux: Grant capabilities to run without sudo (recommended)
sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon=eip' $(which rustnet)
rustnet
Common options:
rustnet -i eth0 # Specify network interface
rustnet --show-localhost # Show localhost connections
rustnet --resolve-dns # Enable reverse DNS lookups
rustnet -r 500 # Set refresh interval (ms)
See INSTALL.md for detailed permission setup and USAGE.md for complete options.
| Key | Action |
|---|---|
q |
Quit (press twice to confirm) |
Ctrl+C |
Quit immediately |
x |
Clear all connections (press twice to confirm) |
Tab |
Switch between tabs |
i |
Toggle interface statistics view |
↑/k ↓/j |
Navigate up/down |
g G |
Jump to first/last connection |
Enter |
View connection details |
Esc |
Go back or clear filter |
c |
Copy remote address |
p |
Toggle service names/ports |
d |
Toggle hostnames/IPs (with --resolve-dns) |
s S |
Cycle sort columns / toggle direction |
a |
Toggle process grouping |
Space |
Expand/collapse process group |
←/→ |
Collapse/expand group |
r |
Reset view (grouping, sort, filter) |
/ |
Enter filter mode |
h |
Toggle help |
See USAGE.md for detailed keyboard controls and navigation tips.
Quick filtering examples:
/google # Search for "google" anywhere
/port:443 # Filter by port
/process:firefox # Filter by process
/state:established # Filter by connection state
/dport:443 sni:github.com # Combine filters
Sorting:
s to cycle through sortable columns (Protocol, Address, State, Service, Bandwidth, Process)S (Shift+s) to toggle sort directions until "Down/Up ↓" appears (sorts by combined up+down speed)See USAGE.md for complete filtering syntax and sorting guide.
Keyword filters:
port:44 - Ports containing "44" (443, 8080, 4433)sport:80 - Source ports containing "80"dport:443 - Destination ports containing "443"src:192.168 - Source IPs containing "192.168"dst:github.com - Destinations containing "github.com"process:ssh - Process names containing "ssh"sni:api - SNI hostnames containing "api"ssh:openssh - SSH connections using OpenSSHstate:established - Filter by protocol stateproto:tcp - Filter by protocol typeState filtering:
state:syn_recv - Half-open connections (SYN flood detection)state:established - Established connections onlystate:quic_connected - Active QUIC connectionsstate:dns_query - DNS query connectionsCombined examples:
sport:80 process:nginx - Nginx connections from port 80dport:443 sni:google.com - HTTPS to Googleprocess:firefox state:quic_connected - Firefox QUIC connectionsdport:22 ssh:openssh state:established - Established OpenSSH connectionsRustNet uses smart timeouts and visual warnings before removing connections:
Visual staleness indicators:
Protocol-aware timeouts:
Example: An HTTP connection turns yellow at 7.5 min, red at 9 min, and is removed at 10 min.
See USAGE.md for complete timeout details.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines on how to contribute.
See CONTRIBUTORS.md for a list of people who have contributed to this project.
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.
tshark/wireshark/tcpdump, sniffnet, netstat, ss, and iftopSome sections have been moved to dedicated files for better organization: