# Trippy: a Rust traceroute and ping TUI for network diagnosis

> Trippy merges traceroute and ping into one terminal interface, with Linux, BSD, macOS and Windows packages. It is a diagnostic tool for engineers who want per-hop latency and loss in a single live view, not a replacement for packet capture.

**fujiapple852/trippy** — A network diagnostic tool 

- Repository: https://github.com/fujiapple852/trippy
- Website: https://trippy.rs
- Stars: 7,973 · Forks: 286
- Language: Rust
- License: Apache-2.0
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/fujiapple852-trippy

## What Trippy solves, and who reaches for it

Traceroute and ping answer different halves of the same question. Traceroute shows the path and where packets stop; ping shows whether a destination responds and how variable the round trip is. When a link is flapping or a hop is dropping a fraction of traffic, you normally run both and try to line up the output by hand. Trippy merges the two: the README states it "combines the functionality of traceroute and ping and is designed to assist with the analysis of networking issues". The target user is the person on the other end of that sentence, a network or systems engineer working from a terminal who wants latency and loss per hop, updating live, without leaving the shell.

It is not a general purpose monitoring agent. There is no daemon mode described in the README, no alerting, and no long-term storage of results. It is an interactive diagnostic you run when something is wrong, or when you want to characterise a path before you commit to it.

## The crate split behind the terminal UI

The workspace in Cargo.toml separates concerns into six published crates: trippy (the binary), trippy-tui, trippy-core, trippy-packet, trippy-privilege and trippy-dns. That layout tells you where the boundaries are. Packet construction and parsing live in trippy-packet, DNS resolution in trippy-dns, and the privilege handling in trippy-privilege, which is the crate that deals with running without root. The TUI layer sits on top of trippy-core, and the binary wires it together.

The workspace also pins the toolchain: edition 2024 and rust-version 1.88. If you build from source on an older compiler, cargo will refuse before it compiles anything. The Dockerfile shows the same number, using rust:1.88 as the build image and targeting x86_64-unknown-linux-musl for a static binary. The build is a two-stage cache trick: it copies only the Cargo.toml files, writes a dummy main.rs and empty lib.rs files, builds to warm the dependency cache, then copies the real sources and builds again. That is a deliberate trade to keep image rebuilds fast, and it means the Dockerfile is not a good template if you want a simple one-shot cargo build.

Dependencies worth noting from the workspace table: hickory-resolver for DNS, crossterm and ratatui for the terminal layer, clap for argument parsing, and caps on the privilege side. None of that is unusual for a Rust CLI, but the split means you can consume trippy-core or trippy-dns as libraries rather than only running the binary.

## Installing Trippy and running a first trace

The README points to the installation guide at trippy.rs for the full matrix, and lists package manager commands for Cargo, APT, a Ubuntu PPA, Snap, Homebrew, WinGet, Scoop, Chocolatey, NetBSD pkgsrc, FreeBSD, OpenBSD, Arch, Gentoo, Void, ALT Sisyphus, Chimera Linux, Nix and Docker. If you have a Rust toolchain, the Cargo route is the shortest:

```bash
cargo install trippy --locked
```

The --locked flag is in the README and matters here, because it builds against the checked-in Cargo.lock rather than resolving fresh versions. Debian users should read the note before trying APT: the README says the package is only available for Debian 13 (trixie) and later. The Ubuntu PPA carries the same kind of caveat, limited to 24.04 (Noble) and 22.04 (Jammy). On macOS, brew install trippy. On Windows, winget install trippy, scoop install trippy or choco install trippy. If you would rather not install anything, the published image runs directly:

```bash
docker run -it fujiapple/trippy
```

Once installed, a basic trace to example.com with default settings is:

```bash
sudo trip example.com
```

The binary is called trip, not trippy, and the README runs it under sudo. You should see the terminal UI open and populate hop by hop. The README does not describe the default column set in the text we have; the column reference at trippy.rs/reference/column is where that is documented. If you cannot or will not use sudo, the README points to a privileges guide rather than offering an inline workaround, so treat that page as required reading before you assume it runs unprivileged. The repository also ships trippy-config-sample.toml at the top level, which is the starting point for a config file, and the configuration reference at trippy.rs/reference/configuration documents the keys.

## Where Trippy is the wrong tool

The privileges requirement is the first real constraint, and it is structural rather than incidental. Raw ICMP and the packet crafting that traceroute needs are privileged operations on most systems, which is why the README's own example is sudo trip example.com and why there is a separate trippy-privilege crate and a dedicated guide. If your environment forbids elevated privileges on the hosts you diagnose, Trippy is not usable until you have worked through that guide and confirmed a supported method for your platform.

