Skip to content

Commit 9ff42b0

Browse files
sboilyclaude
andcommitted
Add RoomKitAssistantServer implementation
Concrete implementation of AssistantServerBase using RoomKit's voice pipeline while reusing EVA's AgenticSystem, AuditLog, and ToolExecutor for LLM reasoning. Architecture: - TwilioWebSocketBackend (from roomkit.voice.backends.twilio_ws) bridges EVA's Twilio WebSocket protocol to RoomKit's VoiceChannel - RoomKit VoiceChannel handles STT (Deepgram), TTS (ElevenLabs), VAD - RoomKit WavFileRecorder with ALL mode for audio output (inbound + outbound + mixed WAV files) - RoomKit hooks produce framework_logs.jsonl events - EVA's AgenticSystem handles LLM reasoning + tool calling unchanged - Dedicated write queue for full-duplex WebSocket audio Tested end-to-end: full conversations with correct metrics, clean audio recordings, user_behavioral_fidelity = 1.0. Usage: EVA_FRAMEWORK=roomkit EVA_MODEL__STT=deepgram \ EVA_MODEL__TTS=elevenlabs python main.py --debug Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 77cc1d0 commit 9ff42b0

2 files changed

Lines changed: 554 additions & 23 deletions

File tree

pyproject.toml

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,19 @@ readme = "README.md"
1919
requires-python = ">=3.11,<3.14"
2020
license = "MIT"
2121
dependencies = [
22+
# --- Core (framework-agnostic) ---
2223
"pydantic>=2.0",
2324
"pydantic-settings>=2.0",
24-
"pipecat-ai==0.0.104",
2525
"elevenlabs>=1.0.0",
2626
"openai>=1.0.0",
2727
"anthropic>=0.83.0",
2828
"litellm>=1.30.0",
29-
"deepgram-sdk>=3.5.0",
30-
"onnxruntime>=1.16.0",
3129
"aioboto3>=12.0.0",
3230
"google-generativeai>=0.3.0",
3331
"google-genai>=0.3.0",
34-
"google-cloud-speech>=2.0.0",
35-
"google-cloud-texttospeech>=2.0.0",
36-
"azure-cognitiveservices-speech>=1.31.0",
37-
"cartesia>=1.0.0",
38-
"assemblyai>=0.17.0",
3932
"setuptools>=65.0.0",
4033
"fastapi>=0.100.0",
4134
"uvicorn>=0.23.0",
42-
"websockets>=12.0",
4335
"httpx>=0.25.0",
4436
"pyyaml>=6.0",
4537
"pandas>=2.0",
@@ -54,12 +46,27 @@ dependencies = [
5446
"jaconv>=0.3.0",
5547
"regex>=2023.0.0",
5648
"more-itertools>=10.0.0",
57-
# nvidia-riva-client moved to [nvidia] optional dep (pins websockets==15.0.1 exactly,
58-
# which conflicts with deepgram-sdk>=6 and roomkit which need websockets>=16)
59-
# "nvidia-riva-client>=2.25.0,<3.0.0"
6049
]
6150

6251
[project.optional-dependencies]
52+
# Voice framework: choose one (pipecat or roomkit)
53+
pipecat = [
54+
"pipecat-ai==0.0.104",
55+
"deepgram-sdk>=3.5.0,<4.0.0",
56+
"onnxruntime>=1.16.0",
57+
"google-cloud-speech>=2.0.0",
58+
"google-cloud-texttospeech>=2.0.0",
59+
"azure-cognitiveservices-speech>=1.31.0",
60+
"cartesia>=1.0.0",
61+
"assemblyai>=0.17.0",
62+
"websockets>=12.0,<16.0",
63+
"nvidia-riva-client>=2.25.0,<3.0.0",
64+
]
65+
roomkit = [
66+
"roomkit>=0.7.0a2; python_version>='3.12'",
67+
"deepgram-sdk>=6.0.0",
68+
"websockets>=16.0",
69+
]
6370
dev = [
6471
"pytest>=7.0",
6572
"pytest-asyncio>=0.21",
@@ -68,14 +75,6 @@ dev = [
6875
"mypy>=1.5",
6976
"pre-commit>=4.0",
7077
]
71-
nvidia = [
72-
"nvidia-riva-client>=2.25.0,<3.0.0",
73-
]
74-
roomkit = [
75-
"roomkit>=0.7.0a2; python_version>='3.12'",
76-
"deepgram-sdk>=6.0.0",
77-
"websockets>=16.0",
78-
]
7978
apps = [
8079
"pandas>=2.0",
8180
"plotly>=5.0",
@@ -87,9 +86,9 @@ apps = [
8786
eva = "eva.cli:main"
8887

8988
[tool.uv]
90-
# nvidia and roomkit have incompatible websockets requirements
91-
# (nvidia-riva-client pins ==15.0.1, roomkit needs >=16.0)
92-
conflicts = [[{extra = "nvidia"}, {extra = "roomkit"}]]
89+
# pipecat and roomkit have incompatible dependency versions
90+
# (deepgram-sdk v3 vs v6, websockets <16 vs >=16)
91+
conflicts = [[{extra = "pipecat"}, {extra = "roomkit"}]]
9392

9493
[tool.hatch.build.targets.wheel]
9594
packages = ["src/eva"]

0 commit comments

Comments
 (0)