Indexed by TopGit from live GitHub metadata: imsnif/bandwhich has 11.9k stars, written primarily in Rust. Terminal bandwidth utilization tool
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
This is a CLI utility for displaying current network utilization by process, connection and remote IP/hostname
Table of contents
bandwhich
Table of contents
Project status
How does it work?
Installation
Downstream packaging status
Download a prebuilt binary
Building from source
Cross-compiling
Android
Post install (Linux)
1. setcap
Capabilities explained
2. sudo (or alternative)
Post install (Windows)
Usage
Contributing
License
Project status
This project is in passive maintenance. Critical issues will be addressed, but
no new features are being worked on. However, this is due to a lack of funding
and/or manpower more than anything else, so pull requests are more than welcome.
In addition, if you are able and willing to contribute to this project long-term,
we would like to invite you to apply for co-maintainership.
For more details, see The Future of Bandwhich #275.
How does it work?
bandwhich sniffs a given network interface and records IP packet size, cross referencing it with the /proc filesystem on linux, lsof on macOS, or using WinApi on windows. It is responsive to the terminal window size, displaying less info if there is no room for it. It will also attempt to resolve ips to their host name in the background using reverse DNS on a best effort basis.
Installation
Downstream packaging status
For detailed instructions for each platform, see INSTALL.md.
Download a prebuilt binary
We offer several generic binaries in releases for various OSes.
OS
Architecture
Support
Usage
Android
aarch64
Best effort
All modern Android devices.
Note that this is a pure binary file, not an APK suitable for general usage.
Linux
aarch64
Full
64-bit ARMv8+ (servers, some modern routers, RPi-4+).
armv7hf
Best effort
32-bit ARMv7 (older routers, pre-RPi-4).
x64
Full
Most Linux desktops & servers.
MacOS
aarch64
Full
Apple silicon Macs (2021+).
x64
Intel Macs (pre-2021).
Windows
x64
Full
Most Windows desktops & servers.
Building from source
git clone https://github.com/imsnif/bandwhich.git
cd bandwhich
cargo build --release
For the up-to-date minimum supported Rust version, please refer to the rust-version field in Cargo.toml.
Cross-compiling
Cross-compiling for alternate targets is supported via cross. Here's the rough procedure:
Check the target architecture. If on Linux, you can use uname -m.
Lookup rustc platform support for the corresponding target triple.
Install cross.
Run cross build --release --target <TARGET_TRIPLE>.
Android
Until cross-rs/cross#1222 is solved, use the latest HEAD:
Since bandwhich sniffs network packets, it requires elevated privileges.
On Linux, there are two main ways to accomplish this:
1. setcap
Permanently allow the bandwhich binary its required privileges (called "capabilities" in Linux).
Do this if you want to give all unprivileged users full access to bandwhich's monitoring capabilities.
This is the recommended setup for single user machines, or if all users are trusted.
This is not recommended if you want to ensure users cannot see others' traffic.
# assign capabilities
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep $(command -v bandwhich)
# run as unprivileged user
bandwhich
Capabilities explained
cap_sys_ptrace,cap_dac_read_search: allow access to /proc/<pid>/fd/, so that bandwhich can determine which open port belongs to which process.
cap_net_raw,cap_net_admin: allow capturing packets on your system.
2. sudo (or alternative)
Require privilege escalation every time.
Do this if you are an administrator of a multi-user environment.
sudo bandwhich
Note that if your installation method installed bandwhich to somewhere in
your home directory (you can check with command -v bandwhich), you may get a
command not found error. This is because in many distributions, sudo by
default does not keep your user's $PATH for safety concerns.
To overcome this, you can do any one of the following:
make sudo preserve your $PATH environment variable;
explicitly set $PATH while running bandwhich: sudo env "PATH=$PATH" bandwhich;
pass the full path to sudo: sudo $(command -v bandwhich).
Post install (Windows)
You might need to first install npcap for capturing packets on Windows.
Usage
Usage: bandwhich [OPTIONS]
Options:
-i, --interface <INTERFACE> The network interface to listen on, eg. eth0
-r, --raw Machine friendlier output
-n, --no-resolve Do not attempt to resolve IPs to their hostnames
-s, --show-dns Show DNS queries
-d, --dns-server <DNS_SERVER> A dns server ip to use instead of the system default
--log-to <LOG_TO> Enable debug logging to a file
-v, --verbose... Increase logging verbosity
-q, --quiet... Decrease logging verbosity
-p, --processes Show processes table only
-c, --connections Show connections table only
-a, --addresses Show remote addresses table only
-u, --unit-family <UNIT_FAMILY> Choose a specific family of units [default: bin-bytes] [possible values: bin-bytes, bin-bits, si-bytes, si-bits]
-t, --total-utilization Show total (cumulative) usages
-h, --help Print help (see more with '--help')
-V, --version Print version
No homepage URL was recorded for imsnif/bandwhich in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
How active is development on imsnif/bandwhich?
The most recent commit recorded on imsnif/bandwhich was 24 days ago, based on the GitHub push timestamp. The repository has 344 forks — one of the better signals of community interest.
How many stars does imsnif/bandwhich have?
imsnif/bandwhich has 11.9k GitHub stars — refresh the page for the live number, or check github.com/imsnif/bandwhich. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is imsnif/bandwhich open source?
Yes — imsnif/bandwhich ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/imsnif/bandwhich.
What else is in the Developer Tools space?
imsnif/bandwhich is tracked by TopGit under the Developer Tools category, alongside 4 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What topics is imsnif/bandwhich associated with?
GitHub's repository topics for imsnif/bandwhich: "bandwidth", "cli", "dashboard", "networking". TopGit's editorial category is Developer Tools.
Where do I read more about imsnif/bandwhich?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/imsnif/bandwhich is the definitive source.
Read full README in the tab above.
Still deciding about bandwhich?
One click hands the question to an AI along with this page — see what it says about bandwhich.