"""Minimal Server Example - Simplest Kuralit WebSocket Server Setup"""
import os
from kuralit.server.agent_session import AgentSession
from kuralit.server.config import ServerConfig
from kuralit.server.websocket_server import create_app
# Step 1: Define API key validator
def validate_api_key(api_key: str) -> bool:
"""Validate API key from client connection."""
expected_key = os.getenv("KURALIT_API_KEY", "demo-api-key")
return api_key == expected_key
if __name__ == "__main__":
import uvicorn
# Step 2: Create AgentSession with minimal configuration
agent_session = AgentSession(
# 🎤 Real-Time Voice
stt="deepgram/nova-2:en-US",
vad="silero/v3",
turn_detection="multilingual/v1",
# 🤖 AI Agent
llm="gemini/gemini-2.0-flash-001",
# Basic instructions
instructions="You are a helpful assistant. Provide clear, concise, and helpful responses.",
name="Minimal Server Agent",
# No tools - minimal setup
tools=None,
)
# Step 3: Create FastAPI application
app = create_app(
api_key_validator=validate_api_key,
agent_session=agent_session,
)
# Step 4: Get server configuration
config = agent_session._config.server if agent_session._config else ServerConfig()
# Step 5: Start the server
print("🚀 Starting minimal WebSocket server...")
print(f" Host: {config.host}")
print(f" Port: {config.port}")
print(f" Connect at: ws://{config.host}:{config.port}/ws")
uvicorn.run(
app,
host=config.host,
port=config.port,
log_level=config.log_level.lower(),
)