Herdr UI
Herdr의 TUI가 뛰어나며, 창을 통해 추가되는 기능
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Agent Interface Discovery
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The 0-th hop for agent discovery.
AID is a minimal, open standard that answers one question: "Given a domain name, where does its agent interaction begin?"
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.
AID v2 is the current normative protocol surface in packages/docs/specification.md. packages/docs/specification_v2_explained.md remains as non-normative design history.README 전문 보기 ↗AID is a minimal, open standard that answers one question: "Given a domain name, where does its agent interaction begin?"
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
AID v2 is the current normative protocol surface in packages/docs/specification.md. packages/docs/specification_v2_explained.md remains as non-normative design history.
v=aid2.k/pka is the unpadded base64url Ed25519 JWK x value.keyid is the RFC 7638 JWK thumbprint derived from k; v2 records do not publish DNS kid/i.Accept-Signature and a nonce.created, expires, exact nonce echo, and response Cache-Control: no-store.aid2 PKA, clients send the queried host in the AID-Domain header by default and report a domainBound indicator (true only for a verified domain-bound proof — one whose aid-pka-v2 covered set includes "aid-domain";req). Requesting binding does not by itself mitigate unauthorized association — only domain-binding=require enforces it. See specification Appendix B.7.Date, no AID-Challenge, no base58 z... key, and no DNS kid/i._agent.<domain>keyid, nonce, created, expires, and no-storev,p,u,s,a,d,e,k; legacy aid1 also uses i)docs for documentation URLs, dep for deprecation timestamps)AID establishes a well-known location for agent discovery. The process is simple, secure, and built on the backbone of the internet.
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>. Clients query the base record first. Protocol-specific_agent._<proto>.<domain>probing is legacy, diagnostic, or base-failure-only behavior where explicitly supported and configured..well-knownJSON fallback is allowed only on DNS failure (HTTPS-only, JSON content-type, ≤64KB, ~2s timeout, no redirects). On success, TTL=300.- For
aid2, ifpka/kis present, clients perform nonce-bound RFC 9421 endpoint proof using the derived JWK thumbprint keyid and responseCache-Control: no-store. Clients send the queried host inAID-Domainby default and reportdomainBound(Appendix B.7); onlydomain-binding=requireenforces binding.- For legacy
aid1,pka/kidstill use the v1 compatibility handshake withAID-Challenge, signedDate, andkeyidmatching DNSkid.
| Resource | Link | Description |
|---|---|---|
| Interactive Workbench | aid.agentcommunity.org | The best way to see the protocol in action with a live resolver and generator. |
| Official Documentation | 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 | Complete guide to the examples system: how examples are defined, generated, and used across DNS, UI, and testing. |
Documentation authority:
/packages/docsin this repository is the canonical source, rendered at aid.agentcommunity.org/docs.
GitHub Repository: github.com/agentcommunity/agent-identity-discovery - Source code, issues, and community discussions.
Build AID-aware clients in your favorite language.
pnpm add @agentcommunity/aid
Node.js (uses native DNS):
import { discover, AidError } from '@agentcommunity/aid';
const { record, ttl } = await discover('agentcommunity.org');
console.log(`Found ${record.proto} agent at ${record.uri} (TTL: ${ttl}s)`);
Browser (uses DNS-over-HTTPS):
import { discover } from '@agentcommunity/aid/browser';
const { record } = await discover('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.
pip install aid-discovery
from aid_py import discover, AidError
try:
record, ttl = discover("agentcommunity.org")
print(f"Found {record['proto']} agent at {record['uri']} (TTL: {ttl}s)")
except AidError as e:
print(f"AID Error ({e.code}): {e}")
Not yet published as a standalone Go module. The first release must use a
packages/aid-go/vX.Y.Ztag after this change has merged. Until then, consume the SDK from source with its canonical v2 module path.
go mod edit -require=github.com/agentcommunity/agent-identity-discovery/packages/aid-go/[email protected]
go mod edit -replace=github.com/agentcommunity/agent-identity-discovery/packages/aid-go/v2=../agent-identity-discovery/packages/aid-go
import (
"fmt"
"log"
"time"
aid "github.com/agentcommunity/agent-identity-discovery/packages/aid-go/v2"
)
func main() {
record, ttl, err := aid.Discover("supabase.agentcommunity.org", 5*time.Second)
if err != nil {
log.Fatalf("AID Error: %v", err)
}
fmt.Printf("Found %s agent at %s (TTL: %d)\n", record.Proto, record.URI, ttl)
//=> Found mcp agent at https://api.supabase.com/mcp (TTL: 60)
}
This repository uses a PNPM/Turborepo monorepo structure. It contains the full suite of libraries, tools, and documentation for the AID standard.
| Package | Status | Description |
|---|---|---|
| @agentcommunity/aid | Public | Core TypeScript library for Node.js and Browsers |
| @agentcommunity/aid-engine | Public | Pure business logic library (discovery, validation, PKA) |
| @agentcommunity/aid-doctor | Public | Official CLI for checking, validating, and generating AID records (wraps aid-engine) |
| @agentcommunity/aid-conformance | Public | Conformance suite exporting fixtures and a CLI runner |
| aid-discovery (Python) | Public | Official Python library |
| aid-go | Source | Official Go library; standalone module repo/tags not published yet |
| aid-rs (Rust) | Source | Parser + discovery; crates.io name not published by us yet |
agent-identity-discovery/
├── protocol/ # Protocol constants (YAML source of truth)
├── scripts/ # Code generation and utility scripts
├── packages/
│ ├── aid/ # Core TypeScript library (Node.js + Browser)
│ ├── aid-engine/ # Pure business logic library (stateless)
│ ├── aid-doctor/ # CLI tool (wraps aid-engine with side effects)
│ ├── aid-py/ # Python library
│ ├── aid-go/ # Go library
│ ├── aid-rs/ # Rust library (parser + discovery; handshake feature)
│ ├── aid-dotnet/ # .NET library (parser + discovery + PKA)
│ ├── aid-java/ # Java library (parser + discovery + PKA)
│ ├── docs/ # Markdown documentation (rendered at /docs)
│ ├── web/ # Next.js web workbench + docs renderer
│ ├── e2e-tests/ # End-to-end tests
│ └── (test-runners)/ # Internal test runners for Go/Python
├── tracking/ # Development progress tracking (PHASE_*.md)
├── .github/ARCHITECTURE.md # Comprehensive architecture documentation
├── tsconfig.base.json # Shared TypeScript configuration
├── tsup.config.base.ts # Shared build configuration
└── ... # Other configuration files
This project follows a production-grade monorepo architecture designed for long-term maintainability and developer productivity. Our ARCHITECTURE.md provides comprehensive documentation covering:
Why This Matters: Understanding our architectural decisions enables contributors to extend the project effectively and ensures consistent development practices as the team scales. Every choice prioritizes long-term project health over short-term convenience.
The AID CLI follows a clean architecture pattern with clear separation of concerns:
@agentcommunity/aid-engine: Pure, stateless library containing all business logic (discovery, validation, PKA handshakes)@agentcommunity/aid-doctor: Thin CLI wrapper that handles user interaction, filesystem operations, and orchestrates the engineWhy This Separation:
pnpm gen reads protocol/constants.yml and writes language constants.Prerequisites: Node.js (v18.17+), PNPM (v8+)
# 1. Clone the repository
git clone https://github.com/agentcommunity/agent-identity-discovery.git
cd agent-identity-discovery
# 2. Install dependencies
pnpm install
Thanks to Turborepo's intelligent caching, commands only rebuild what changed.
| Command | Description |
|---|---|
pnpm dev | Start all packages in development/watch mode. |
pnpm dev:core | Start only core libraries (aid + aid-doctor) for focused work. |
pnpm dev:web | Start web interface and its dependencies. |
pnpm build | Build all packages for production (with intelligent caching). |
pnpm test | Run the entire test suite across all languages (TS, Python, Go). |
pnpm lint | Lint and format all code. |
pnpm e2e | Run end-to-end tests against the live showcase records. |
pnpm gen | Regenerate constant files from the YAML contract. |
pnpm clean | Remove all build artifacts (dist, .turbo, etc.). |
The single source of truth for all protocol constants is protocol/constants.yml. To update them across all language packages, follow this process:
protocol/constants.yml.pnpm gen
pnpm clean && pnpm build && pnpm test
Commit the changes to protocol/constants.yml along with all the newly generated files. The CI pipeline will fail if they are not in sync.AID v2 implementation and docs are aligned in this branch. Package publication and release governance are still separate release steps.
Implemented in the worktree:
aid2 constants and generated spec metadataNext Step: finalize release ownership, package publication, and showcase DNS rollout.
engines field and .nvmrc)Thanks to our production-grade setup:
This project is licensed under the MIT License - see the LICENSE file for details.
Built by the team at agentcommunity.org
| Source |
| Parser + discovery + PKA + well-known; NuGet package not published yet |
| aid-java (Java) | Source | Parser + discovery + PKA + well-known; Maven Central package not published yet |
| @agentcommunity/aid-web | Private | The Next.js app for the website and workbench |
| @agentcommunity/e2e-tests | Private | E2E tests validating our live showcase domains |
| (test runners) | Private | Internal packages for orchestrating Python and Go tests via Turbo |