Skip to main content
Glama

agentic-dns

Agentic AI-Native DNS Routing, Diagnostics & Telemetry. Manages a complete DNS resolution chain (Pi-hole -> CoreDNS -> dnsdist -> Unbound/Stubby/DNSCrypt -> VPN DNS) with CLI, REST API, stdio MCP, and a Rust DoT/mTLS proxy server. Pure POSIX Bash + standard Unix tools -- zero Python/Node dependencies.

Release GHCR Image Multi-Arch License: MIT Context7 DeepSource DeepSource DeepSource CodeRabbit Pull Request Reviews


OCI Container (GHCR)

Pre-built multi-architecture images (linux/amd64, linux/arm64) for ephemeral agent sandboxes and headless runners.

Pulling the Image

# Pinned release
docker pull ghcr.io/dedsecorg/agentic-dns:1.6.0

# Moving major release
docker pull ghcr.io/dedsecorg/agentic-dns:v1

# Latest tracking branch
docker pull ghcr.io/dedsecorg/agentic-dns:latest

Running the Resolver Health & Trace Tools

# Quick health check
docker run --rm \
  --cap-add=NET_ADMIN \
  ghcr.io/dedsecorg/agentic-dns:v1 status

# Run trace check against host resolver
docker run --rm \
  --cap-add=NET_ADMIN \
  --network=host \
  ghcr.io/dedsecorg/agentic-dns:v1 trace api.anthropic.com

Context7 Documentation

This repository is indexed on Context7 with 134 code snippets for AI-assisted development. Use the Context7 MCP server or visit the link above for searchable documentation.

# Query via Context7 MCP
# "How to install agentic-dns?"
# "agentic-dns commands reference"
# "DNS chain architecture"

Why This Exists

Modern networks run multiple DNS layers simultaneously: Pi-hole for blocking, CoreDNS for split-horizon, dnsdist for load balancing, Unbound for recursive resolution, Stubby/DNSCrypt for DoT/DoH, plus VPN-provided DNS. When any layer fails or VPNs rotate DNS, resolution breaks silently.

agentic-dns treats the DNS chain as managed infrastructure:

  1. Discovers topology -- detects running services, VPN DNS endpoints, listening ports

  2. Health-checks each hop -- active DNS queries against every resolver

  3. Auto-reconfigures -- rewrites dnsdist/CoreDNS upstreams when VPN DNS changes

  4. Exposes telemetry -- REST API, MCP server, structured logs for AI agents

  5. Provides DoT/mTLS proxy -- Rust server terminates TLS, forwards to chain


Related MCP server: dns-mcp

Architecture

                           +------------------+
                           |  Client Query    |
                           +--------+---------+
                                    |
                                    v
                           +------------------+
                           |  Pi-hole (53)    |  -- blocking, cache
                           |  forwarder       |
                           +--------+---------+
                                    |
                                    v
                           +------------------+
                           |  CoreDNS (5352)  |  -- split-horizon, local zones
                           +--------+---------+
                                    |
                                    v
                           +------------------+
                           |  dnsdist (5330)  |  -- load balance, retry, Lua policy
                           +--------+---------+
                    +--------+--------+--------+
                    |                 |        |
                    v                 v        v
             +------------+    +------------+  +------------+
             | Unbound    |    | Stubby     |  | DNSCrypt   |
             | (5335)     |    | (5360)     |  | (5354)     |
             | recursive  |    | DoT proxy  |  | DoH proxy  |
             +-----+------+    +-----+------+  +-----+------+
                   |                 |                |
                   +--------+--------+----------------+
                            |
                            v
                   +------------------+
                   |  VPN DNS         |  -- discovered dynamically
                   |  (Proton/Nord/   |
                   |   Tailscale)     |
                   +------------------+

                           +------------------+
                           |  agentic-dns-    |  -- Rust DoT/mTLS proxy
                           |  server (853)    |     on 127.0.0.1 or Tailscale
                           +------------------+

Installation

Manual

git clone https://github.com/dedsecorg/agentic-dns
cd agentic-dns
sudo -S -p '' -S -p '' ./install.sh

Installs:

  • /usr/local/bin/agentic-dns -- main CLI

  • /usr/local/bin/agentic-dns-server -- Rust DoT/mTLS proxy (prebuilt or cargo build)

  • /etc/agentic-dns/ -- configs for dnsdist, CoreDNS, Unbound, Stubby, DNSCrypt

  • /etc/systemd/system/agentic-dns.service -- systemd unit

  • /etc/systemd/system/agentic-dns-server.service -- Rust server unit

Smithery (for MCP clients)

npx -y @smithery/cli install @dedsecorg/agentic-dns

Commands

Command

Description

agentic-dns status

Show all DNS services, addresses, types, health

agentic-dns query <domain>

Resolve through full chain

agentic-dns trace <domain>

Trace DNS path with live packet capture at each hop

agentic-dns routes

List Pi-hole upstreams (from pihole.toml) and current dnsdist routing rules

agentic-dns route add <name> <addr:port>

Add upstream to dnsdist

agentic-dns route remove <name>

Remove upstream from dnsdist

agentic-dns bypass <service> [backup]

Bypass failing service (auto-switch to backup)

agentic-dns enforce {on,off,status,clean} [ip]

Intercept phone encrypted DNS -> Pi-hole

agentic-dns pihole-log

Show recent Pi-hole DNS query log

agentic-dns health

Check health of all DNS services

agentic-dns tag

Show service tags

agentic-dns api

Start REST API server on port 8099

agentic-dns mcp

Start stdio MCP JSON-RPC server

agentic-dns server

Start Rust DoT/mTLS proxy server


