An AI-powered digital assistant backend for So Drama! Entertainment β receives visitor speech transcriptions over WebSocket, generates conversational responses via a local LLM, and returns synchronised text tokens + cloned-voice audio in real time.
| Layer | Tool |
|---|---|
| API Gateway | FastAPI + WebSockets |
| LLM | VLLM / SGLang / LM Studio (OpenAI-compatible) |
| TTS | Chatterbox Turbo (gRPC microservice, zero-shot voice cloning) |
| Runtime | Docker + NVIDIA GPU |
| CI | GitHub Actions + Ruff |
services/inference/)# 1. Clone the repo
git clone <repo-url> && cd concierge-platform
# 2. Configure environment
cp .env.example .env
# Edit .env β set HF_TOKEN and LLM settings
# 3. Build and start
docker compose up -d --build
# 4. Verify
curl http://localhost:8001/health
# β {"status": "ok"}
The server will be available at http://localhost:8001.
concierge-platform/
βββ services/
β βββ concierge/ # FastAPI WebSocket gateway (CPU)
β βββ tts/ # gRPC TTS microservice (GPU)
β βββ inference/ # VLLM/SGLang model serving configs
βββ tools/
β βββ benchmark/ # Benchmarking suite
βββ proto/ # Shared protobuf definitions
βββ context/ # Knowledge base (floor plans, company info)
βββ reference_audio/ # TTS voice cloning references
βββ docs/ # API docs, architecture, system prompt
β βββ API.md
β βββ PERSONALITY.md
β βββ architecture.md
βββ docker-compose.yml # Full-stack orchestration
βββ .github/workflows/ # CI pipeline
| Document | Description |
|---|---|
| API Reference | Full HTTP/WebSocket/gRPC API documentation |
| Architecture | System design, data flow, and key decisions |
| Inference Engines | VLLM/SGLang model serving setup |
| Benchmark Tool | Performance benchmarking guide |
# Install ruff
pip install ruff
# Lint
ruff check .
# Format
ruff format .
cd services/concierge
uv sync
uv run pytest tests/ -v
pip install pre-commit
pre-commit install
# Build & start all services
docker compose up -d --build
# View logs
docker compose logs -f
# Start a specific inference engine
cd services/inference
docker compose up -d vllm-qwen-9b
# Stop everything
docker compose down
Place a .wav file in reference_audio/:
REFERENCE_AUDIO_PATH in .env| Problem | Solution |
|---|---|
| Container won't start / GPU error | Ensure nvidia-container-toolkit is installed |
health endpoint returns error | Check logs β TTS model takes ~30-60s to load |
| No audio output | Verify reference WAV exists at REFERENCE_AUDIO_PATH |
| LLM not responding | Confirm LLM backend is running on the configured port |
Python
95.2%
Dockerfile
4.8%
An AI-powered digital assistant backend for So Drama! Entertainment β receives visitor speech transcriptions over WebSocket, generates conversational responses via a local LLM, and returns synchronised text tokens + cloned-voice audio in real time.
| Layer | Tool |
|---|---|
| API Gateway | FastAPI + WebSockets |
| LLM | VLLM / SGLang / LM Studio (OpenAI-compatible) |
| TTS | Chatterbox Turbo (gRPC microservice, zero-shot voice cloning) |
| Runtime | Docker + NVIDIA GPU |
| CI | GitHub Actions + Ruff |
services/inference/)# 1. Clone the repo
git clone <repo-url> && cd concierge-platform
# 2. Configure environment
cp .env.example .env
# Edit .env β set HF_TOKEN and LLM settings
# 3. Build and start
docker compose up -d --build
# 4. Verify
curl http://localhost:8001/health
# β {"status": "ok"}
The server will be available at http://localhost:8001.
concierge-platform/
βββ services/
β βββ concierge/ # FastAPI WebSocket gateway (CPU)
β βββ tts/ # gRPC TTS microservice (GPU)
β βββ inference/ # VLLM/SGLang model serving configs
βββ tools/
β βββ benchmark/ # Benchmarking suite
βββ proto/ # Shared protobuf definitions
βββ context/ # Knowledge base (floor plans, company info)
βββ reference_audio/ # TTS voice cloning references
βββ docs/ # API docs, architecture, system prompt
β βββ API.md
β βββ PERSONALITY.md
β βββ architecture.md
βββ docker-compose.yml # Full-stack orchestration
βββ .github/workflows/ # CI pipeline
| Document | Description |
|---|---|
| API Reference | Full HTTP/WebSocket/gRPC API documentation |
| Architecture | System design, data flow, and key decisions |
| Inference Engines | VLLM/SGLang model serving setup |
| Benchmark Tool | Performance benchmarking guide |
# Install ruff
pip install ruff
# Lint
ruff check .
# Format
ruff format .
cd services/concierge
uv sync
uv run pytest tests/ -v
pip install pre-commit
pre-commit install
# Build & start all services
docker compose up -d --build
# View logs
docker compose logs -f
# Start a specific inference engine
cd services/inference
docker compose up -d vllm-qwen-9b
# Stop everything
docker compose down
Place a .wav file in reference_audio/:
REFERENCE_AUDIO_PATH in .env| Problem | Solution |
|---|---|
| Container won't start / GPU error | Ensure nvidia-container-toolkit is installed |
health endpoint returns error | Check logs β TTS model takes ~30-60s to load |
| No audio output | Verify reference WAV exists at REFERENCE_AUDIO_PATH |
| LLM not responding | Confirm LLM backend is running on the configured port |
Python
95.2%
Dockerfile
4.8%