Customize & extend
VoxGraph is intentionally small. Most products built on it add code in these places:
1. Voice intents
voxgraph/voice/intents.py — return a fixed string from try_direct_voice_reply() to handle common phrases without LLM latency (names, greetings, support FAQs).
2. System prompt & personality
voxgraph/providers/llm.py — change build_system_prompt() for your brand, domain (cooking, support, coaching), and reply style.
3. Tools & actions
Hook into voxgraph/pipeline/response.py before or after the LLM call: calendar APIs, RAG, database lookups, home automation. LangGraph scaffolding is already imported for future graph-based flows.
4. Your client
- Next.js / React — browser WebSocket + Web Audio API for playback (see this site's
/try) - Mobile — native audio capture at 16 kHz, stream to
/audio - Telephony — bridge PSTN audio to the same WebSocket format
- Terminal — extend
scripts/live_mic_client.py
5. Multi-user
Today DEFAULT_USER_ID = "default" in voxgraph/core/settings.py. Pass a user id from your auth layer and thread it through voxgraph/memory/ for per-user facts and history.
6. Deploy
- Backend: Docker + uvicorn on Render (see
DEPLOY.mdin the voxgraph repo) - WebSocket: use
wss://in production - Marketing + docs: deploy
voxgraph-webto Vercel (NEXT_PUBLIC_SITE_URL) - CORS: set
ALLOWED_ORIGINSon the backend to your Vercel domain
What not to fork blindly
- Keep
WsOutbound(voxgraph/transport/outbound.py) for concurrent send/receive - Keep Deepgram keepalive during long TTS (
voxgraph/voice/utterance.py) - Do not commit
.envorvoxgraph.db