AVA Core is an open-source AI voice agent for Asterisk and FreePBX. Build phone agents using realtime voice providers or modular speech-to-text, language-model, and text-to-speech pipelines, managed through a self-hosted Admin UI.
Managing multiple PBXs or customer installations? Explore AVA Operator — the commercial multi-installation management layer built around AVA Core, currently available as an early-access preview. AVA Core remains MIT-licensed, free, and fully functional on its own.
Quick Start · Capabilities · Demo · Documentation · Contributing · Community
For a fresh installation, use a Linux x86_64 host with Docker Compose v2 and an Asterisk 18+ / FreePBX system with ARI enabled. Cloud configurations start with 2 CPU cores and 4 GB RAM; local inference needs additional resources. Check supported platforms and transport compatibility first; some transports require newer Asterisk versions or additional modules.
Already running AVA? Follow the v7.7.0 upgrade guide instead of cloning another installation.
On the AVA host:
Run the pinned commands below only after v7.7.0 appears in
GitHub Releases.
Before publication, use the latest published release for stable installations.
For maintainer source evaluation only (unstable):
git clone --branch main https://github.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk.git.
git clone --branch v7.7.0 https://github.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk.git
cd AVA-AI-Voice-Agent-for-Asterisk
sudo ./preflight.sh --apply-fixes
docker compose -p asterisk-ai-voice-agent up -d --build admin_uiPreflight prepares .env, generates the JWT secret, and checks PBX/media
permissions. Review its findings before continuing.
Open http://<server-ip>:3003. Retrieve the one-time admin password:
docker compose -p asterisk-ai-voice-agent logs admin_ui | grep -i passwordChange the password at first login. Restrict port 3003 to trusted access using a firewall, VPN, or an authenticated TLS reverse proxy; do not expose plain HTTP admin access to the public internet.
Complete the Setup Wizard, configure the generated Asterisk dialplan, and start the AI Engine as described in the installation guide. Verify engine health and make a test call before routing callers to the agent. The guide also covers CLI/manual installation, permissions, and recovery; local AI setup covers CPU/GPU configurations.
- Realtime or modular voice: use a full voice-agent provider, or select separate STT, LLM, and TTS backends.
- Self-hosted management: configure providers and Agents, inspect Call History, filter/export records, and manage updates through the Admin UI.
- Telephony tools: transfers, extension availability, voicemail, and hangup controls integrated with Asterisk.
- Business integrations: Google/Microsoft calendars, opt-in Teams meetings, Calendly booking, Pushover, email, HTTP summaries, and MCP tools with per-Agent access controls.
- Cloud, hybrid, or local operation: choose where audio and model inference run. Hybrid deployments still send the configured inputs to cloud services.
- Operational diagnostics: CLI health checks, sanitized support packages, metrics, and documented upgrade/recovery paths.
| Mode | Options | Setup |
|---|---|---|
| Realtime voice agents | Deepgram, OpenAI Realtime, Google Live/Vertex, ElevenLabs, xAI Grok | Provider guides |
| Modular pipelines | Mix supported STT, LLM and TTS adapters, including OpenAI-compatible endpoints | Pipeline configuration |
| Local or hybrid | Local speech and/or LLM inference, optional GPU acceleration and remote local-model servers | Local setup |
Model availability, tools, latency, and transport support vary by configuration. Use the compatibility matrix and release validation evidence rather than assuming every provider/transport combination is qualified.
AudioSocket and ExternalMedia RTP are configuration-dependent; Media WebSocket is opt-in and has additional Asterisk requirements. See the WebSocket guide. Outbound campaigns and VICIdial integration remain alpha; FreeSWITCH setup is community-maintained.
Try the US demo lines and follow the current voice menu:
- Standard voice: (925) 736-6718
- HD voice: (909) 788-2282
HD voice requires a G.722-capable carrier/device path and the opt-in
wideband_pcm_16k Audio Profile; other calls fall back to standard telephony
audio. The video is a v6.1 walkthrough, not a description of every current UI
screen or model.
| I want to… | Start here |
|---|---|
| Install, upgrade, or recover | Installation · Migration notes |
| Connect my PBX | FreePBX guide · Transport matrix |
| Configure providers and Agents | Admin UI · Agents · Configuration |
| Add actions and integrations | Tools · MCP |
| Operate and troubleshoot | CLI · Troubleshooting · Monitoring |
| Understand or extend the code | Architecture · Developer guides |
The core services are ai_engine and admin_ui; local_ai_server and
updater are optional. Run only the services required by your deployment.
All documentation · Roadmap · Security policy · Ask DeepWiki
- Native Calendly booking, opt-in Microsoft Teams meetings, and Pushover notifications.
- A refreshed Agents workspace and focused Tools editors with safer saves.
- Transfer/audio reliability, endpoint discovery, and updated recovery guidance.
See the changelog for detailed changes and contributor credit, GitHub Releases for artifacts, and migration notes before upgrading. Earlier release notes remain in the changelog and versioned repository history.
Code, documentation, tests, bug reports, and real-world validation are welcome. Start with CONTRIBUTING.md and the developer quickstart. Include reproducible evidence and follow the PR review workflow. Documentation and many automated tests do not require a PBX.
If you use an AI coding assistant, AVA.mdc provides optional project context. All contributions still require appropriate testing and review.
![]() hkjarral Architecture, Code |
![]() Abhishek Telnyx LLM Provider |
![]() turgutguvercin NumPy Resampler |
![]() Scarjit Code |
![]() egorky Azure STT/TTS Provider |
![]() alemstrom Docs — PBX Setup |
![]() gcsuri Code — Google Calendar |
![]() octo-patch MiniMax LLM Provider |
![]() neilruaro-camb CAMB AI TTS Provider |
![]() Ai-chan-0411 Transcript Search, Health Badges |
![]() exaland Outbound .ULAW Compatibility |
![]() YosefAdPro Agents API/OpenAPI |
![]() Chris Wilson Google Live, Transfer Handoff, Admin UI |
![]() Rea-PC08 Fish Audio TTS, Call History Filters |
![]() Arnav Patil Admin UI Accessibility, Numeric Alignment, Empty States |
![]() Alce OpenAI Streaming Timeouts |
![]() Joey Roth OpenAI Tool-call Tests |
Ivan Garcia Azure STT/TTS, OpenAI GA Tools |
![]() alexcastgonz Pipeline Tool Calls, CLI Troubleshooting |
![]() lucamancusodev Transfer Reports, Notification Requirements |
![]() pi0n00r Local AI, Whisper, DTMF Privacy, MCP |
![]() MVECoder Startup Recovery, Farewell Investigation |
NC Local AI Environment Parser |
![]() Michael (theluckystrike) Farewell Hangup Fix |
![]() Kevin Rossen HTTP Template Security |
See CONTRIBUTORS.md for contribution details and historical credit. Commit-linked badges preserve attribution when no GitHub profile is linked; they do not imply a verified account identity.
AVA Operator helps MSPs and operators manage AI voice across multiple Asterisk and FreePBX installations from one console. It builds on AVA Core while remaining a separate commercial product.
Explore the early-access preview →
Discord · Issues · Discussions
AVA Core is independently maintained. GitHub Sponsors and Ko-fi support compatibility testing, maintenance, and release infrastructure. Book a consultation for dedicated help.
AVA Core is MIT-licensed. See LICENSE.























