- Ask two or three questions in one card: the channel, the job, and the languages and voice.
- Ask for the model provider’s key with a secret request card, and for Twilio with a Connect card if you want phone calls or texts.
- Build a server that holds the key, a page with a start button and a live transcript, and the tools the agent calls mid-conversation.
- Test every layer it can reach without a microphone, then tell you two or three things to say to it.
Choose a channel
The channel decides what you need to have ready. The browser is the default, and it’s the one channel you can try in the session straight away. When phone calls are part of the job, the agent builds and tests the browser version while Twilio is still being connected.Answer the setup card
The agent asks only what your message left open, in one question card. Anything you skip gets a sensible default, which the agent names in its reply.
Every conversation keeps a transcript whatever you answer: who spoke, what they said, when, and which tools ran. Recording audio is separate and happens only if you say yes.
Add the key and connect Twilio
The provider’s key stays on your app’s server. The browser gets a token from it that expires within minutes, so the key never reaches a visitor’s device. The agent asks for what it needs with cards in the transcript, so you never paste a key into a message.
The agent doesn’t wait for Twilio. It builds and tests the browser version, says what it asked for, and ends its turn. Click Tell the agent to continue once you’re connected, and it adds the phone side. Your app reaches Twilio through your connections, so it holds no Twilio credentials of its own.
If you don’t see Twilio in Integrations, it isn’t turned on for your Alpha. The browser channel works without it.
Try it yourself
The machine has no microphone, so you are the one who holds the first conversation. When the build is done, the agent tells you two or three things to say.1
Open the app in its own tab
The app appears in the Preview. Click the Open in new tab icon at the right end of the Preview toolbar, so the browser can ask for your microphone.
2
Start and allow the microphone
Click the app’s start button and allow the microphone when the browser asks. The state moves between listening, thinking and speaking, and the transcript fills in as you talk.
3
Interrupt it
Talk over the receptionist while it speaks. It stops at once and listens, which is what a realtime model is for.
Pick a runtime
The agent builds on a speech-to-speech realtime model unless you ask otherwise. One model hears and speaks, so replies start within a few hundred milliseconds and callers can interrupt it. Name a provider in your message to choose one.
Model names change several times a year. The agent checks the provider’s current list before it picks one and keeps the name in one setting, so changing it later is a one-line edit.
What does it cost, and how does Alpha check it?
Voice is billed per minute of audio by the provider, on your key. Those charges go to your provider account and don’t appear on Alpha’s usage dashboard, which counts the agent’s own work. Twilio bills numbers, calls and texts to your Twilio account. Before it hands over, the agent tests every layer below the microphone and names any check it couldn’t run, with the reason.
The hand-over names the provider and model and why it chose them, reminds you that audio is billed per minute on your key, and says what each secret and connection is for.
Is this the same as dictation?
No. Dictation is the microphone in your composer: it turns up to 2 minutes of your speech into a message for Alpha’s agent. A voice agent is an app you build, which other people talk to.Next steps
Publish your app
A phone number needs the published address, which stays up when the session sleeps.
Connect an app
How Connect cards, the request tray and Test connection work for Twilio and the rest.
Add sign-in to your app
Put the calls page behind a login before real calls arrive.
Skills that ship with Alpha
Switch the Voice agent skill off, or call it by name with $voice-agent or /voice-agent.

