
The flow is a real-time network traffic monitor for the terminal.
It is written in Go, uses Bubble Tea for the TUI interface, and works on GNU/Linux, macOS, and Windows.
Features:
The interface automatically adapts to the terminal size, offering four modes: Hero, Compact, Mini, and Tiny.
The project provides precompiled binaries for Linux, macOS, and Windows, for both amd64 and arm64. There are also platform-specific methods.
If you use Arch Linux, you can install it through the AUR:
yay -S flow-network-monitor-bin
With Go installed:
go install github.com/programmersd21/flow/cmd/flow@latest
Verify:
flow
git clone https://github.com/programmersd21/flow
cd flow
make install
The project also provides binaries directly on the releases page.
The simplest way is to use Homebrew:
brew install programmersd21/flow/flow
Then:
flow
On Windows, you can download the binary corresponding to your machine’s architecture from the project’s Releases page.
There are builds for:
amd64
arm64
The release process generates a .zip file for Windows.
After extracting the executable, you can run:
.\flow.exe
If you want to call flow directly from any terminal, add the executable’s folder to the Windows PATH.
Once installed, simply run:
flow
The program automatically detects the network interface and starts monitoring.
You can start directly in different modes:
flow --compact
Compact layout.
flow --mini
Graphs only.
flow --tiny
A single line, ideal for status bars.
For example, the tiny mode can be integrated into tmux:
set -g status-right "#(flow --tiny --no-color)"
If the computer has multiple network interfaces:
flow --interface wlan0
You can also switch between interfaces within the application itself using:
i
Press:
c
to switch between scales such as:
B/s
KB/s
MB/s
Or start using bits per second:
flow --bits
By default, flow works with a 100 ms sampling rate.
You can change it:
flow --refresh 500ms
You can set the destination used for the latency test:
flow --ping 8.8.8.8
The default address is 1.1.1.1.
During execution:
| Key | Action |
|---|---|
q |
Quit |
m |
Change view mode |
d |
Download / Upload / Both |
t |
Select theme |
n |
Network processes |
i |
Change interface |
I |
Interface details |
c |
Change unit |
b |
Bits/s ↔ Bytes/s |
+ / - |
Change interval |
p |
Pause/resume |
r |
Reset peaks |
? |
Help |
flow does not have to be used only as a TUI.
To get a single JSON output:
flow --json
To receive data continuously in JSON Lines:
flow --json-stream
This allows you to integrate flow with scripts, dashboards, and other terminal tools.
There is also:
flow --once
to get a single text output.
For more information, visit the repository.