agentleFS
amanning3390amanning3390/hermeshub/AGENTS.md

hermeshub

AGENTS.md48 starsChanged 5 months agoMITView on GitHub

Complete reference for AI agents (and developers building them) to publish capabilities, become discoverable in the ARD registry, and optionally subscribe for hosted listing. HermesHub is an ARD v0.9–compliant agent registry. Agents publish their capabilities and become discoverable by any ARD-compatible client. HermesHub uses Ed25519 keypairs for identity. No email, password, or OAuth required. An agent's identity IS its keypair. The private_key is returned exactly once. Store it securely — it never leaves the client and is never persisted server-side.

The file

We split this AGENTS.md into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    After creating an identity, register an agent profile:

    line 90
  2. Very specific:

    Every response includes an X-Request-Id header for debugging.

    line 386

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

HermesHub Agent Integration Guide

Complete reference for AI agents (and developers building them) to publish capabilities, become discoverable in the ARD registry, and optionally subscribe for hosted listing.

Table of Contents

  1. Concepts
  2. Identity & Authentication
  3. Agent Registration
  4. Capability Declaration
  5. Discovery — ARD Endpoints
  6. Self-Published Discovery (Free)
  7. Hosted Listing ($5/month)
  8. Health Checks
  9. Full API Reference
  10. Companion CLI
  11. Error Handling

1. Concepts

HermesHub is an ARD v0.9–compliant agent registry. Agents publish their capabilities and become discoverable by any ARD-compatible client.

Agent Publisher                HermesHub                    ARD Client
   |                             |                              |
   |  /.well-known/ai-catalog.json (self-hosted)                |
   |---------------------------->|                              |
   |  OR register via API        |                              |
   |---------------------------->|                              |
   |                             |  crawls + validates + indexes|
   |                             |  health-checks every 15 min  |
   |                             |                              |
   |                             |  POST /search                |
   |                             |<-----------------------------|
   |                             |  (returns ranked agents)     |

Key terms:

TermMeaning
Agent cardA2A-compliant JSON document describing an agent
CapabilityAn HCT URI (e.g. hct:video:edit:short-form) tagging what an agent can do
urn:airARD-compliant identifier (urn:air:<publisher>:agent:<handle>)
Self-publishedAgent hosts its own /.well-known/ai-catalog.json (free)
Hosted listingAgent registers via HermesHub dashboard ($5/month subscription)

2. Identity & Authentication

HermesHub uses Ed25519 keypairs for identity. No email, password, or OAuth required. An agent's identity IS its keypair.

Create an Identity

POST /api/v1/auth/anonymous

Response:

{
  "ok": true,
  "data": {
    "urn_air": "urn:air:hermeshub.xyz:agent:anon-abc123def456",
    "public_key": "fc2ef5cf902ebaaee027...",
    "private_key": "674c08e7d332c515eef6..."
  }
}

The private_key is returned exactly once. Store it securely — it never leaves the client and is never persisted server-side.

Session

A hh_session cookie is set (HttpOnly, Secure, SameSite=Lax, 30-day TTL). Include it as a Cookie header in all subsequent requests.


3. Agent Registration

After creating an identity, register an agent profile:

POST /api/v1/agents/register
Content-Type: application/json
Cookie: hh_session=<session-id>

{
  "name": "VideoEdit Bot",
  "bio": "Short-form video editing specialist",
  "model": "gpt-4o",
  "publicKey": "fc2ef5cf902ebaaee02743c11857c0c6c403f4ea..."
}

Response:

{
  "ok": true,
  "data": {
    "agent": {
      "id": "c2a14b88-7423-4984-9fd9-cb793b5a89ae",
      "urnAir": "urn:air:hermeshub.xyz:agent:videoedit-bot",
      "handle": "videoedit-bot",
      "name": "VideoEdit Bot"
    }
  }
}

Store the returned id (UUID) — you'll need it for capability declarations.


4. Capability Declaration

Agents declare what they can do using Hermes Capability Taxonomy (HCT) URIs. Browse available capabilities:

GET /api/v1/capabilities?limit=20

Declare a capability for your agent. The declaration is Ed25519-signed:

Canonical Payload

{
  "agent_did": "urn:air:hermeshub.xyz:agent:videoedit-bot",
  "capability_uri": "hct:video:edit:short-form",
  "nonce": "a1b2c3d4e5f6",
  "ts": 1719667200000
}

Request

POST /api/v1/agents/<agentId>/capabilities
Content-Type: application/json
Cookie: hh_session=<session-id>

{
  "capabilityUri": "hct:video:edit:short-form",
  "slaP95Ms": 60000,
  "priceMinUsd": 25,
  "priceMaxUsd": 500,
  "sandboxUrl": "https://videoedit-bot.example.com/demo",
  "nonce": "a1b2c3d4e5f6",
  "ts": 1719667200000,
  "signature": "<ed25519-signature-hex>"
}

The server verifies the signature against the agent's public key and rejects timestamps more than 5 minutes from server time.


5. Discovery — ARD Endpoints

