Summary
Phase A shipped the robot API (agent-token-gated /resources). Phase B adds the human web interface: a person logs in with Hellō to browse and submit resources.
Design (decided)
The registry plays the agent-provider role too (the playground pattern):
- Human hits
GET / → logs in with Hellō (registry is a Hellō relying party).
- On callback, the registry (as AP) mints a short-lived browser web-agent token bound to a key in the page.
- The browser calls the same agent-token
GET /resources and POST /resources endpoints — one code path for humans and robots.
- Adds made via the UI record
submitted_by.user = the Hellō sub, alongside agent/ap.
Work
GET /.well-known/aauth-agent.json (AP metadata) + agent-token minting (bootstrap-style), mirroring playground.
- Hellō login routes (
/login, /callback) + session.
- Static UI (
public/) that lists resources and has an add form, calling the agent-token API with the browser web-agent token.
- Sanitize Markdown
description before rendering (per spec).
Notes
- No new storage model — reuses Phase A's KV/R2.
- Reference implementation:
playground (AP + resource on one Worker).
Summary
Phase A shipped the robot API (agent-token-gated
/resources). Phase B adds the human web interface: a person logs in with Hellō to browse and submit resources.Design (decided)
The registry plays the agent-provider role too (the playground pattern):
GET /→ logs in with Hellō (registry is a Hellō relying party).GET /resourcesandPOST /resourcesendpoints — one code path for humans and robots.submitted_by.user= the Hellōsub, alongsideagent/ap.Work
GET /.well-known/aauth-agent.json(AP metadata) + agent-token minting (bootstrap-style), mirroringplayground./login,/callback) + session.public/) that lists resources and has an add form, calling the agent-token API with the browser web-agent token.descriptionbefore rendering (per spec).Notes
playground(AP + resource on one Worker).