

doggo - Command-line DNS client for humans
doggo - Command-line DNS client for humans
doggo is a modern command-line DNS client (like dig) written in Golang. It outputs information in a neat concise manner and supports protocols like DoH, DoT, DoQ, and DNSCrypt as well.
It’s totally inspired by dog which is written in Rust. I wanted to add some features to it but since I don’t know Rust, I found it as a nice opportunity to experiment with writing a DNS Client from scratch in Go
myself. Hence the name dog
+ go
=> doggo.
Installation
Easy Install (Recommended)
curl -sS https://raw.githubusercontent.com/mr-karan/doggo/main/install.sh | sh
Package Managers
- Homebrew:
brew install doggo
- MacPorts (macOS):
port install doggo
- Arch Linux:
yay -S doggo-bin
- Scoop (Windows):
scoop install doggo
- Eget:
eget mr-karan/doggo
Binary Install
You can download pre-compiled binaries for various operating systems and architectures from the Releases page.
Go Install
If you have Go installed on your system, you can use the go install
command:
go install github.com/mr-karan/doggo/cmd/doggo@latest
The binary will be available at $GOPATH/bin/doggo
.
Docker
docker pull ghcr.io/mr-karan/doggo:latestdocker run --rm ghcr.io/mr-karan/doggo:latest example.com
For more installation options, including binary downloads and Docker images, please refer to the full installation guide.
Quick Start
Here are some quick examples to get you started with doggo:
# Simple DNS lookupdoggo example.com
# Query MX records using a specific nameserverdoggo MX github.com @9.9.9.9
# Use DNS over HTTPSdoggo example.com @https://cloudflare-dns.com/dns-query
# JSON output for scriptingdoggo example.com --json | jq '.responses[0].answers[].address'
# Reverse DNS lookupdoggo --reverse 8.8.8.8 --short
# Using Globalpingdoggo example.com --gp-from Germany,Japan --gp-limit 2
Features
- Human-readable output with color-coded and tabular format
- JSON output support for easy scripting and parsing
- Multiple transport protocols: DoH, DoT, DoQ, TCP, UDP, DNSCrypt
- Support for
ndots
andsearch
configurations - Multiple resolver support with customizable query strategies
- IPv4 and IPv6 support
- Web interface available
- Shell completions for
zsh
andfish
- Reverse DNS lookups
- Flexible query options including various DNS flags
- Debug mode for troubleshooting
- Response time measurement
- Cross-platform support
Documentation
For comprehensive documentation, including detailed usage instructions, configuration options, and advanced features, please visit our official documentation site.
← Back to projects