Overview
DNS-AID — DNS-based Agent Identification and Discovery — lets AI agents find each other through the internet's existing naming infrastructure rather than a centralised registry or a hardcoded URL. You publish an agent's name, protocol, endpoint and capabilities as DNS records under a domain you already control, and any caller that knows the domain can resolve the agents it hosts. This repository is the reference implementation; the specification itself is developed at the IETF as draft-mozleywilliams-dnsop-dnsaid, and the draft — not this code — is authoritative on protocol behaviour.
The library ships as a Python SDK, a CLI and an MCP server, installed from PyPI with the extras you need. Publishing is one `dns_aid.publish()` call against whichever DNS backend you use — Route 53, Cloudflare, NS1, Cloud DNS, Infoblox, Akamai Edge DNS or dynamic DNS each have an install extra. Discovery has two paths: the DNS substrate itself, or an HTTP index for richer metadata, which also auto-detects and dereferences Agentic Resource Discovery (ARD) `ai-catalog` pointers. Results can be filtered in-process by capability, auth type, realm and signature requirements, and `dns_aid.verify()` returns a security score for an agent's records.
The project treats DNS as a trust substrate and everything above it as optional convenience. The library works standalone against any DNS provider with no dependency on a particular directory, indexer or telemetry backend; a search, indexing or telemetry layer is just an HTTP endpoint you point the SDK at, and operators are encouraged to run their own. Trust controls are opt-in and off by default, with SDK, CLI and MCP parity: per-record JWS or a DNSSEC-validated pointer for off-domain catalogs, `require_dnssec`/`min_dnssec` to enforce the resolver's AD flag on DNS-plane agents, and DANE/TLSA verification binding an agent's TLS certificate to its record.
What it does
- Publish an agent's name, protocol, endpoint and capabilities to DNS from Python or the CLI
- Discover agents by domain over the DNS substrate, or via an HTTP index for richer metadata
- Interoperates with Agentic Resource Discovery: auto-detects and dereferences ARD ai-catalog pointers
- Pluggable DNS backends — Route 53, Cloudflare, NS1, Cloud DNS, Infoblox, Akamai Edge DNS and dynamic DNS
- Filtered discovery by capability, auth type, realm and signature algorithm, plus a `verify()` call that scores an agent's records
- Opt-in DNSSEC, DANE/TLSA and JWS trust controls with matching SDK, CLI and MCP surfaces
- Ships an MCP server so an agent can perform discovery itself
Getting started
Install from PyPI with the extras you want; backend-specific extras are listed in the getting-started guide. Python 3.11, 3.12 and 3.13 are supported.
Install
The cli and mcp extras add the command-line tool and the MCP server. Add a backend extra (route53, cloudflare, ns1, cloud_dns, infoblox, akamai-edgedns, ddns) for the DNS provider you publish to.
pip install "dns-aid[cli,mcp]"Publish an agent
One call writes the agent's record under your domain.
import dns_aid
await dns_aid.publish(
name="my-agent",
domain="example.com",
protocol="mcp",
endpoint="agent.example.com",
capabilities=["chat", "code-review"]
)Discover agents at a domain
The DNS substrate is the default path; use_http_index=True adds richer metadata and dereferences ARD catalogs.
agents = await dns_aid.discover("example.com")
for agent in agents:
print(f"{agent.name}: {agent.endpoint_url}")
agents = await dns_aid.discover("example.com", use_http_index=True)Filter and verify
Filters are pure-Python predicates over the in-memory result; verify() reports how well an agent's records are secured.
result = await dns_aid.discover(
"example.com",
capabilities=["payment-processing"],
auth_type="oauth2",
require_signed=True,
)
result = await dns_aid.verify("my-agent.example.com")
print(f"Security Score: {result.security_score}/100")Commands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Make your organisation's agents findable at your own domain without registering them anywhere
- Let an agent resolve the services it needs at runtime instead of shipping hardcoded endpoint URLs
- Bind agent discovery to DNSSEC and DANE so a caller can check what it resolved before trusting it
- Interoperate with ARD catalogs and third-party agent directories without committing to any one of them
How DNS-AID compares
DNS-AID alongside other open-source multi-agent systems tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| TradingAgents | ★ 105k | LangGraph framework that mirrors a trading firm: LLM analyst, bull/bear researcher, trader and risk-management agents debate before a decision. For research, not advice. |
| Ruflo | ★ 72k | Agent meta-harness that wraps Claude Code and Codex with 100+ specialized agents, swarm coordination, vector memory, background workers and cross-machine agent federation. |
| MetaGPT | ★ 70.3k | A multi-agent framework that models a software company, assigning roles like product manager, architect, and engineer to generate code from a single prompt. |
| AutoGen | ★ 60.9k | Microsoft Research's framework for building applications where multiple agents converse with each other and with tools to solve tasks. |
| CrewAI | ★ 58.4k | A framework for assembling teams ('crews') of role-playing agents that divide tasks and collaborate to complete a goal. |
| Vibe-Trading | ★ 33.2k | An open-source trading research workspace from HKUDS: natural-language market research, multi-agent analyst teams, cross-market backtests, and an MCP server for Claude, Cursor and other clients. |
| AgentScope | ★ 31.3k | A framework for building multi-agent applications with message passing, visual debugging tools, and distributed execution. |
| DNS-AID | ★ 67 | Publish and discover AI agents through DNS instead of a central registry |