I built a Python framework to run multiple LiveKit voice agents in one worker process

I’ve been working on a small Python framework called OpenRTC.

It’s built on top of LiveKit and solves a practical deployment problem: when you run multiple voice agents as separate workers, you can end up duplicating the same heavy runtime/model footprint for each one.

OpenRTC lets you:

  • run multiple agents in a single worker
  • share prewarmed models
  • route calls internally
  • keep writing standard livekit.agents.Agent classes

I tried hard not to make it “yet another abstraction layer.” The goal is mainly to remove boilerplate and reduce memory overhead without changing how developers write agents.

Would love feedback from Python or voice AI folks:

  • is this a real pain point for you?
  • would you prefer internal dispatch like this vs separate workers?

GitHub: GitHub - mahimairaja/openrtc-python: OpenRTC lets developers run multiple LiveKit voice agents in one Python worker, sharing heavy models instead of duplicating them per process. · GitHub