bolna-ai/bolna

Conversational voice AI agents

What it solves

Building a voice assistant from scratch requires stitching together many pieces: receiving a phone call, transcribing speech, running an LLM to decide what to say, synthesizing speech back, and streaming it all in real time. Bolna handles that orchestration for you, so you can define a complete voice agent with a simple JSON config or a few lines of Python, and plug in the speech, language, and telephony providers you already use.

How it works

Bolna runs a conversation pipeline as a data stream over websockets. Audio comes in from a telephony provider (Twilio, Plivo, etc.), is transcribed by an ASR provider (Deepgram, Azure, or a self-hosted service), the transcript is sent to an LLM (OpenAI, DeepSeek, Llama, Mistral, and more via LiteLLM), and the model's response is turned into speech by a TTS provider (ElevenLabs, AWS Polly, OpenAI, etc.) and streamed back to the caller. You define an agent by choosing a provider and model for each stage, and Bolna wires them together. The README shows a minimal Python example that creates an Assistant, adds a conversation task with a transcriber, LLM agent, and synthesizer, then executes it as an async stream of chunks. For phone calling, a local Docker setup provides a telephony server, the Bolna server, ngrok for tunneling, and Redis for persisting agent data.

Who it's for

Developers and teams who want to quickly build voice-based conversational assistants—phone support bots, voice interfaces, or any automation that talks to people over a call. It suits those who want an open-source orchestration layer they can run themselves, extend with new providers, or use as the backbone for their own hosted or enterprise solution.

Highlights

  • Provider-agnostic: mix and match ASR, LLM, and TTS providers without changing your agent logic.
  • Streaming-first: audio and text flow asynchronously, enabling real-time interaction.
  • Simple API: define an agent in a few lines of Python, or configure it via JSON.
  • Local Docker setup for a complete telephony test environment.
  • Extensible: add new telephony or speech providers by extending base classes.
  • Active community: MIT-licensed, with PRs welcome and a Discord channel.

Related

  • Project
  • Project
  • Project
  • Project
  • Project