# Praxis — v0.1 Foundation Voice-first AI apprenticeship platform. v0.1 is a **tech-validation harness** (per G-008) for the minimal viable voice loop: a single learner speaks to an AI tutor playing a Customer Service role-play scenario, hears a <600ms-latency response, receives an end-of-session coaching debrief, and has the session logged to SQLite. ## Status Phase 1 (minimal viable voice loop) — code-complete, pending live API keys for runtime verification. ## Stack - **Orchestration:** Pipecat (D-017) with Silero VAD + interruptibility - **ASR:** Deepgram Nova-3 streaming (D-013) - **LLM:** Ollama Cloud direct API (D-020) — `gemma4:cloud` (role-play) + `deepseek-v4-flash:cloud` no-think (debrief) - **TTS:** Cartesia Sonic (primary, D-014) / Piper (self-hosted, R4 mitigation) — behind an interface - **Client:** React + Vite + WebRTC (Pipecat client SDK, D-015) - **State:** SQLite `praxis.db` (D-007, single hardcoded learner, no auth) ## Layout ``` server/ Pipecat pipeline, services (TTS/LLM/Guardrail interfaces), scenario runtime, adapters client/ React + Vite + WebRTC learner surface scenarios/ YAML scenario definitions (D-018) db/ SQLite schema, migrations, async store scripts/ Latency probes (R1-R4), e2e smoke tests/ Unit + e2e docs/ Latency report, debrief templates ``` ## Quickstart 1. Copy `.env.example` → `.env`, fill in `DEEPGRAM_API_KEY`, `CARTESIA_API_KEY`, `OLLAMA_API_KEY`. 2. Install server deps: `pip install -e ".[dev]"` 3. Install client deps: `cd client && npm install` 4. Run probes: `python scripts/probe_deepgram.py` (etc.) 5. Run server: `python -m server` 6. Run client: `cd client && npm run dev` See `docs/latency-report.md` for the R1-R4 spike status and TTS decision.