MCPcopy Index your code
hub / github.com/514-labs/dnsglobe

github.com/514-labs/dnsglobe @v0.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.0 ↗ · + Follow
52 symbols 125 edges 5 files 8 documented · 15%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

dnsglobe

crates.io license

A global DNS propagation checker for your terminal — a Rust TUI that queries 34 public DNS resolvers around the world in parallel, compares their answers, and shows the propagation of your record on a world map.

dnsglobe demo — checking A and NS records for a domain across 34 resolvers worldwide

Think dnschecker.org / whatsmydns.net, but in your terminal, with watch mode: start a check and it re-polls until the record has propagated everywhere.

Resolvers span the global anycast networks (Google, Cloudflare, Quad9), North America, Europe, Russia, the Middle East, East Asia, and the southern hemisphere (Telstra AU, SafeSurfer NZ, UOL BR) — each queried directly, so you see every server's own current view of the record.

Each resolver is queried directly (no cache, EDNS0, TCP fallback for truncated answers), so what you see is each server's own current view of the record. Answers sharing any record are grouped together — so round-robin DNS (each resolver caching a different subset of an IP pool) counts as one consistent answer, not twenty conflicting ones. The propagation gauge shows how many resolvers are in the majority group; outliers are flagged ≠ DIFFERS once all results are in.

On terminals ≥150 columns wide, a world map appears on the right with one dot per resolver, colored by status (green agrees, magenta differs, red error, yellow in flight).

Usage

Install:

brew install 514-labs/tap/dnsglobe   # Homebrew (macOS/Linux)
cargo install dnsglobe               # from crates.io
# or grab a prebuilt binary from the GitHub Releases page

Run:

dnsglobe                            # start empty, type a domain
dnsglobe example.com                # query immediately and watch
dnsglobe --once example.com TXT    # no TUI: print results, exit (for scripts)

Keys

Key Action
type / ⌫ / Del edit domain
←/→ / Home/End move cursor in the domain field
Enter start the check and watch: re-polls every 30 s until propagation reaches 100%
Ctrl+R stop or resume watching
Tab / Shift-Tab select record type (A, AAAA, CNAME, MX, NS, TXT, SOA)
↑/↓ / PgUp/PgDn scroll the resolver table
Ctrl+S cycle table sort: resolver / location / time / status / answer
Ctrl+U clear domain
Esc / Ctrl+C quit

Notes

  • Several resolvers are anycast networks, so the responding node is the one nearest to you; the location column is the operator's home region.
  • Resolver list lives in src/resolvers.rs — add or remove entries freely. Every entry was verified to answer external queries; many well-known ISP resolvers (and, notably, all major African ones) refuse queries from outside their network, so they can't be included.

Core symbols most depended-on inside this repo

summary
called by 9
src/app.rs
app_with_answers
called by 7
src/app.rs
next
called by 5
src/app.rs
in_flight
called by 5
src/app.rs
record_type
called by 3
src/app.rs
display_order
called by 3
src/app.rs
spawn_queries
called by 2
src/main.rs
spawn_round
called by 2
src/main.rs

Shape

Function 27
Method 18
Class 4
Enum 3

Languages

Rust100%

Modules by API surface

src/app.rs30 symbols
src/ui.rs7 symbols
src/main.rs7 symbols
src/dns.rs7 symbols
src/resolvers.rs1 symbols

For agents

$ claude mcp add dnsglobe \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page