Connect modules connect_pipecat

Voice AI

Connect Pipecat

Pipecat AI voice agents for FreeSWITCH.

Pipecat — the open-source voice AI pipeline — running over the self-hosted FreeSWITCH backend, for teams that would rather assemble their own agent stack than buy a finished one. You choose the speech recognition, the model and the voice per agent, and the call runs on your own telephony.

Odoo is where the agent is defined and where the call ends up. It stores the prompt, the provider choices and the API keys, renders the FreeSWITCH dialplan that forks the media to the sidecar, and takes back the summary and transcript when the conversation ends. The Pipecat process itself lives in a separate container and is stateless: everything it needs for a call it fetches from Odoo over a Bearer-authenticated endpoint when that call starts.

The behaviour that separates a usable voice agent from a demo is interruption. A caller can talk over a long reply, playback stops on the spot, and the new turn is processed — and when they simply ask for a person, the agent stops the media fork and transfers the live channel to the extension you configured.

What it offers

  • Pick your own STT, LLM and TTS

    A connect.pipecat.agent record assembles the pipeline: Deepgram or OpenAI for speech recognition, OpenAI or Anthropic for reasoning, and OpenAI, ElevenLabs or Deepgram for the voice — each with its own model name, plus the language, the voice, a system prompt, an optional greeting and a maximum call duration.

  • Keys and config stay in Odoo

    The sidecar holds no configuration of its own. It fetches the agent's prompt, providers, models and the matching provider API keys from a token-authenticated Odoo endpoint at call time, so rotating a key or changing a prompt takes effect without touching the container.

  • Barge-in on your own stack

    Audio is forked to the sidecar over a WSS media stream with mod_audio_fork. When the caller speaks over a long agent reply, playback stops immediately and the new turn is processed — the documented acceptance target is first agent audio under 1.4 seconds.

  • Ask for a human, get one

    Give the agent a transfer extension and a plain-language rule for when to use it. On transfer, Odoo stops the audio fork and hands the channel to that extension with uuid_transfer, so the caller stays on the same call.

  • Summary and transcript on the call record

    When the conversation ends the sidecar posts the result back, and Odoo writes the summary onto the connect.call and the transcript and summary onto the matching connect.recording — no re-transcription of audio the pipeline already understood.

Scope of the current version

  • Pipecat does not run inside Odoo. You run the Oduist Pipecat agent sidecar container alongside it, and a FreeSWITCH image that includes mod_audio_fork (connect_freeswitch 19.0.2.1.0 or later).
  • The sidecar URL and a URL-safe service token of at least 24 characters must be set identically on both sides. The token authenticates FreeSWITCH opening the media socket and the sidecar calling back into Odoo.
  • The sidecar needs Odoo's HTTPS base URL, and FreeSWITCH needs to reach the sidecar over WSS with a valid certificate.
  • Provider choice is a fixed list, and you bring your own API keys for every provider an agent uses — a missing key or an unsupported model or voice fails at pipeline initialisation.
  • The latency target depends on your providers and your network; it has to be measured in the actual deployment rather than assumed.
  • Registered as a licensed Oduist module.

Installs with full features free for 30 days; buy the license inside the module.