DNS Chain Services

Service

Port

Role

Upstream

Pi-hole

53

Blocking, cache, DHCP

CoreDNS

CoreDNS

5352

Split-horizon, local zones

dnsdist

dnsdist

5330

Load balancer, Lua policy

Unbound, DNSCrypt

Unbound

5335

Recursive resolver

VPN DNS

Stubby

5360

DoT proxy (TLS)

VPN DNS

DNSCrypt

5354

DoH proxy

Cloudflare/Quad9 DoH

agentic-dns-server

853

DoT/mTLS proxy (Rust)

Chain entry


VPN DNS Discovery

Automatically detects VPN DNS endpoints:

  • ProtonVPN -- protonvpn status or NetworkManager proton0 interface

  • NordVPN -- WireGuard config or nordvpn status

  • Tailscale -- tailscale status --json magic DNS

  • WireGuard -- wg show allowed IPs

Set manually: VPN_DNS=10.2.0.1 agentic-dns status


Configuration

/etc/agentic-dns/ -- Service Configs

Generated by install.sh, editable for custom zones/upstreams:

  • dnsdist.conf -- routing rules, load balancing, Lua policies

  • Corefile -- CoreDNS zones, plugins

  • unbound.conf -- recursive resolver settings

  • stubby.yml -- DoT upstream certificates

  • dnscrypt-proxy.toml -- DoH server stamps

Environment Variables

Variable

Default

Description

PIHOLE_HOST

127.0.0.1

Pi-hole API address

PIHOLE_API_KEY

/etc/pihole/pihole-api-key.txt

Pi-hole API key

AGENTIC_DNS_API_PORT

8099

REST API port

AGENTIC_DNS_TLS_CERT

/etc/agentic-dns/certs/api.crt

REST API server cert (mTLS)

AGENTIC_DNS_TLS_KEY

/etc/agentic-dns/certs/api.key

REST API server key

AGENTIC_DNS_TLS_CA

/etc/agentic-dns/certs/ca.crt

CA that client certs must chain to

VPN_DNS

auto

Override VPN DNS

AGENTIC_DNS_SERVER_BIN

agentic-dns-server

Rust server binary


MCP Integration

Start read-write MCP server:

agentic-dns mcp

Tools exposed:

  • dns_status -- all services health + config

  • dns_query -- resolve domain through chain

  • dns_trace -- packet capture at each hop

  • dns_route_add -- add dnsdist upstream

  • dns_route_remove -- remove dnsdist upstream

  • dns_bypass -- failover service

  • dns_enforce -- phone DNS interception

  • dns_pihole_log -- Pi-hole query log


REST API

The API is mTLS-only: socat terminates TLS 1.3 and requires a client cert signed by ca.crt before the handler runs. See docs/pki.md for generating the CA, server and per-agent client certs with openssl.

agentic-dns api
# or
curl --cacert /etc/agentic-dns/certs/ca.crt --cert agent.crt --key agent.key \
     https://localhost:8099/api/v1/status

Endpoints (all read-only; responses are {"status":"ok","text":"..."}):

  • GET /api/v1/status -- full service status

  • GET /api/v1/health -- health checks

  • GET /api/v1/routes -- Pi-hole upstreams (pihole.toml) and dnsdist upstreams

  • GET /api/v1/query?domain=example.com -- resolve

  • GET /api/v1/trace?domain=example.com -- trace

  • GET /api/v1/pihole/log -- Pi-hole logs

Mutations (route add/remove, bypass, enforce) are CLI/MCP-only and are deliberately not exposed over the network.


Phone DNS Interception (Android)

# On server (run as root)
agentic-dns enforce on 100.87.74.22

# On Android: set DNS to server Tailscale IP (100.74.31.18)
# All DoT (port 853) from phone -> Pi-hole -> chain

Uses nftables/iptables TPROXY + agentic-dns-server DoT proxy to transparently intercept encrypted DNS (port 853) and force through Pi-hole.


Rust DoT/mTLS Server

agentic-dns-server -- standalone binary:

  • Terminates TLS on 853 (DoT) or 443 (DoH)

  • Requires client certs chaining to --client-ca (mTLS, mandatory)

  • Hybrid post-quantum key exchange only (X25519MLKEM768; --allow-classical-kx to also offer X25519)

  • Forwards to local DNS chain

  • Metrics on :9090/metrics (Prometheus)

  • Zero-copy, async, ~2MB RAM

Build:

cd server && cargo build --release
# or download prebuilt from releases

Requirements

  • Linux (systemd, nftables/iptables)

  • Pi-hole, CoreDNS, dnsdist, Unbound, Stubby, DNSCrypt-Proxy installed

  • dig, ss, jq, bash 4.4+

  • Rust 1.75+ (for server build)

  • CAP_NET_ADMIN, CAP_NET_BIND_SERVICE (for server)


License

MIT -- see LICENSE.


  • agentic-route -- kernel policy routing reconciler (same author)

  • hermes-dns -- private fork with real IPs, same engine# Test payment notification test test2 test3

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Connects AI assistants to Pi-hole network-wide ad blocker, enabling monitoring of DNS traffic statistics, controlling blocking settings, managing whitelist/blacklist domains, viewing query logs, and performing maintenance tasks through natural language.
      16
      125 npm
      8
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Real-time DNS security analysis for AI assistants via MCP. Enables DNSSEC chain validation, email authentication posture, and registration intelligence directly from chat sessions.
      1
      -
    • A
      license
      C
      quality
      C
      maintenance
      Provides network operations tools such as ping, traceroute, DNS queries, and nmap scans via MCP, enabling network diagnostics and monitoring through natural language.
      30
      16
      MIT