01 / Agents
Specialists.
One team.
Route work, hand off context and bring a human into the loop.
Open-source conversational AI, in Python and Rust
Voice, messaging and AI agents, in one framework.
Keep the conversation together as people and channels change.
Python 3.12+ Rust (early) MIT licensed Runs in your infrastructure
A conversation begins.
Same person. Same conversation.
Switch channels. Keep the context.
A little code. A first conversation.
Run a complete Python example. No API key required.
01 Install RoomKit
pip install roomkitasync with RoomKit() as kit:
ai = AIChannel(
"assistant",
provider=MockAIProvider(
responses=["Hello from your first room."]
),
)
kit.register_channel(WebSocketChannel("chat"))
kit.register_channel(ai)
room = await kit.create_room()
await kit.attach_channel(room.id, "chat")
await kit.attach_channel(room.id, "assistant")
Scripted reply · output from the full example
chat: Hello, RoomKit!
assistant: Hello from your first room.From idea to something you can run
Talk to an agent through your microphone. Give it tools to act on what you ask.
Gemini Live · API key requiredOpen the exampleBring SMS, email, web chat and an assistant into the same conversation.
Mock providers · No API keysOpen the exampleRoute a request from triage to a specialist, then on to resolution.
Scripted handoffs · No API keysOpen the exampleThe room keeps it together
01 / Agents
Route work, hand off context and bring a human into the loop.
02 / Channels
Connect voice, messaging and AI agents around a shared room.
03 / Models & tools
Choose cloud or local providers. Give your agents the tools to act.
04 / Control
Set routing and guardrails. Keep the event history and deployment in your hands.
Built with RoomKit. Open for you.
Applications
Voice, images and your tools. Try the desktop assistant built on this framework.
A coding agent for your terminal. It explores, plans, edits and tests your projects.
Building blocks
Before you start
It gives your application one abstraction, the room, that connects people, AI agents and channels such as SMS, WhatsApp, email, Teams, Telegram, voice and WebSocket. A message from one channel passes through your hooks, is stored, then reaches the other channels in the room, converted to what each one can show.
Those frameworks start from the voice call: Pipecat as a pipeline of frames, LiveKit Agents as a participant in a WebRTC room. RoomKit starts from the conversation, and voice is one channel in the room, so the same conversation can continue over SMS, email or WhatsApp. For a voice-only agent, either of them may suit you better. Read the full comparison.
In the cloud: Anthropic, OpenAI, Gemini, Mistral and others. Locally: Ollama, llama.cpp and vLLM. For voice, speech providers such as Deepgram and ElevenLabs, or speech-to-speech with OpenAI Realtime and Gemini Live. Changing provider leaves the rest of your application as it is. The RoomKit model catalogue compares models by capability, context and list price.
In your own application, on your own infrastructure: RoomKit is a library, not a hosted service. Conversations stay in the store you choose, such as SQLite or PostgreSQL. The models and messaging providers you connect bill you directly and receive what you send them.
It is in beta, at version 0.x, so pin the version you deploy. It includes retries, circuit breakers, rate limiting and a PostgreSQL store.
Python is the reference implementation, with voice, messaging and orchestration. roomkit-rs is an early Rust implementation written from the same RFC: rooms, hooks, permissions, an AI agent with tools, skills and MCP, and a SQLite store that shares the Python schema. Voice comes later on its roadmap, and its API will change before 1.0.
Open source grows through use
Try an example. Tell us what broke. Contribute a provider, a test or a guide someone else can use.