ns CLI

Run locally without us. No middleman. No rate limits. Same engine as ns.lol.

MITGo17 resolvers

Install

# Homebrew
brew install yokedotlol/tap/ns

# Or one-liner
curl -sSL https://ns.lol/install.sh | bash

# Or download from GitHub Releases
curl -sL https://github.com/yokedotlol/ns-lol/releases/latest/download/ns_darwin_arm64.tar.gz | tar xz
sudo mv ns /usr/local/bin/

Quick Start

# Full DNS lookup
ns stripe.com

# JSON output (default when piped)
ns stripe.com | jq

# Specific record type
ns stripe.com -t MX

# Propagation check across 17 global resolvers
ns stripe.com propagation
ns stripe.com -p

# DNS health audit
ns stripe.com health

# Email security (SPF/DKIM/DMARC)
ns stripe.com email

# DNSSEC & security
ns stripe.com security

# Side-by-side comparison
ns compare stripe.com shopify.com

Three Modes

ModeWhenUse
PrettyTTY (default)Human-readable, colored output
JSONPiped / --jsonMachine-readable, matches ns.lol API
Quiet--quietExit code only — for scripts

Commands

ns <domain>Full DNS lookup (all record types)
ns <domain> -t <type>Query specific record type (A, AAAA, MX, NS, TXT, etc.)
ns <domain> propagationCheck propagation across global resolvers
ns <domain> healthDNS health audit
ns <domain> emailEmail security audit (SPF/DKIM/DMARC)
ns <domain> securityDNSSEC & security check
ns compare <a> <b>Side-by-side DNS comparison
ns versionPrint version info

Options

-j, --jsonJSON output (default when piped)
-q, --quietExit code only
--no-colorDisable ANSI colors
-t, --type <TYPE>Record type (A, AAAA, MX, NS, TXT, etc.)
-pShortcut for propagation
--timeout <dur>Request timeout (default 30s)

Pipe Support

# Read domains from stdin
echo "example.com" | ns

# Batch from a file
cat domains.txt | ns

Exit Codes

0Lookup succeeded
1Lookup succeeded, issues found
2Usage error or request failed