Blog

Engineering insights, tutorials, and deep-dives into multi-channel conversation systems.

I Built a Desktop Voice Assistant in Python. Here’s What I Learned

February 10, 2026 · 8 min read

I built RoomKit UI, a desktop voice assistant for macOS, Linux, and Windows. It supports Google Gemini and OpenAI Realtime, connects to external tools via MCP, includes system-wide dictation, and ships as a standalone app — all built on top of RoomKit.

Read more

RoomKit Speaks SIP: Bridge Any PBX to Conversational AI

February 10, 2026 · 12 min read

RoomKit now supports SIP natively. Incoming calls from any PBX are answered and bridged to conversational AI in real time — no WebRTC, no browser, just a phone call in under 50 lines of Python.

Read more

Gradium + RoomKit: Building Voice AI Agents with Ultra-Low Latency STT/TTS

February 9, 2026 · 15 min read

How I integrated Gradium's audio language models into RoomKit for multi-channel voice AI — with semantic VAD for natural turn-taking, streaming STT/TTS via WebSocket, and sub-300ms time-to-first-token.

Read more

RoomKit, Pipecat, TEN Framework, LiveKit Agents: Choosing the Right Conversational AI Framework

February 9, 2026 · 18 min read

A fair comparison of four open-source conversational AI frameworks — their philosophies, code examples, strengths, and ideal use cases. Pipelines vs. graphs vs. rooms vs. sessions: choose the abstraction that matches your problem.

Read more

Your Voice Assistant Doesn't Need the Cloud

February 7, 2026 · 14 min read

Build a fully local, open-source voice assistant in Python — no API keys, no subscriptions, no data leaving your machine. A fully local voice pipeline running on a single NVIDIA 4070, responding in under 300ms.

Read more

I Built a Multi-Channel Conversation Framework in Python. Here's Why.

February 7, 2026 · 12 min read

If you've ever integrated SMS, email, voice, and chat into the same app, you know the pain. Each channel has its own SDK, its own webhooks, its own quirks. After the third time rebuilding the same plumbing, I extracted the pattern into a library.

Read more