DocsModelsProtocolPlaygroundSDKs Join the beta →
Realtime AI infrastructure

The realtime layer for AI models.

Stream voice, vision, and text through one typed protocol. Sub-200 ms round trips, first-class SDKs for JavaScript, React, and Python, and events checked at compile time — so a typo never reaches the wire.

p50 182ms round trip 3 typed SDKs 0 untyped events
session · aurora-realtime streaming
182msround trip
client ↔ model
client →

audio frame · 20ms · pcm16

model →

Booking a table for four at eight

events 1,204+3 frames/s
0msp50 round trip
0%session uptime
0models live
0regionsedge presence
Typed SDKs

One protocol.
Every stack.

  • Compile-time safetyEvery event, message, and track name is typed. Autocomplete guides you; a typo fails the build, not production.
  • Streaming by defaultTokens, audio, and video arrive as typed frames. No polling, no glue code, no dropped partials.
  • Same shape everywhereThe JS class, the React hook, and the Python client speak the identical protocol. Learn once.
session.ts
import { AxonModel } from "@axon/client"

const model = await AxonModel.connect({
  model: "aurora-realtime",
  audio: true,
})

// client → model, fully typed
model.sendCommand({ text: "Book a table for four" })

// model → client, streamed
model.on("transcript", (msg) => {
  console.log(msg.text, msg.final)
})
import { useAxon } from "@axon/react"

function Assistant() {
  const model = useAxon("aurora-realtime", { audio: true })

  useTranscript(model, (msg) => {
    // typed partials, no polling
    setText(msg.text)
  })

  return <Waveform stream={model.audioOut} />
}
from axon import AxonModel

model = await AxonModel.connect(
    model="aurora-realtime",
    audio=True,
)

# client -> model
await model.send_command(text="Book a table for four")

# model -> client, streamed
async for msg in model.transcripts():
    print(msg.text, msg.final)
The protocol

Three primitives. Nothing to guess.

Axon models talk through a small, typed vocabulary. Send commands, receive messages, open media tracks — every name is checked at compile time in all three SDKs.

events · client → model

Commands

Typed methods on the model for everything you send: prompts, tool results, interruptions, audio config.

appmodel
  • sendCommand()
  • interrupt()
  • configureAudio()
messages · model → client

Messages

Typed listeners for everything the model emits. Subscribe only to what you care about; partials stream in.

modelapp
  • on("transcript")
  • on("toolCall")
  • on("turnEnd")
tracks · media

Tracks

Named, typed media channels between app and model. Track names are checked at compile time — no wire typos.

appmodel
  • audioIn · sendonly
  • audioOut · recvonly
  • videoIn · sendonly
Models

Pick a model. Keep your code.

Every model on Axon speaks the same protocol. Swap the model id and your typed SDK keeps working — no rewrites, no adapters.

aurora-realtimevoice

Speech-to-speech

Full-duplex voice with interruption handling and word-level timing.

p50 182msaudio
vela-visionmultimodal

Live vision

Stream frames in, reason over them, and get grounded answers back in realtime.

p50 240msvideo
quill-texttext

Streaming text

Low-latency token streaming with typed tool calls and structured output.

p50 90mstokens
echo-embedembed

Realtime embeddings

Embed text and audio on the same connection your session already uses.

p50 60msvectors
forge-toolsagent

Tool runtime

Typed tool calls with parallel execution and automatic result routing.

p50 110mstools
lumen-ttsvoice

Expressive TTS

Streamed speech synthesis with prosody control and sub-frame alignment.

p50 70msaudio
Playground

Try a model before
you write a line.

Open a live session in the browser, speak or type, and watch typed frames stream both ways. Copy the exact SDK snippet for what you just ran.

aurora-realtime · live
Find me a quiet cafe near the office and call to check if they take walk-ins.
model · streamingFound three within 400m. Calling the closest now — they seat walk-ins until nine.
Speak or type…
Send
Built for production

Realtime you can put on the pager.

Edge latency

Sessions terminate at the nearest region. p50 round trips under 200ms, worldwide.

Typed end to end

Events, messages, and tracks share generated types across every SDK you ship.

Observable

Per-session traces, frame timing, and replayable recordings out of the box.

Isolated sessions

Each session runs sandboxed with its own keys, budget, and lifecycle.

Now in private beta

Give your model a realtime wire.

Join the beta, open a session, and stream your first typed frame in under five minutes.