A terminal UI for network diagnostics — because debugging networks is a lot like fishing in the dark.
Built with ratatui and tokio on macOS and Linux.
| Ping | DNS |
![]() |
![]() |
| Tab | What it does |
|---|---|
| Dashboard | Public IP, network type (Wi‑Fi / Ethernet), SSID, interface, private (LAN) IP, gateway, DNS servers. Auto-refreshes every 5 s; press r to force refresh. |
| Speedtest | Streams output from the Ookla speedtest CLI in real time. (optional — see below) |
| Ping | Continuous ICMP ping with live statistics (sent / received / loss % / min / max / avg / stddev). Adjustable interval from 100 ms to 5 s. |
| Traceroute | Continuous MTR — repeatedly runs traceroute -n and accumulates per-hop stats (loss %, avg/best/last RTT, sparkline history). |
| DNS | Resolves A + AAAA records with latency measurement. Tristate filter: IPv4 only / IPv6 only / both. |
brew tap dennissoftman/fisherman
brew install fishermanTo upgrade later: brew upgrade fisherman
Requires the Rust toolchain (stable, 2024 edition):
git clone https://github.com/dennissoftman/fisherman
cd fisherman
cargo build --release
./target/release/fishermanRaw ICMP (Ping tab): uses raw ICMP sockets. If you see
Socket error: Operation not permitted, run withsudoor on Linux:sudo setcap cap_net_raw+ep ./target/release/fisherman.
Linux:
iwis needed for Wi-Fi SSID detection (apt install iw/dnf install iw).tracerouteis usually pre-installed; if not:apt install traceroute.
The Speedtest tab requires the official Ookla CLI (not the Python speedtest-cli package):
brew tap teamookla/speedtest
brew install speedtestIf the binary is not found, the tab shows an install prompt instead of crashing.
The footer shows context-sensitive hints at runtime. Quick reference:
| Key | Context | Action |
|---|---|---|
Tab / 1–5 |
Any | Cycle tabs / jump to tab |
q / Ctrl-C |
Any | Quit |
r |
Dashboard | Refresh |
i / Enter |
Ping, Traceroute, DNS (idle) | Enter input |
y |
Any (with results) | Copy current tab results to clipboard |
Enter |
Input mode | Execute |
s |
Ping, Traceroute (running) | Stop |
+ / - |
Ping | Increase / decrease interval |
f |
DNS | Cycle filter: IPv4 → IPv6 → both |
Enter / s |
Speedtest | Start / stop |
Esc |
Input mode | Cancel |
Issues and PRs are welcome. See CLAUDE.md for architecture notes and how to extend the app.


