Show HN: Doggo – A powerful, human-friendly DNS client for the command line

Project purpose & design

  • Built originally as a hobby/learning project while working with Kubernetes DNS quirks (e.g., ndots), aiming for a clearer, environment-agnostic DNS client.
  • Implemented in Go without external CLI frameworks to minimize dependencies; includes a small custom help/formatting utility.
  • v1.0 release was delayed for over a year due to life and procrastination; recent push to finalize and tag releases properly.

Relation to other DNS tools

  • Explicitly inspired by dog (Rust); author wanted similar functionality but in Go, hence “dog + go”.
  • Some users report dog is now hard to build due to outdated dependencies, which feeds into ecosystem stability concerns.
  • Other tools mentioned: dig, q, Hickory DNS utilities, bore, geodns, various “what’s my IP” endpoints and IP info CLIs.

Features, DNS behavior & UX

  • Primarily a query client (like dig), not for configuring system DNS.
  • Supports DNSCrypt and has a web UI that can be run locally.
  • Initially lacked “ANY/all records”-style functionality; community pushed for it.
    • Implemented “common record types” querying and an ANY-like feature (noting that true ANY is often no longer useful).
    • Early implementation did serial lookups; later optimized with concurrent queries per resolver for ~70–80% speedup.
  • Querying multiple nameservers shows duplicate answers when resolvers are configured redundantly; this is intentional to surface differences.

Performance, installation & distribution

  • Some users observed slow multi-record queries compared to dig; the concurrency change targets this.
  • Installation hiccups via go install (wrong package path, binary name) were quickly patched.
  • Binaries are provided via GitHub releases; also Docker image exists, with suggestions to document --rm -it usage.

Language, ecosystem & packaging debates

  • Discussion on Go’s “gets it done” reputation, static binaries, and suitability for DevOps tooling.
  • Contrast drawn with Rust, JS, and Python ecosystems where dependency churn can break builds after a few years.
  • Some prefer OS packages over “go install” or curl | sh for trust and supply-chain reasons; others argue containers or static binaries are convenient enough.
  • Mixed reactions: many enthusiastic users and adopters, alongside skepticism about yet another DNS CLI and the overhead of installing language toolchains.