Profile
Back to NewsBack
GitHub Trending 8 min
Reader Mode
hkjarral/AVA-AI-Voice-Agent-for-Asterisk: An open-source AI Voice Agent that integrates with Asterisk/FreePBX using Audiosocket/RTP/Websocket technology         https://demo.agent6789.com

hkjarral/AVA-AI-Voice-Agent-for-Asterisk: An open-source AI Voice Agent that integrates with Asterisk/FreePBX using Audiosocket/RTP/Websocket technology https://demo.agent6789.com

5 hours ago

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

Quick Start

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_ui

Preflight prepares .env, generates the JWT secret, and checks PBX/media permissions. Review its findings before continuing.

Open http://:3003. Retrieve the one-time admin password:

docker compose -p asterisk-ai-voice-agent logs admin_ui | grep -i password

Change 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.

OpenAI-compatible transcription

The Admin API can expose the configured local STT provider through:

  • GET /v1/models
  • POST /v1/audio/transcriptions
Set AAVA_SPEECH_API_KEY for Bearer authentication, or set both AAVA_SPEECH_API_USERNAME and AAVA_SPEECH_API_PASSWORD for Basic authentication in the Admin backend environment. The endpoints fail closed when neither credential is set. Recreate the Admin container after changing these environment variables; browser login credentials are unrelated. If the local AI WebSocket requires LOCAL_WS_AUTH_TOKEN, configure the same token for the Admin backend. The Admin UI itself has no transcription screen. The transcription route accepts the standard multipart file, model, language, and response_format fields; use model whisper-1. For example, curl -u stt-client -F '[email protected]' -F 'model=whisper-1' https://YOUR-ADMIN-HOST/v1/audio/transcriptions prompts for the Basic password without placing it on the command line. Supported response formats are json, text, verbose_json, srt, and vtt. The last three use one whole-file segment and synthetic 0-to-duration timing, not model-derived word or segment timestamps.

The facade accepts WAV, MP3, M4A/MP4, OGG, WebM/Matroska, FLAC and AAC audio. Input demuxers are restricted to these formats; playlists and external input protocols are rejected. Uploads have a 25 MiB file cap, 25 MiB + 64 KiB total multipart cap, and 120-second decoded-audio cap. Upload receipt times out after 30 seconds and decoding after 90 seconds. The local AI service runs at most one batch job in a killable separate process, with no waiting queue and a 180-second worker deadline. A live-call session rejects new batch work and preempts a running batch. Disconnection or timeout cancels the worker; a lost HTTP response is not evidence of a transcript. The Admin wait defaults to 240 seconds (AAVA_SPEECH_STT_TIMEOUT_SECONDS, clamped to 10-600). A shorter API timeout cancels its WebSocket request and reaps the isolated batch worker.

Batch transcription uses the configured local Vosk, Faster-Whisper or Whisper.cpp backend; unsupported or unloaded backends fail explicitly, with no cloud fallback. Only Faster-Whisper honors a per-request two-letter language code or auto detection; English-only .en models accept en only. Omit language for Vosk and Whisper.cpp so their configured model language is used. Keep the Admin API behind the same network controls used for the rest of the operator surface and keep its speech credential distinct from browser login.

Capabilities

  • 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.

Providers and deployment modes

| 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.

Demo

Watch the demo</a>

Demo homepage · Setup videos

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.

Documentation

| 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

Latest release: v7.7.0

  • 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.

Contributing

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.

Contributors

hkjarral
hkjarral

Architecture, Code
a692570
Abhishek

Telnyx LLM Provider
turgutguvercin
turgutguvercin

NumPy Resampler
Scarjit
Scarjit

Code
egorky
egorky

Azure STT/TTS Provider
alemstrom
alemstrom

Docs — PBX Setup
gcsuri
gcsuri

Code — Google Calendar
octo-patch
octo-patch

MiniMax LLM Provider
neilruaro-camb
neilruaro-camb

CAMB AI TTS Provider
Ai-chan-0411
Ai-chan-0411

Transcript Search, Health Badges
exaland
exaland

Outbound .ULAW Compatibility
YosefAdPro
YosefAdPro

Agents API/OpenAPI
cswilsnetex
Chris Wilson

Google Live, Transfer Handoff, Admin UI
Rea-PC08
Rea-PC08

Fish Audio TTS, Call History Filters
arnavp27
Arnav Patil

Admin UI Accessibility, Numeric Alignment, Empty States
alceops
Alce

OpenAI Streaming Timeouts
Genmin
Joey Roth

OpenAI Tool-call Tests
Ivan Garcia contributor badge
Ivan Garcia

Azure STT/TTS, OpenAI GA Tools
pcbeingused333
alexcastgonz

Pipeline Tool Calls, CLI Troubleshooting
lucamancusodev
lucamancusodev

Transfer Reports, Notification Requirements
pi0n00r
pi0n00r

Local AI, Whisper, DTMF Privacy, MCP
MVECoder
MVECoder

Startup Recovery, Farewell Investigation
NC contributor badge
NC

Local AI Environment Parser
theluckystrike
Michael (theluckystrike)

Farewell Hangup Fix
kevinrossen
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

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 →

Community and support

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.

Product Hunt · Star history

License

AVA Core is MIT-licensed. See LICENSE.

Chat with me