{"adoption": {"forks": 91, "observed_at": "2026-08-28T04:04:45.151651+00:00", "stars": 1446}, "canonical_url": "https://ross.abutalabs.com/products/ttl", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Fast, modern traceroute with real-time TUI, per-hop stats, ASN/geo lookup, ECMP detection, and MPLS label parsing. A better mtr.", "domain": ["networking", "developer-tools", "monitoring"], "enriched": true, "function": ["networking", "monitoring", "terminal-ui", "cli", "analytics"], "health_score": 100, "homepage": null, "language": "Rust", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["lance0/ttl"], "name": "lance0/ttl", "platform": ["windows", "bsd", "cli", "rust"], "pushed_at": "2026-08-24T16:32:18+00:00", "repo": "lance0/ttl", "stars": 1446, "tags": ["traceroute", "mtr", "icmp", "asn-lookup", "geolocation", "ecmp", "mpls", "network-diagnostics", "prometheus", "tui", "command-line", "linux", "macos", "docker"], "topics": ["asn-lookup", "cli", "geolocation", "icmp", "latency", "latency-test", "mtr", "network-visualization", "networking", "ratatui", "rust", "terminal", "traceroute", "tui"], "urls": [], "use_cases": ["trace network paths with per-hop latency and packet loss stats", "diagnose why my connection is slow or dropping packets", "detect ECMP load balancing and enumerate parallel routes", "find the path MTU between two hosts", "look up which ASNs and IXs my traffic traverses", "continuously monitor route stability with alerts on path changes", "export traceroute metrics to Prometheus"], "what_it_is": "ttl is a fast, modern traceroute and network diagnostic tool written in Rust with a real-time TUI, per-hop latency/loss/jitter statistics, and ASN/GeoIP/reverse-DNS enrichment. It extends classic traceroute/mtr with ECMP path enumeration, path MTU discovery, NAT detection, MPLS label parsing, and a Prometheus-exporting daemon mode.", "when_to_avoid": ["you only need a one-shot simple traceroute with no stats", "you need a GUI-based network diagnostic tool", "you cannot grant raw socket / setcap privileges on the host"], "when_to_choose": ["you want a modern, faster alternative to mtr with a rich TUI", "you need ECMP detection, MTU discovery, or NAT detection in one tool", "you want scriptable JSON/CSV output or headless Prometheus monitoring", "you need ASN, GeoIP, and PeeringDB IX enrichment during traces"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ttl", "repo": "lance0/ttl", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.151651+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:36:10.403779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4bbe3a1eeb57023db0dbaccc1b3a47dac7a0a6aee54e5439599757e3f2db0c70", "fetched_at": "2026-08-28T04:04:45.151651+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lance0/ttl"}, {"content_hash": "93c99b1fbc02de88964eeecb38263f856fafd72bc9a127723323b76f9ace0bdf", "fetched_at": "2026-08-29T11:45:56.169033+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/ttl"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 16, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 233, "days_push": 9, "days_rel": 9, "gap_med": 0.0, "n_releases_24m": 41}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}