ttl
Modern traceroute/mtr-style TUI with hop stats and optional ASN/geo enrichment.
Quick Start
# Install
# Basic usage (requires root or CAP_NET_RAW)
# Common options
Features
- Fast continuous path monitoring with detailed hop statistics
- Multiple simultaneous targets - trace to several destinations at once
- Paris/Dublin traceroute - multi-flow probing for ECMP path enumeration
- Path MTU discovery - binary search for maximum unfragmented size
- NAT detection - identify when NAT devices rewrite source ports
- Route flap detection - alert on path changes indicating routing instability
- Rich enrichment - ASN, GeoIP, reverse DNS, IX detection (PeeringDB)
- MPLS label detection from ICMP extensions
- ICMP, UDP, TCP probing with auto-detection
- Great TUI with themes, sparklines, and session export
- Scriptable - JSON, CSV, and text report output
See docs/FEATURES.md for detailed feature documentation.
Installation
Quick Install (macOS/Linux)
|
Homebrew
Pre-built Binaries
Download from GitHub Releases:
| Platform | Target |
|---|---|
| Linux x86_64 | ttl-x86_64-unknown-linux-gnu.tar.gz |
| Linux ARM64 | ttl-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | ttl-aarch64-apple-darwin.tar.gz |
# Download, verify, and install (Linux x86_64 example)
&&
From crates.io
From Source
&&
Permissions (Linux)
Raw sockets require elevated privileges. The easiest approach is to add the capability once:
# Add capability (works for any install location)
# Then run without sudo:
Usage Examples
Interactive TUI
Report and Export
Advanced Options
See docs/FEATURES.md for full CLI reference.
Keybindings
| Key | Action |
|---|---|
q |
Quit |
p |
Pause/Resume |
r |
Reset stats |
t |
Cycle theme |
e |
Export JSON |
? |
Help |
Tab |
Next target |
Enter |
Expand hop |
Themes
11 built-in themes: default, kawaii, cyber, dracula, monochrome, matrix, nord, gruvbox, catppuccin, tokyo_night, solarized
# Press 't' to cycle themes (saved to ~/.config/ttl/config.toml)
Platform Support
| Platform | Status |
|---|---|
| Linux | Full support |
| macOS (Tahoe 26+) | Full support |
| macOS (Sequoia 15) | Build from source* |
| Windows | Not supported |
*Pre-built binaries are built on macos-latest (Tahoe). Older macOS versions may have display issues - use cargo install ttl to compile from source.
Known Limitations
Permissions
- Linux: Requires
CAP_NET_RAWcapability or root (see Permissions) - macOS: Requires root (
sudo ttl target) - RAW sockets are needed to receive ICMP Time Exceeded messages from intermediate routers
Protocol Limitations
- ICMP probes: Some networks filter ICMP, try
-p udpor-p tcp - TCP probes: Only SYN (no connection establishment)
- UDP probes: High ports may be filtered by firewalls
Multi-flow Mode
- NAT devices may rewrite source ports, breaking flow correlation
- The
[NAT]indicator warns when this is detected
Documentation
- Features - Detailed feature documentation and CLI reference
- Architecture - Internal design and module structure
- Contributing - Development setup and guidelines
- Comparison - Comparison with similar tools
- Changelog - Release history
- Roadmap - Planned features
Troubleshooting
"sudo: ttl: command not found"
sudo uses a restricted PATH. Use the full path or copy to a sudo-accessible location:
# Option 1: Use full path
# Option 2: Copy to /usr/local/bin (one-time)
# Option 3: Symlink (updates automatically with cargo install)
Permission errors
Raw ICMP sockets require CAP_NET_RAW or root. See Permissions.
High packet loss
Try increasing probe interval: ttl target -i 2.0
Some routers rate-limit ICMP - look for the [RL?] indicator in the TUI.
All hops showing * * *
Check firewall rules, VPN configuration, or try a different protocol: ttl -p udp target
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.