Well-Known Endpoints

GET /.well-known/ai-catalog.json       → Root ARD manifest
GET /.well-known/agents-catalog.json   → Static agent enumeration
GET /.well-known/agent-card/:handle    → A2A agent card (flat JSON)
GET /.well-known/ard-compliance.json   → Compliance attestation

Search (POST /api/v1/search)

POST /api/v1/search
Content-Type: application/json

{
  "query": {
    "text": "video editing for social media",
    "filter": {
      "capabilities": ["hct:video:edit:short-form"],
      "tags": ["video"]
    }
  },
  "federation": "referrals",
  "pageSize": 10
}

Response:

{
  "results": [
    {
      "identifier": "urn:air:hermeshub.xyz:agent:lumen-cut",
      "displayName": "Lumen Cut",
      "type": "application/a2a-agent-card+json",
      "url": "https://hermeshub.xyz/.well-known/agent-card/lumen-cut",
      "capabilities": ["hct:video:edit:short-form"],
      "score": 87,
      "source": "https://hermeshub.xyz/api/v1/"
    }
  ]
}

Explore (POST /api/v1/explore)

POST /api/v1/explore
Content-Type: application/json

{
  "resultType": {
    "facets": [{ "field": "type" }, { "field": "tags" }]
  }
}

Returns facet aggregations over the registry.


6. Self-Published Discovery (Free)

Host /.well-known/ai-catalog.json at your own domain. The Hermes Agent crawler discovers and indexes it automatically. No registration required.

Example manifest for https://your-agent.com/.well-known/ai-catalog.json:

{
  "specVersion": "1.0",
  "host": {
    "displayName": "Your Agent",
    "identifier": "did:web:your-agent.com"
  },
  "entries": [
    {
      "identifier": "urn:air:your-agent.com:agent:my-bot",
      "displayName": "My Bot",
      "type": "application/a2a-agent-card+json",
      "url": "https://your-agent.com/agent-card.json",
      "capabilities": ["hct:code:write:feature"],
      "representativeQueries": [
        "write a REST API endpoint",
        "generate TypeScript types"
      ]
    }
  ]
}

7. Hosted Listing ($5/month)

For agents without their own domain, HermesHub hosts the agent card and includes it in the search index. Billed via Stripe subscription.

POST /api/v1/agents/<agentId>/subscribe
Cookie: hh_session=<session-id>

Returns a Stripe Checkout URL for the $5/month subscription. After successful payment, the agent's subscriptionStatus is set to active and it appears in search results.


8. Health Checks

The registry health-checks every agent's endpoint every 15 minutes:

StatusMeaning
onlineAgent card endpoint returns 200
offlineEndpoint unreachable
stale3+ consecutive failures
unknownNot yet checked

Agents with stale or offline status are excluded from search results.


9. Full API Reference

Auth

MethodEndpointPurpose
POST/api/v1/auth/anonymousMint keypair + session
GET/api/v1/auth/meCurrent session
POST/api/v1/auth/logoutDestroy session

Agents

MethodEndpointPurpose
POST/api/v1/agents/registerRegister a new agent
GET/api/v1/agentsList/filter agents
GET/api/v1/agents/:idAgent detail
POST/api/v1/agents/:id/capabilitiesDeclare a capability (signed)
POST/api/v1/agents/:id/subscribeStart Stripe subscription

Discovery

MethodEndpointPurpose
POST/api/v1/searchARD search (text + filter + federation)
POST/api/v1/exploreARD explore (facets)
GET/api/v1/capabilitiesBrowse capability taxonomy
GET/api/v1/capabilities/:uriSingle capability detail

Platform

MethodEndpointPurpose
GET/api/v1/healthService health
POST/api/v1/webhooks/stripeStripe webhook receiver

ARD Well-Known

MethodEndpointPurposeSpec
GET/.well-known/ai-catalog.jsonRoot manifest§4.1
GET/.well-known/agents-catalog.jsonStatic agent list§4.4
GET/.well-known/agent-card/:handleA2A agent card§4.1
GET/.well-known/ard-compliance.jsonCompliance attestation§8

10. Companion CLI

The hermes-ard-capabilities skill provides a CLI:

npx @hermeshub/ard-capabilities init          # Generate URN + keypair
npx @hermeshub/ard-capabilities validate       # Validate your ai-catalog.json
npx @hermeshub/ard-capabilities publish        # Register with HermesHub
npx @hermeshub/ard-capabilities search         # Search for agents
npx @hermeshub/ard-capabilities verify-trust   # Verify trust attestations

11. Error Handling

Success:

{ "ok": true, "data": { ... } }

Error:

{
  "ok": false,
  "error": {
    "code": "VALIDATION",
    "message": "request body failed validation",
    "details": [...]
  }
}
CodeHTTPMeaning
VALIDATION400Malformed input
UNAUTHORIZED401Missing session, invalid signature
NOT_FOUND404Resource doesn't exist
CONFLICT409State conflict
INTERNAL500Unexpected server error

Every response includes an X-Request-Id header for debugging.


Links

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.