{
  "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
    },
    "source": [
      {
        "id": "source",
        "kind": "help",
        "url": "https://trippy.rs/reference/cli/",
        "revision": "2026-10-27",
        "evidence": "-m, --mode <MODE>\nOutput mode [default: tui]\n- tui:      Display interactive TUI\n- stream:   Display a continuous stream of tracing data\n- pretty:   Generate a pretty text table report for N cycles\n- markdown: Generate a Markdown text table report for N cycles\n- csv:      Generate a CSV report for N cycles\n- json:     Generate a JSON report for N cycles\n- dot:      Generate a Graphviz DOT file for N cycles\n- flows:    Display all flows for N cycles\n- silent:   Do not generate any tracing output for N cycles\n-u, --unprivileged\n--udp\n--tcp\n--icmp\n-P, --target-port <TARGET_PORT>\n-f, --first-ttl <FIRST_TTL>\n-t, --max-ttl <MAX_TTL>\n-y, --dns-resolve-all\n-z, --dns-lookup-as-info\n-C, --report-cycles <REPORT_CYCLES>\n"
      }
    ],
    "field": [
      {
        "id": "targets",
        "label": "Targets",
        "description": "Hostnames or IP addresses.",
        "type": "string",
        "position": 0,
        "min": 1,
        "multiple": true,
        "sources": [
          "source"
        ]
      },
      {
        "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"
        ]
      },
      {
        "id": "unprivileged",
        "label": "Unprivileged",
        "description": "Trace without elevated privileges on supported platforms.",
        "type": "boolean",
        "option": [
          "--unprivileged",
          "-u"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "udp",
        "label": "Use UDP",
        "type": "boolean",
        "option": [
          "--udp"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "tcp",
        "label": "Use TCP",
        "type": "boolean",
        "option": [
          "--tcp"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "icmp",
        "label": "Use ICMP",
        "type": "boolean",
        "option": [
          "--icmp"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "target_port",
        "label": "Target port",
        "type": "integer",
        "option": [
          "--target-port",
          "-P"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "first_ttl",
        "label": "First TTL",
        "type": "integer",
        "option": [
          "--first-ttl",
          "-f"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "max_ttl",
        "label": "Maximum TTL",
        "type": "integer",
        "option": [
          "--max-ttl",
          "-t"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "resolve_all",
        "label": "Trace all resolved IPs",
        "type": "boolean",
        "option": [
          "--dns-resolve-all",
          "-y"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "as_info",
        "label": "Look up AS information",
        "type": "boolean",
        "option": [
          "--dns-lookup-as-info",
          "-z"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "report_cycles",
        "label": "Report cycles",
        "description": "Number of cycles for report modes.",
        "type": "integer",
        "option": [
          "--report-cycles",
          "-C"
        ],
        "sources": [
          "source"
        ]
      }
    ],
    "constraint": [
      {
        "kind": "at_most_one",
        "fields": [
          "udp",
          "tcp",
          "icmp"
        ],
        "message": "Choose one protocol."
      }
    ],
    "task": [
      {
        "id": "report",
        "label": "Pretty report",
        "set": {
          "mode": [
            "pretty"
          ],
          "report_cycles": [
            10
          ]
        },
        "lock": [
          "mode"
        ],
        "fields": [
          "targets",
          "report_cycles",
          "udp",
          "tcp",
          "icmp",
          "unprivileged"
        ],
        "required": [
          "targets"
        ]
      },
      {
        "id": "trace",
        "label": "Trace a host",
        "fields": [
          "targets",
          "unprivileged",
          "udp",
          "tcp",
          "icmp",
          "target_port"
        ],
        "required": [
          "targets"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "targets",
          "unprivileged",
          "udp",
          "tcp",
          "icmp",
          "target_port"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "mode",
          "report_cycles",
          "first_ttl",
          "max_ttl",
          "resolve_all",
          "as_info"
        ]
      }
    ]
  }
}
