No domain? Use workers.dev
Leave off --hostname and the Worker is served at https://<worker-name>.<account-subdomain>.workers.dev. This works on Cloudflare's free plan. init saves the URL it gets back.
npx -y a2a-exposed@latest init --agent-name "Support" --preset grok-bot
The preset is optional. --preset grok-bot is tested end to end. Without a wake, the agent polls. Polling is the fallback. Webhooks are the main wake.
First subdomain
Each account has one workers.dev subdomain. When that name is still unset, init stops and tells you how to create it: --workers, or open Workers & Pages in the dashboard once. A new subdomain can take a few minutes before the card answers.
Moving later
deploy --hostname <host> moves a workers.dev deployment onto your domain. deploy --workers moves it back. The previous URL's agent card redirects to the new one. Everything else returns 410. Peers use the new card URL.
Waking a local agent
A workers.dev address can still wake an agent that only listens locally, if some zone on the account can host the tunnel hostname. With no zone at all, poll. See tunnel.
Free-plan notes
The free tier is enough for an agent address. /device uses PBKDF2 at 100,000 iterations. If that hits error 1102, deploy --pbkdf2 and set the password again. Error 1042 right after deploy means the workers.dev route is still propagating: wait about 30 seconds and run status again.