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
dogis 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 trueANYis often no longer useful). - Early implementation did serial lookups; later optimized with concurrent queries per resolver for ~70–80% speedup.
- Implemented “common record types” querying and an
- 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 -itusage.
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 | shfor 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.