The second limitation is scope. Trippy measures the path and the round trip. It does not capture payloads, so it cannot tell you that a TCP handshake is failing because of a middlebox rewriting options, or that an application is retrying. For that you want a packet analyser. It also does not retain history: the README describes an interactive diagnostic, and there is no mention of a store-and-compare mode. If your problem is intermittent and you need to prove a pattern over days, you will be running something else alongside it.

A third, smaller point: the install matrix is wide but uneven. Debian support starts at trixie, Ubuntu at Noble and Jammy. On an older LTS you are looking at Cargo, a container, or a third-party repository rather than the distribution package.

## Trippy against mtr

The obvious comparison is mtr, which occupies the same niche: a live per-hop latency and loss view combining ping and traceroute. The difference in approach is the implementation and the packaging surface. mtr is a long-standing C program distributed widely by operating system vendors; Trippy is a Rust workspace with the crate split described above, published on crates.io and installable through cargo, plus a Docker image and a large set of package manager entries listed in the README.

That matters in two practical ways. If you are already in a Rust shop, cargo install trippy --locked drops a binary you can pin through Cargo.lock, and the library crates are available if you want to build your own tooling on trippy-core or trippy-dns. If you are not, mtr is more likely to be preinstalled or one apt install away on older distributions, where Trippy's Debian and Ubuntu packages have minimum version requirements. The TUI is also a differentiator in the literal sense: Trippy is built on ratatui and crossterm, and the README links a theme reference and a locale reference, so appearance and localisation are configurable surface area. Whether that is an advantage depends on whether you care about the presentation of the output or only the numbers.

## Maintenance, licence and upgrade cost

The last push to the repository was on 2026-09-15, and the repository is not archived. The most recent tagged release listed is 0.13.0 from 2025-05-05, with 0.12.2 before it in January 2025 and 0.12.1 in December 2024. The workspace version in Cargo.toml is 0.14.0-dev, which indicates development is running ahead of the last tag. There is a CHANGELOG.md and a RELEASES.md at the top level, so the upgrade path is documented in-repo rather than only on the site.

Upgrade cost is low if you install through a package manager, since the version you get is whatever the distribution or the PPA carries. If you build from source, note that the workspace requires Rust 1.88 and edition 2024, so an upgrade can be blocked by your toolchain rather than by the code. The Dockerfile pins rust:1.88, which is the version to match if you build images. Configuration lives in a TOML file, with trippy-config-sample.toml in the repository as the reference, so a config written against 0.13.0 should be checked against the configuration reference after a jump to 0.14.x.

The licence is Apache-2.0, declared in Cargo.toml and shipped as LICENSE. That is a permissive licence with an explicit patent grant. It is compatible with use in closed products, but if you redistribute a modified binary you need to carry the licence and notice obligations that Apache-2.0 sets out. This is a description of the licence text, not legal advice; your counsel decides how it applies to your distribution.

## Conclusion

Adopt Trippy if you already reach for traceroute and ping together and want one live terminal view of per-hop latency and loss, and you can run it with sudo or follow the privileges guide. Do not adopt it if you need deep packet inspection, historical baselines or a GUI report for non-technical stakeholders; Wireshark and a plain mtr script cover those better. Before rolling it out, verify that a package exists for your distribution and version, confirm whether your platform needs elevated privileges or a capability setup, and read the privileges guide at trippy.rs to find out which method applies to your kernel and packaging.

## FAQ

### What is Trippy?

Trippy is a network diagnostic tool that combines the functionality of traceroute and ping, designed to assist with the analysis of networking issues. It is written in Rust and runs on Linux, BSD, macOS and Windows.

### How do I install Trippy on Linux?

The README lists apt install trippy for Debian 13 (trixie) and later, a Ubuntu PPA for 24.04 (Noble) and 22.04 (Jammy), snap install trippy, pacman -S trippy on Arch, and cargo install trippy --locked as a cross-distribution option.

### Does Trippy need to run as root?

The README's basic example is sudo trip example.com, so elevated privileges are the default path. The README also points to a privileges guide for running without them, and the workspace contains a trippy-privilege crate.

### What is the Trippy command called?

The installed binary is trip, not trippy. A basic trace to example.com with default settings is run as sudo trip example.com.

## Sources

- [fujiapple852/trippy on GitHub](https://github.com/fujiapple852/trippy)
- [License: Apache-2.0](https://github.com/fujiapple852/trippy/blob/master/LICENSE)
- [Project website](https://trippy.rs)
- [README](https://github.com/fujiapple852/trippy/blob/master/README.md)
- [Releases](https://github.com/fujiapple852/trippy/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/fujiapple852-trippy
