id = "nexttrace"
name = "NextTrace"
homepage = "https://github.com/nxtrace/NTrace-core"
description = "An open source visual route tracking CLI tool."
executables = ["nexttrace"]
[dotfiles]
paths = ["[configHome]/nexttrace/nt_config.yaml"]
exclude = []
secret = []
side_effect = false
[commands]
format = 1
label = "Trace route"
description = "Trace the network path to one host with traditional traceroute or MTR. Web console, speed test, Globalping, file targets and output logging are not in this form."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = true, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/nxtrace/NTrace-core"
revision = "README 2026-10-27"
evidence = """
-4 --ipv4 Use IPv4 only
-6 --ipv6 Use IPv6 only
-T --tcp Use TCP SYN for tracerouting (default
-U --udp Use UDP SYN for tracerouting (default
-p --port Set the destination port to use. With
-q --queries Traceroute: latency samples per hop
-m --max-hops
-n --no-rdns
-j --json
-t --mtr
-r --report
-w --wide
--timeout Per-probe timeout [ms]. Raise to 2000-3000
-C --no-color
-g|--language (en|cn)
[-m|--max-hops <integer>] [-n|--no-rdns] [-j|--json] [-t|--mtr] [-r|--report] [-w|--wide] [-C|--no-color] [TARGET "<value>"]
nexttrace --first 5 --max-hops 10 www.decix.net
nexttrace -t --tcp --max-hops 20 --first 3 --no-rdns 8.8.8.8
"""
[[commands.field]]
id = "target"
label = "Target host or IP"
type = "string"
position = 0
sources = ["help"]
[[commands.field]]
id = "tcp"
label = "Use TCP SYN"
type = "boolean"
option = ["--tcp", "-T"]
sources = ["help"]
[[commands.field]]
id = "udp"
label = "Use UDP"
type = "boolean"
option = ["--udp", "-U"]
sources = ["help"]
[[commands.field]]
id = "ipv4"
label = "IPv4 only"
type = "boolean"
option = ["--ipv4", "-4"]
sources = ["help"]
[[commands.field]]
id = "ipv6"
label = "IPv6 only"
type = "boolean"
option = ["--ipv6", "-6"]
sources = ["help"]
[[commands.field]]
id = "port"
label = "Destination port"
type = "integer"
option = ["--port", "-p"]
sources = ["help"]
[[commands.field]]
id = "queries"
label = "Samples per hop"
type = "integer"
option = ["--queries", "-q"]
sources = ["help"]
[[commands.field]]
id = "max_hops"
label = "Max hops"
type = "integer"
option = ["--max-hops", "-m"]
sources = ["help"]
[[commands.field]]
id = "timeout"
label = "Per-probe timeout (ms)"
type = "integer"
option = ["--timeout"]
sources = ["help"]
[[commands.field]]
id = "no_rdns"
label = "Skip reverse DNS"
type = "boolean"
option = ["--no-rdns", "-n"]
sources = ["help"]
[[commands.field]]
id = "mtr"
label = "MTR mode"
type = "boolean"
option = ["--mtr", "-t"]
sources = ["help"]
[[commands.field]]
id = "report"
label = "MTR report"
type = "boolean"
option = ["--report", "-r"]
sources = ["help"]
[[commands.field]]
id = "json"
label = "JSON output"
type = "boolean"
option = ["--json", "-j"]
sources = ["help"]
[[commands.field]]
id = "no_color"
label = "No color"
type = "boolean"
option = ["--no-color", "-C"]
sources = ["help"]
[[commands.task]]
id = "trace"
label = "Trace a host"
fields = ["target", "ipv4", "ipv6", "max_hops", "no_rdns"]
required = ["target"]
[[commands.task]]
id = "tcp443"
label = "TCP trace to port 443"
fields = ["target", "tcp", "port", "queries"]
required = ["target"]
set = { tcp = [true], port = [443] }
[[commands.task]]
id = "mtr_report"
label = "MTR report"
fields = ["target", "mtr", "report", "queries"]
required = ["target"]
set = { mtr = [true], report = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["target", "tcp", "udp", "ipv4", "ipv6", "port", "max_hops", "no_rdns"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["queries", "timeout", "mtr", "report", "json", "no_color"]