A fast, friendly DNS client — community maintained

dog-community is a maintained fork of the beloved terminal DNS client (dog/doge). It keeps the human-readable output you know, adds steady fixes, and supports DNS over HTTPS/TLS with JSON output for scripting.

Screenshot of dog-community querying google.com
Colorful, readable output with multiple record types in one run.

About the project

Why this fork?

The original project rules; we want it to keep thriving. dog-community continues the work with active maintenance, packaging, platform support, and small UX touches that make daily usage smoother.

Renaming note

You may still see doge in some places as we transition. The command and packages are being renamed to dog/dog-community over time. Expect some overlap while we ship updates.

License & ethos

Open source, MIT. We welcome contributions, packaging help, and CI tweaks (Windows and distro coverage especially).

Install

Cargo

cargo install dns-doge

Binary name may still be doge during the rename window.

Arch Linux (AUR)

yay -S dns_doge

Deb/RPM (coming)

Debian/Ubuntu packages and RPMs are planned; watch the Releases page.

Docker/Podman

docker build -t dog-community .
docker run -it --rm dog-community doge example.net
# or alias the image:
alias doge="docker run -it --rm dog-community"
        
Build from source
git clone https://github.com/Dj-Codeman/dog_community
cd dog_community
cargo build --release
./target/release/doge --help
      

Usage

Basics

doge example.net                         # default query
doge example.net MX                      # specific record type
doge example.net MX @1.1.1.1             # specific nameserver
doge example.net MX @1.1.1.1 -T          # TCP instead of UDP
        

Arguments style

doge -q example.net -t MX -n 1.1.1.1 -T  # explicit flags
        

JSON & scripting

doge example.com AAAA -J | jq .
        

Protocol modes

-U/--udp     # DNS over UDP
-T/--tcp     # DNS over TCP
-S/--tls     # DNS over TLS
-H/--https   # DNS over HTTPS
        
More options (highlights)
-q, --query HOST            Domain to query
-t, --type TYPE             A, AAAA, MX, NS, TXT, ...
-n, --nameserver ADDR       Resolver to use (e.g. 1.1.1.1)
-p, --port PORT             Non-default port
--class CLASS               IN, CH, HS
-1, --short                 First result only
-J, --json                  JSON output
--time                      Print response time
--edns=SETTING              (disable | hide | show)
--txid NUMBER               Force transaction ID
      

Features

Readable output

Aligned columns, color, and combined queries (A/AAAA/NS/MX/TXT) that are easy on the eyes.

DoH/DoT

DNS over HTTPS/TLS support for privacy-aware lookups out of the box.

JSON mode

Emit machine-friendly JSON for pipelines and scripts.

Cross-platform

Rust 2021, small static releases where possible; Windows nameserver autodetect included.

Contribute

Issues and PRs welcome! Packaging help (Deb/RPM, Scoop/Winget), CI, and docs are great places to start.