id = "trippy"
name = "Trippy"
homepage = "https://trippy.rs/reference/overview/"
description = "A network diagnostic tool with a traceroute-like TUI."
executables = ["trip"]
[dotfiles]
paths = [
"~/trippy.toml",
"~/.trippy.toml",
"[configHome]/trippy.toml",
"[configHome]/.trippy.toml",
"[configHome]/trippy/trippy.toml",
"[configHome]/trippy/.trippy.toml",
"%APPDATA%/trippy.toml",
"%APPDATA%/.trippy.toml",
"%APPDATA%/trippy/trippy.toml",
"%APPDATA%/trippy/.trippy.toml",
]
secret = []
side_effect = false
[commands]
format = 1
label = "Trace route"
description = "Trace the route to one or more hosts with Trippy. Theme, DNS tuning, TUI display and config-template options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true }
[[commands.source]]
id = "source"
kind = "help"
url = "https://trippy.rs/reference/cli/"
revision = "2026-10-27"
evidence = """
-m, --mode <MODE>
Output mode [default: tui]
- tui: Display interactive TUI
- stream: Display a continuous stream of tracing data
- pretty: Generate a pretty text table report for N cycles
- markdown: Generate a Markdown text table report for N cycles
- csv: Generate a CSV report for N cycles
- json: Generate a JSON report for N cycles
- dot: Generate a Graphviz DOT file for N cycles
- flows: Display all flows for N cycles
- silent: Do not generate any tracing output for N cycles
-u, --unprivileged
--udp
--tcp
--icmp
-P, --target-port <TARGET_PORT>
-f, --first-ttl <FIRST_TTL>
-t, --max-ttl <MAX_TTL>
-y, --dns-resolve-all
-z, --dns-lookup-as-info
-C, --report-cycles <REPORT_CYCLES>
"""
[[commands.field]]
id = "targets"
label = "Targets"
description = "Hostnames or IP addresses."
type = "string"
position = 0
min = 1
multiple = true
sources = ["source"]
[[commands.field]]
id = "mode"
label = "Output mode"
description = "Default is tui. Report modes run for the number of cycles set below."
type = "enum"
option = ["--mode", "-m"]
choices = [{ value = "tui", label = "TUI" }, { value = "stream", label = "Stream" }, { value = "pretty", label = "Pretty table" }, { value = "markdown", label = "Markdown table" }, { value = "csv", label = "CSV" }, { value = "json", label = "JSON" }, { value = "dot", label = "Graphviz DOT" }, { value = "flows", label = "Flows" }, { value = "silent", label = "Silent" }]
sources = ["source"]
[[commands.field]]
id = "unprivileged"
label = "Unprivileged"
description = "Trace without elevated privileges on supported platforms."
type = "boolean"
option = ["--unprivileged", "-u"]
sources = ["source"]
[[commands.field]]
id = "udp"
label = "Use UDP"
type = "boolean"
option = ["--udp"]
sources = ["source"]
[[commands.field]]
id = "tcp"
label = "Use TCP"
type = "boolean"
option = ["--tcp"]
sources = ["source"]
[[commands.field]]
id = "icmp"
label = "Use ICMP"
type = "boolean"
option = ["--icmp"]
sources = ["source"]
[[commands.field]]
id = "target_port"
label = "Target port"
type = "integer"
option = ["--target-port", "-P"]
sources = ["source"]
[[commands.field]]
id = "first_ttl"
label = "First TTL"
type = "integer"
option = ["--first-ttl", "-f"]
sources = ["source"]
[[commands.field]]
id = "max_ttl"
label = "Maximum TTL"
type = "integer"
option = ["--max-ttl", "-t"]
sources = ["source"]
[[commands.field]]
id = "resolve_all"
label = "Trace all resolved IPs"
type = "boolean"
option = ["--dns-resolve-all", "-y"]
sources = ["source"]
[[commands.field]]
id = "as_info"
label = "Look up AS information"
type = "boolean"
option = ["--dns-lookup-as-info", "-z"]
sources = ["source"]
[[commands.field]]
id = "report_cycles"
label = "Report cycles"
description = "Number of cycles for report modes."
type = "integer"
option = ["--report-cycles", "-C"]
sources = ["source"]
[[commands.constraint]]
kind = "at_most_one"
fields = ["udp", "tcp", "icmp"]
message = "Choose one protocol."
[[commands.task]]
id = "report"
label = "Pretty report"
set = { mode = ["pretty"], report_cycles = [10] }
lock = ["mode"]
fields = ["targets", "report_cycles", "udp", "tcp", "icmp", "unprivileged"]
required = ["targets"]
[[commands.task]]
id = "trace"
label = "Trace a host"
fields = ["targets", "unprivileged", "udp", "tcp", "icmp", "target_port"]
required = ["targets"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["targets", "unprivileged", "udp", "tcp", "icmp", "target_port"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["mode", "report_cycles", "first_ttl", "max_ttl", "resolve_all", "as_info"]