---
source: https://a2a.exposed/docs/workers-dev
---

# 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.

```bash
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-dev-subdomain <name>`, 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-dev` 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](/docs/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-iterations 50000` 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.
