கு kural
கு
v0 — local echo agent works. Phone integration coming.

kural

Open-source voice AI agent framework.

Build phone agents with the LLM, speech, and telephony providers of your choice. Bring your own keys. Run for the cost of a phone number.

Why kural

Bring your own keys

Plug in OpenAI, OpenRouter, Groq, Ollama, vLLM, or any OpenAI-compatible endpoint. Same for STT and TTS. No middleman markup.

Free path exists

OpenRouter free models + local Whisper + local Kokoro TTS + a $1/month Twilio number. Production voice agent for call minutes only.

Self-hostable

Single Python process. Deploy on a $5 VPS, your laptop, or a container. No SaaS lock-in.

Phone-first

Twilio telephony out of the box. Browser audio works too. Built on Pipecat — every stage is a swappable frame processor.

How it works

A caller's audio flows through a Pipecat pipeline. Each stage is a frame processor you can swap or remove.

Caller → Twilio (PSTN/SIP) → Media stream ↓ [VAD] Silero ↓ [STT] Whisper / Deepgram ↓ [LLM] OpenAI-compatible (any provider) ↓ [TTS] Kokoro / Piper / ElevenLabs ↓ Audio back to caller

Provider matrix

LayerFree / localPaid (BYOK)
LLMOllama, vLLM, OpenRouter free tierOpenAI, Anthropic (via OpenRouter), Groq, Together
STTfaster-whisper, Distil-WhisperDeepgram, AssemblyAI
TTSKokoro, PiperElevenLabs, Cartesia
PhoneTwilio (required for PSTN)

Quickstart

Today, the v0 echo agent runs locally — speak into the mic, hear yourself back. No API keys needed.

# macOS:   brew install portaudio
# Ubuntu:  sudo apt-get install -y portaudio19-dev

git clone https://github.com/nnavnita/kural
cd kural
cp .env.example .env
python -m venv .venv && source .venv/bin/activate
pip install -e .

kural   # or: python -m kural.server

Wear headphones to avoid feedback. Stop with Ctrl+C.

Roadmap