# Agentreg – DNS for AI agents (self-hosted, single Go binary)

> Source: <https://github.com/mkk2026/agentreg>
> Published: 2026-07-25 11:08:55+00:00

**DNS for AI agents.**

A self-hosted registry that lets your agents find each other by capability — with health and trust built in.

Everyone is building AI agents. Nobody is building the layer that lets agents
**exist alongside each other** — discovery, health, trust. The moment you run
more than a couple of MCP servers, you're hardcoding endpoints in config files,
finding out an agent is down only when something breaks, and trusting every
endpoint blindly.

MCP gave agents a common language. `agentreg`

gives them a place to find each
other.

Consul tells youwherea service is.`agentreg`

tells youwhatan agent can do,whetherit's healthy, and (soon)how much to trust it.

One Go binary. Self-hosted. No cloud, no account, no cluster. Runs on your laptop at 3 agents and scales with you.

```
# Homebrew (macOS / Linux)
brew install mkk2026/tap/agentreg

# or download a binary from the latest release
#   https://github.com/mkk2026/agentreg/releases

# or from source (Go 1.26+)
go install github.com/mkk2026/agentreg@latest
# 1. run the registry
agentctl serve &

# 2. register your agents
agentctl register search-agent -c search     -e http://localhost:3000
agentctl register db-agent     -c db-read     -e http://localhost:3001
agentctl register product-api  -c api,email   -e http://localhost:3002

# 3. see everything, with live health
agentctl list

# 4. discover by capability — use this in your agent's startup instead of a hardcoded URL
agentctl find search
agentctl find search --format json
```

`agentctl list`

:

```
NAME          CAPABILITIES  STATUS     SOURCE  LAST HEARTBEAT  ENDPOINT
db-agent      db-read       unhealthy  local   just now        http://localhost:3001
product-api   api,email     healthy    local   just now        http://localhost:3002
search-agent  search        healthy    local   just now        http://localhost:3000
```

The daemon health-checks every registered agent on an interval, so a down agent
shows up as `unhealthy`

**before** it breaks something downstream. That's the
difference between reading a status table and debugging a production incident
backwards.

**Capability-first discovery.** Ask for what you need (`find search`

), not where it lives. Endpoints move; capabilities don't.**Health built in.** Every agent is probed on a heartbeat. No separate monitoring stack to wire up.**Self-hosted, zero cloud.** One static binary. Your registry, your data, your network. Nothing leaves your machine.**Delightful at 3 agents, load-bearing at 30.** Cheap enough to adopt before you need it, so it's already there when you do.**Built to grow into trust.** The verification layer is pluggable from day one (see[Roadmap](#roadmap)).

```
  agentctl (CLI)  ──HTTP──▶  agentreg daemon
                                  │
                                  ├── Store     in-memory + atomic JSON persistence
                                  └── Verifier  health probe, on a heartbeat loop
```

Two design seams make the roadmap additive instead of a rewrite:

-
on every record (`Source`

field`local`

today;`peer:<id>`

,`from:ans`

,`from:mcp_registry`

later) so federation and cross-registry ingestion don't require a migration. -
— v1 ships a health probe; ANS-identity, prompt-injection, and`Verifier`

interface`tools/list`

verifiers plug into the same seam. -
— optional operator metadata (`labels`

`env`

,`team`

,`version`

, …) that rides along on every record and shows up in`list`

. Set it via the API today:

```
curl -X POST http://localhost:8080/agents -H 'Content-Type: application/json' \
  -d '{"name":"corebrim-search","capabilities":["search"],
       "endpoint":"http://10.0.0.12:3000",
       "labels":{"env":"prod","team":"platform","version":"1.4.2"}}'
```

agentreg |
MCP Registry | Consul | ANS (IETF) | |
|---|---|---|---|---|
| Self-hosted, no cloud dependency | ✅ | ❌ (cloud) | ✅ | ~ (ref impl) |
| Capability-based discovery | ✅ | ✅ | ~ (tags) | ✅ |
| Health checks built in | ✅ | ❌ | ✅ | ❌ |
| Single binary, 30-second setup | ✅ | n/a | ❌ (cluster) | ❌ |
| Cross-org trust / verification | 🔜 (pluggable) | ❌ | ❌ | ✅ (spec) |
| Purpose-built for agents/MCP | ✅ | ✅ | ❌ | ✅ |

`agentreg`

isn't trying to out-spec the standards bodies — it's the tool
developers actually run, built to interoperate with them.

| Method | Path | Purpose |
|---|---|---|
`POST` |
`/agents` |
register an agent (JSON body) |
`GET` |
`/agents` |
list all agents |
`GET` |
`/agents/find?capability=X` |
find by capability |
`POST` |
`/agents/{name}/heartbeat` |
agent self-reports healthy |
`GET` |
`/healthz` |
daemon liveness |

```
agentctl serve
  --port 8080                        # listen port
  --store ~/.agentreg/registry.json  # persistence file
  --heartbeat-interval 15s           # how often to health-check agents
  --probe-timeout 3s                 # per-agent probe timeout
```

`agentreg`

ships as the smallest lovable loop first, then grows toward being the
trust fabric agents rely on.

**v0.1 — the loop (now).** register · list · find · heartbeat, single binary.**Next — trust.** Pluggable verifiers: ANS identity,`tools/list`

validation, prompt-injection checks. Verification-as-a-service.**Next — federation.**`agentctl federate`

across registries; the`Source`

field lights up.**Later — the fabric.** One client that discovers and verifies across every registry (ANS, MCP Registry, local), so agents transact across org boundaries safely.

Delightful extras on the list: a live `list`

TUI, `agentctl doctor`

,
`agentctl graph`

, and zero-config auto-register from an MCP manifest.

Early days, and help is welcome. Open an issue to discuss a change, or send a PR.

```
git clone https://github.com/mkk2026/agentreg
cd agentreg
go test ./...
go build -o agentctl .
```

[MIT](/mkk2026/agentreg/blob/main/LICENSE) © Core Brim Tech

Built by Core Brim Tech · agents deserve a substrate.
