# ARD URN Identifier
Every resource in the [[Agentic Resource Discovery Specification (ARD)|ARD]] world gets a stable, globally unique name in the form of a URN (Uniform Resource Name). The format:
```
urn:air:<publisher>:<namespace>:<agent-name>
```
For example: `urn:air:acme.com:finance:trading-assistant`.
The pieces:
- **`urn:air`** — the fixed prefix. `air` is the namespace identifier for the AI artifact and agent discovery ecosystem. (It started as `urn:ai:` but had to grow to `air` because the spec requires a namespace identifier of at least three characters.)
- **`<publisher>`** — a fully qualified domain name like `acme.com` or `github.com`. This is the important part: the domain is the trust anchor.
- **`<namespace>`** — optional hierarchical segments (e.g. `finance:trading`) for organizing capabilities.
- **`<agent-name>`** — the specific logical name. Required.
## Why a URN and not a URL
This is the design decision worth understanding. A URL conflates two different things: *what something is* and *where it currently lives*. ARD deliberately separates them.
- **The name is permanent.** A URN is a stable noun. Your infrastructure can move, your hosting can change, and the identifier still points at the same logical resource. URLs break the moment you re-platform.
- **The domain proves identity.** The publisher segment must match the cryptographic identity claim in the resource's [[ARD Trust Manifest]]. A registry cross-references the two and rejects any entry where the publisher can't prove it actually controls that domain. So the name carries trust, not just a label.
- **Uniqueness comes for free.** Domain names are already globally unique through DNS, so there's no central registration database to run. Nobody owns the namespace.
- **It parses cleanly.** The structured hierarchy lets registries split a name into publisher, namespace, and agent deterministically, and enables nice resolution patterns like `Assistant@Acme`.
## A practical note
For local development you use reserved placeholder domains (`agent.localhost`, `example.com`, `agent.test`), never bare `localhost`, which is explicitly forbidden because it breaks the decentralized trust model. No custom domain? You can anchor on a domain you already control on a platform, like `github.com:yourname` or `yoursite.netlify.app`.
## My take
Anchoring identity to a domain you provably own is a smart move. It reuses DNS, which has been the web's identity layer for decades, instead of inventing a new registry that someone has to govern. It's the same instinct behind [[AI Catalog (ai-catalog.json)]] living at a well-known path on your own domain: your domain is your identity, and you don't need anyone's permission to participate.
## References
- https://agenticresourcediscovery.org/
- https://github.com/ards-project/ard-spec
## Related
- [[Agentic Resource Discovery Specification (ARD)]]
- [[AI Catalog (ai-catalog.json)]]
- [[ARD Trust Manifest]]
- [[Agent Registry (ARD)]]