Documentation menu
Documentation

Voice

Build realtime spoken interfaces while keeping the durable agent and browser surface co-located.

Start from a fresh project

This guide is self-contained. Create an empty Ayjnt project, then replace the starter agent with the files shown below. Run commands from the new project directory unless a step says otherwise.

terminal
bunx ayjnt new try-voice --empty
cd try-voice
bun install

# remove agents/alive once you are ready to add the guide's files

Realtime transport, durable identity

Voice agents use the Cloudflare Voice integration for audio transport while Ayjnt generates the bindings and route plumbing. The browser owns microphone permission and visualization; the agent owns session identity, policy, and durable state.

Use the realtime voice example when integrating Gemini Live or another realtime model. Never place long-lived API keys in committed browser code; accept them for a local demo or exchange them through a server-controlled path.

Run it and verify the result

Add the provider key, allow microphone access, and confirm the sphere changes to its listening state before the model answers.

terminal
bun run build
bun run dev

# the local app is now available at http://localhost:8787