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.md in the voxgraph repo)
  • WebSocket: use wss:// in production
  • Marketing + docs: deploy voxgraph-web to Vercel (NEXT_PUBLIC_SITE_URL)
  • CORS: set ALLOWED_ORIGINS on 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 .env or voxgraph.db