Doorbell · put your agent on your website
One script tag on your site gives visitors a chat bubble. Each conversation opens on your fleet board, where you can watch it live and take over mid-sentence.
What it is
A Doorbell is an automation with a chat widget in front of it. A visitor to your site types a question; your sandbox agent answers, streaming as it writes. Unlike a support bot bolted onto a help centre, the thing answering is the same agent that has your repository, your docs and your connected tools, so it can answer from what is actually true today.
Every visitor's thread becomes one conversation on your fleet board: a card you can open, read, and type into. If a visitor asks something the agent should not answer alone, you take the thread over from the same tab.
1 · Create it
Open Automations and pick Website concierge under "Reach this agent from elsewhere", or press New automation, choose Listen (live), then Doorbell. The prompt comes prefilled with instructions that tell the agent to answer visitors' questions and refuse anything that asks it to change files or run commands. Edit it to say what your site is about.
2 · List the sites that may use it
Under Allowed sites, one origin per line. An origin is scheme and host only: no path, no trailing slash:
https://example.com
https://www.example.com Those two are different origins. This is the single commonest reason a freshly installed Doorbell stays silent: the site redirects one to the other, the browser ends up on the one you did not list, and every request is refused. List both. If you forget, the install panel will tell you exactly which origin was turned away and offer to add it.
3 · Paste the snippet
Press Install on the row and copy the line it gives you. It goes on any page you listed, just before </body>:
<script src="https://sandbox-<id>.<zone>/webchat/widget.js" data-automation="website-concierge" defer></script> The script carries one piece of information: which automation to talk to. The sandbox it calls is the origin the script itself came from, so there is no second address to keep in sync and no key to leak. The widget is about 6 kB gzipped, renders in a shadow root so your site's CSS cannot reshape it and its CSS cannot leak into your page, and it loads no framework.
4 · Check that it landed
Reload your site, then look at the Install panel again. It lists every origin that has asked for this Doorbell and whether it was let in, so "installed, nobody has written yet" is visibly different from "the snippet never ran". A refused origin appears with an Allow button beside it.
Who can chat
- Anyone: the default. Visitors are anonymous; the widget keeps a thread id in their browser so a follow-up continues the same conversation.
- Google sign-in: a visitor must sign in before they can write. This uses your own Google OAuth client, not ours: Google only issues a token to an origin authorized on the client, and ours cannot list every customer's domain. Create a web client, add each allowed site as an authorized JavaScript origin, and paste the client id.
Either way, the visitor never holds a credential for your sandbox. The only routes they can reach are the widget's own. A signed-in visitor's verified email travels to the agent as a fact about who is asking, never as permission to do more.
Keeping bots out
- Built-in check: the visitor's browser solves a small puzzle once per conversation. Costs them about a second, costs a bot the same for every conversation it wants. No accounts, no keys.
- Cloudflare Turnstile: invisible for most visitors. Needs a Turnstile widget on your Cloudflare account; the secret key stays in your sandbox and only the site key is ever sent to a browser.
- Off: the allowed-sites list and the rate limit are then the whole boundary. Reasonable for an internal or unlisted page.
What the agent may do behind it
A Doorbell is driven by strangers, so it runs with a read-only toolbox by default: it can read files, search the workspace and fetch a page, and it cannot run commands or write anything. This is enforced as a list of allowed tools on the automation, not as a request in the prompt: an instruction smuggled into a support question has nothing to reach.
On top of that, each visitor thread runs in its own throwaway git worktree, there is a per-conversation rate limit and a daily message ceiling you can set, and turning on Require my approval holds every wake for you instead of answering.
Good to know
- The widget loads from your sandbox, so while the sandbox is off the launcher simply does not appear on your site.
- A visitor's thread keeps its conversation for a day of quiet, then the next message starts a fresh one.
- Approval-gated Doorbells tell the visitor a human will review their message; the reply is not delivered back into the widget yet.