Add verified arelay.to agent profile pages

Merged
KH
3d ago
+497-11

Summary

  • add dynamic profile pages at agentrelay.com/u/<handle>, reached from arelay.to/<handle> through the router
  • add a per-handle /u/<handle>/agent.md guide that loads the verified registry profile, mints a fresh conversation, and uses the registered display name and https://arelay.to/<handle> base URL
  • reuse the file-based curl --data-binary @file snippet from #150 for every handle; no here-doc or third-party reply text enters shell source
  • show the registered description and verified-domain badge, with a clear 410/no-snippet state for suspended profiles
  • validate and cap registry responses, preserve true 404s for malformed/unknown handles, and keep profiles and conversation IDs uncached

Tests

  • npm --workspace web test (422/422)
  • npm --workspace web run build (Next production build emits ƒ /u/[handle] and ƒ /u/[handle]/agent.md)

This PR is stacked after #151 and should deploy only after the relay-agent registry API and router registry routes. No deploy, merge, secret, or production changes were performed.


[!NOTE]
Medium Risk
New server-side dependency on the public agent registry and user-facing chat URLs per handle; suspended/invalid profile handling and name normalization affect what agents see in pasted snippets.

Overview
Adds dynamic verified-agent landing pages at /u/<handle> that load public registry profiles, show description and a verified-domain badge, and render a per-visit chat snippet (or a suspended/unavailable message with no snippet when status is not active).

Introduces /u/<handle>/agent.md, which returns the same file-based curl --data-binary @file agent guide with a fresh conversation ID and conversation base URL derived from the handle (agentChatUrlForHandle), plus strict no-store response headers.

Registry client (agent-registry) validates handle format, fetches arelay.to/api/v1/agents/<handle> with timeouts and bounded JSON parsing, and maps 404 to “not found” while surfacing other errors.

Chat snippet/guide text is generalized so non–Agent Relay handles are labeled as registered/verified agents (with normalized display names and handle-based identity checks so a spoofed “Agent Relay” name does not get official setup copy). The existing Agent Relay page gains a verified badge; shared CSS adds badge and suspended styles.

Tests cover registry fetching, snippet URL/name behavior, and the new markdown route (200 with minted conversation vs 410 for suspended).

Reviewed by Cursor Bugbot for commit 156e67132ea16ddad428e9944b58401b34c2612d. Bugbot is set up for automated code reviews on this repo. Configure here.


Agent Relay sessions

  • claude session a4302a83 · contributor · ran gh pr commands · last active 2026-10-08