Per-program network usage monitor for Linux.
Built with GPUI and Aya. Work in progress.
- stable rust toolchains:
rustup toolchain install stable - nightly rust toolchains:
rustup toolchain install nightly --component rust-src - bpf-linker:
cargo install bpf-linker
More information in the Aya Docs
Build:
cargo build --releasebandmeterd- Service for recording network traffic and writing to database.bandmeter- GUI for displaying network stats.
Create a systemd unit file as /usr/lib/systemd/system/bandmeter.service:
[Unit]
Description=Per-program network usage monitor
[Service]
Environment="DB_DIR=/path/to/db_dir" # will be created if non-existent
ExecStart=/path/to/bandmeterd
Restart=on-failure
[Install]
WantedBy=multi-user.target
Both binaries require a DB_DIR environment variable specifying the directory
where the database file (bandmeter.db) will be written / read.
Start the service:
sudo systemctl start bandmeterStart automatically on boot:
sudo systemctl enable bandmeterView service status:
sudo systemctl status bandmeterDB_DIR=/path/to/db_dir /path/to/bandmeterNote
You can use the LEFT and RIGHT arrow keys to navigate periods.
- Date/time picker & Arbitrary period bounds
- Interactive chart & table with hover tooltips and click-to-filter
- Live updates / traffic streaming when GUI is running
- 'Hosts' table to display IP addresses connected to (database currently records them)
- Configuration options (e.g., retention period, theming, etc.)
- Performance optimisations, Async data fetching
- Error handling & UI feedback
- Window responsiveness
- Accessibility
