v0.0.1
Initial Release -- via v0.0.1
A modern, terminal-native traceroute with real-time ECMP multipath discovery.
via replaces traceroute, mtr, and paris-traceroute with a single tool that reveals all the parallel paths your packets actually take through load-balanced networks.
Highlights
- ECMP multipath discovery — Paris-traceroute-style UDP probing with per-flow source port variation discovers all parallel paths through load-balanced routers. 6 flows by default, configurable with
--paths. - ICMP rate-limit detection — Automatically distinguishes false packet loss (routers throttling TTL Exceeded replies) from real loss. Rate-limited hops display
~N%instead of triggering false alarms. - Live TUI with tree rendering — Divergence points auto-expand with
├──/└──connectors. Path stability badges ([100%]) show how consistent each path is over a 50-round rolling window. - Full mtr-class statistics — Snt, Avg, Best, Wrst, StDev, Last, Loss% columns with Welford's online algorithm for numerically stable standard deviation.
Features
- ECMP on by default,
--no-pathsfor single-path mode - Viewport scrolling (
j/k), jump to top/bottom (g/G) - Adaptive column layout based on terminal width
- Async DNS resolution with worker pool, dedup, and caching
- Report mode (
-r) for scripted/non-interactive output - Auto-sudo when raw socket permissions are missing
- Configurable interval, count, TTL range, and packet size
- Clean exit with final summary on
qorCtrl-C
Install
Homebrew
brew tap tonhe/tap
brew install viaductFrom source
Requires Go 1.25+:
git clone https://github.com/tonhe/viaduct.git
cd viaduct
make installQuick Start
# Default trace with ECMP multipath
via google.com
# 12 ECMP flows
via --paths 12 google.com
# Single-path mode
via --no-paths 8.8.8.8
# Report mode, 5 rounds, no DNS
via -r -c 5 -n 8.8.8.8What's Next
- UDP/TCP probe modes, ASN enrichment, ping supplement for rate-limited hops
- Display mode cycling, sparklines, multi-target, JSON/CSV/DOT export
- Theme engine with 20 built-in color themes