githubinferredactive
agent-identity-discovery
provenance:github:agentcommunity/agent-identity-discovery
Agent Interface Discovery
README
# Agent Identity & Discovery (AID)
<div align="center">
<p><strong>DNS for Agents: Type a domain. Connect to its agent. Instantly.</strong></p>
<p>
<a href="https://github.com/agentcommunity/agent-identity-discovery/actions/workflows/ci.yml">
<img src="https://github.com/agentcommunity/agent-identity-discovery/actions/workflows/ci.yml/badge.svg" alt="Build Status" />
</a>
<a href="https://aid.agentcommunity.org/workbench">
<img src="https://img.shields.io/badge/Demo-Try%20AID%20Workbench-brightgreen?style=flat&logo=rocket" alt="Demo AID Workbench" />
</a>
<a href="https://img.shields.io/github/package-json/v/agentcommunity/agent-identity-discovery?style=flat&label=AID%20Version&color=orange">
<img src="https://img.shields.io/github/package-json/v/agentcommunity/agent-identity-discovery?style=flat&label=AID%20Version&color=orange" alt="AID Version" />
</a>
<a href="https://www.npmjs.com/package/@agentcommunity/aid">
<img src="https://img.shields.io/npm/v/@agentcommunity/aid.svg?color=blue" alt="npm version" />
</a>
<a href="https://pypi.org/project/aid-discovery/">
<img src="https://img.shields.io/pypi/v/aid-discovery.svg?color=blue" alt="PyPI version" />
</a>
<a href="https://github.com/agentcommunity/agent-identity-discovery/blob/main/LICENSE">
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" />
</a>
<a href="https://github.com/orgs/agentcommunity/discussions">
<img src="https://img.shields.io/badge/Community-Discussions-purple" alt="GitHub Discussions" />
</a>
</p>
</div>
AID is a minimal, open standard that answers one question: **"Given a domain name, where is its AI agent?"**
It uses a single DNS `TXT` record to make any agent service—whether it speaks MCP, A2A, or another protocol—instantly discoverable. No more digging through API docs, no more manual configuration.
**Built by the team at [agentcommunity.org](https://agentcommunity.org)**
### v1.2 Highlights
- ✅ **DNS-first discovery** with optional protocol-specific subdomains (`_agent._<proto>.<domain>`)
- ✅ **Well-known fallback** (HTTPS-only, JSON, ≤64KB, ~2s timeout, no redirects; TTL=300 on success)
- ✅ **PKA endpoint proof** with Ed25519 HTTP Message Signatures (RFC 9421) and ±300s time windows
- ✅ **Key aliases** for byte efficiency (single-letter keys: `v,p,u,s,a,d,e,k,i`)
- ✅ **Metadata fields** (`docs` for documentation URLs, `dep` for deprecation timestamps)
- ✅ **New protocols** (gRPC, GraphQL, WebSocket, Zeroconf)
- ✅ **Multi-language parity** (TypeScript, Python, Go, Rust, .NET, Java)
- ✅ **Enhanced CLI** with draft saving, standardized error messages, and comprehensive test coverage
[AID website](https://aid.agentcommunity.org)
## How It Works
AID establishes a well-known location for agent discovery. The process is simple, secure, and built on the backbone of the internet.
```mermaid
graph TD
A[User provides domain] --> B[Query _agent.domain TXT record]
B --> C{Record found?}
C -->|No| D[Discovery fails]
C -->|Yes| E[Parse record]
E --> F{Valid format?}
F -->|No| G[Invalid record error]
F -->|Yes| H[Extract uri, proto, auth]
H --> I[Connect to agent]
I --> J[Use MCP/A2A/OpenAPI protocol]
```
> Notes:
>
> - Canonical location is `_agent.<domain>`. When a specific protocol is requested, clients may query `_agent._<proto>.<domain>` then `_agent.<proto>.<domain>` before the base record.
> - `.well-known` JSON fallback is allowed only on DNS failure (HTTPS-only, JSON content-type, ≤64KB, ~2s timeout, no redirects). On success, TTL=300.
> - If `pka`/`kid` are present, clients perform an Ed25519 HTTP Message Signatures handshake with exact covered fields and ±300s windows.
## Guiding Principles
- **Decentralized & Open:** No central registry, no vendor lock-in. If you control a domain, you can publish an AID record.
- **Contract-First:** A language-agnostic [YAML file](./protocol/constants.yml) is the single source of truth for all protocol constants, ensuring cross-language consistency.
- **Protocol-Agnostic:** Discover agents speaking MCP, A2A, OpenAPI, or even local protocols running in Docker.
- **Idiomatic Libraries:** Core libraries are hand-written in each language for the best developer experience, with constants generated automatically.
## Getting Started
### Key Resources
| Resource | Link | Description |
| :------------------------- | :--------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Interactive Workbench** | **[aid.agentcommunity.org](https://aid.agentcommunity.org)** | The best way to see the protocol in action with a live resolver and generator. |
| **Official Documentation** | **[aid.agentcommunity.org/docs](https://aid.agentcommunity.org/docs)** | Specification, quick start guides, reference, and tooling docs. |
| **Command-Line Tool** | `npm install -g @agentcommunity/aid-doctor` | The quickest way to check, validate, generate, and save AID records. Built on @agentcommunity/aid-engine with draft saving, PKA key generation, and comprehensive diagnostics. |
| **Examples Guide** | **[EXAMPLES.md](./EXAMPLES.md)** | Complete guide to the examples system: how examples are defined, generated, and used across DNS, UI, and testing. |
> Documentation authority: `/packages/docs` in this repository is the canonical source, rendered at [aid.agentcommunity.org/docs](https://aid.agentcommunity.org/docs).
**GitHub Repository**: [github.com/agentcommunity/agent-identity-discovery](https://github.com/agentcommunity/agent-identity-discovery) - Source code, issues, and community discussions.
### Using the Libraries
Build AID-aware clients in your favorite language.
<details>
<summary><strong>TypeScript (Node.js & Browser)</strong></summary>
```bash
pnpm add @agentcommunity/aid
```
**Node.js (uses native DNS):**
```typescript
import { discover, AidError } from '@agentcommunity/aid';
const { record, ttl } = await discover('supabase.agentcommunity.org');
console.log(`Found ${record.proto} agent at ${record.uri} (TTL: ${ttl}s)`);
//=> Found mcp agent at https://api.supabase.com/mcp (TTL: 60s)
```
**Browser (uses DNS-over-HTTPS):**
```typescript
import { discover } from '@agentcommunity/aid/browser';
const { record } = await discover('supabase.agentcommunity.org');
console.log(`Found ${record.proto} agent at ${record.uri}`);
```
> **Advanced Usage**: For building custom tools, use `@agentcommunity/aid-engine` - a pure, stateless library containing all AID business logic without CLI dependencies.
</details>
<details>
<summary><strong>Python</strong></summary>
```bash
pip install aid-discovery
```
```python
from aid_py import discover, AidError
try:
result = discover("supabase.agentcommunity.org")
print(f"Found {result.record.proto} agent at {result.record.uri}")
#=> Found mcp agent at https://api.supabase.com/mcp
except AidError as e:
print(f"AID Error ({e.code}): {e}")
# NOTE: The Python package is currently published at https://pypi.org/project/aid-discovery/ and is not yet community-owned. Community transfer is planned for a future release.
```
</details>
<details>
<summar
[truncated…]PUBLIC HISTORY
First discoveredMar 21, 2026
IDENTITY
inferred
Identity inferred from code signals. No PROVENANCE.yml found.
Is this yours? Claim it →METADATA
platformgithub
first seenJul 5, 2025
last updatedMar 18, 2026
last crawledtoday
version—
README BADGE
Add to your README:
