dig-rs is a modern, cross-platform DNS inspection tool written in Rust.
It is designed for both:
- interactive terminal usage (human-friendly),
- and agent/automation workflows (machine-friendly).
- Cross-platform first: Linux, macOS, Windows parity.
- Safer implementation: Rust memory safety.
- Structured output: JSON-first automation support.
- Multi-mode diagnostics: query, health, compare, trace, batch.
- Versioned machine envelope for compare/trace JSON (
schema_version). - Backward compatibility: supports legacy dig-style positional usage.
cargo install dig-rsOr download binaries from GitHub Releases.
dig-rs supports two invocation styles.
dig-rs query @8.8.8.8 example.com A --json
dig-rs health example.com --json
dig-rs compare example.com A --resolvers system google cloudflare
dig-rs compare example.com A --resolvers google cloudflare --json --allow-inconsistent
dig-rs trace example.com
dig-rs trace example.com --json --output-file trace.json
dig-rs batch --file queries.txtdig-rs @8.8.8.8 example.com A --short
dig-rs example.com --health
dig-rs example.com --compare system google cloudflare
dig-rs example.com --trace --json
dig-rs --file queries.txtRun standard DNS query.
dig-rs query [@SERVER] NAME [TYPE] [OPTIONS]Examples:
dig-rs query example.com
dig-rs query @1.1.1.1 example.com AAAA
dig-rs query example.com MX --short
dig-rs query example.com A --jsonRun DNS health diagnostics.
dig-rs health NAME [--json]Examples:
dig-rs health example.com
dig-rs health example.com --jsonCompare consistency and latency across resolvers.
dig-rs compare NAME [TYPE] --resolvers RESOLVER...Resolver aliases:
system(current OS resolver),google(8.8.8.8),cloudflare(1.1.1.1),opendns(208.67.222.222),quad9(9.9.9.9).
Examples:
dig-rs compare example.com A --resolvers system google cloudflare
dig-rs compare example.com AAAA --resolvers 8.8.8.8 1.1.1.1 9.9.9.9
dig-rs compare example.com A --resolvers google cloudflare --json --allow-inconsistentTrace DNS delegation from root to final answer.
dig-rs trace [@SERVER] NAME [TYPE] [OPTIONS]Examples:
dig-rs trace example.com
dig-rs trace @8.8.8.8 example.com A
dig-rs trace example.com --json --output-file trace.jsonRun queries from file.
dig-rs batch --file FILE [OPTIONS]Example:
dig-rs batch --file queries.txt --jsonMost query-like modes support:
-J, --jsonstructured output.--shortshort output.--tabletable output.-c, --class IN|CH|HS.-p, --port PORT.-x, --reverse IP.-4, --ipv4/-6, --ipv6.--tcp/--dot/--doh.--dnssec.--norecurse.--timeout SECONDS.--retries COUNT.--output-file FILEwrite output to file (while still printing stdout).--no-comments.--no-stats.-v, --verbose.-d, --debug.
Compare-specific:
--allow-inconsistentkeeps exit code0even if compare finds resolver inconsistency.
compare --json and trace --json output a versioned envelope:
{
"schema_version": "dig-rs/v1",
"mode": "compare or trace",
"generated_at_unix_ms": 1774233148357,
"data": { "...mode specific payload..." }
}This is designed for long-term agent compatibility and explicit schema evolution.
dig-rs is intentionally designed for LLM/agent pipelines:
- Prefer deterministic command shapes (
query,health,compare,trace,batch). - Prefer
--jsonfor machine parsing and downstream automation. - Use resolver aliases in scripts (
system,google,cloudflare, etc.). - Keep output mode explicit in prompts or tools.
- Persist artifacts with
--output-file. - Use
--allow-inconsistentwhen you want compare output but do not want hard-fail behavior.
Recommended patterns:
# Parse-ready query
dig-rs query example.com A --json
# Programmatic health check
dig-rs health example.com --json
# Consistency verification before production rollout
dig-rs compare api.example.com A --resolvers system google cloudflare
# Artifact-friendly compare output
dig-rs compare api.example.com A --resolvers system google cloudflare --json --allow-inconsistent --output-file compare.jsonSee:
Workspace crates:
dig-rs/
|- crates/dig # CLI
|- crates/dig-core # DNS logic
`- crates/dig-output # formatters
cargo fmt --all
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets --all-featuresDual-licensed:
- MIT
- Apache-2.0