Why this runtime exists
Aywa Runtime was created from the operational constraints behind Aywa's own phone-agent stack: real-time voice latency, tool reliability, BYO providers, predictable infrastructure cost, and a privacy boundary where call data stays in the infrastructure being operated.
The goal is not to add another hosted voice dashboard. The goal is to give serious teams a private execution layer for production voice agents, with the same practical surfaces they need for assistants, phone numbers, calls, tools, webhooks, logs, and provider routing.
Private by default
Provider secrets, audio, transcripts, tools, and artifacts live in the deployed runtime environment.
Built for high-volume operations
The architecture is shaped for daily production call traffic, not only local demos or toy agents.
Provider-owned economics
Teams bring their LLM, STT, TTS, telephony, storage, and analytics providers without Aywa platform markup on call minutes.
Voice-first runtime
Turn-taking, endpointing, barge-in, transfer, and webhook delivery are part of the runtime contract.
Prerequisites
Start with a Linux host that can run Docker, has a public HTTPS endpoint, and can reach the providers you choose for STT, LLM, TTS, telephony, storage, and analytics.
Host
Ubuntu 24.04 LTS, Docker Engine, Docker Compose plugin, inbound 80/443, and SSH access.
Account
Aywa Runtime workspace, active trial or subscription, and an install token scoped to the workspace.
Providers
At least one model provider, one speech-to-text provider, one text-to-speech provider, and a telephony path.
State
Postgres, Redis or Valkey, and S3-compatible artifact storage for production readiness.
1. Generate an install token
In the dashboard, create a workspace, choose a plan, then generate an install token. Tokens are short-lived, bound to the workspace, and should be treated like deployment credentials.
2. Run the installer
The installer should validate the token, pull signed artifacts, write the local configuration, enable the runtime service, and register the instance heartbeat.
curl -fsSL https://install.aywaruntime.com | \
sudo AYWA_TOKEN="$AYWA_INSTALL_TOKEN" bash
3. Check runtime readiness
A healthy process is not the same as a production-ready runtime. Use liveness for process checks and readiness for configured dependencies.
/healthProcess liveness. Safe for load balancer health probes./readyzDependency readiness for auth, public URL, storage, providers, WebRTC, and SIP mode./metricsPrometheus text metrics for production monitoring./metrics.jsonDashboard-friendly counters for calls, logs, latency, webhooks, and audio events.aywa status
aywa update --channel stable
aywa support-bundle --redact
4. Configure providers
The runtime does not need Aywa's control plane to store provider secrets. Configure provider keys
in the deployed runtime environment and validate them through /readyz.
VOICE_PIPELINE_ENABLED=true
VOICE_PIPELINE_STT_ENABLED=true
VOICE_PIPELINE_TTS_ENABLED=true
OPENAI_API_KEY=...
DEEPGRAM_API_KEY=...
ELEVENLABS_API_KEY=...
CARTESIA_API_KEY=...
5. Route a staging call
Before production traffic, create one assistant, bind it to a phone number or web transport, run a staging call, then inspect timeline, logs, costs, and webhook attempts.
curl "$RUNTIME_URL/assistant" \
-H "Authorization: Bearer $RUNTIME_API_KEY"
curl "$RUNTIME_URL/call" \
-H "Authorization: Bearer $RUNTIME_API_KEY"