direction: down operator: Operator and people { style.fill: "#E8F2FA" ui: "SvelteKit UI\nStart a meeting / Meeting" mic: "One shared microphone\n16 kHz mono PCM" people: "Multiple people\none voice at a time for enrollment" people -> mic: speak into ui -> mic: capture enrollment and meeting audio } app: SvelteKit server { style.fill: "#F0EAFB" auth: "Shared password\nHTTP-only session cookie" control: "One meeting controller\ncount, enrollment, start/stop" ticket: "Short-lived\naudio ticket" auth -> control: authenticated requests control -> ticket: start meeting } speech: Speech backend { style.fill: "#E7F5EE" ingress: "Audio WebSocket\nmeeting clock + buffer" profiles: "Enrollment processor\nreference embeddings" diar: "Nemotron-3-Diarization\nlocal NeMo or Baseten" verify: "Verification model\nclean live embeddings" match: "Identity matcher\nthreshold or unknown" merge: "Transcript alignment\nrevisable live state" ingress -> diar: same meeting PCM diar -> verify: select clean speaker turns diar -> match: anonymous speaker labels profiles -> match: enrolled embeddings verify -> match: live embeddings diar -> merge: timed speaker activity match -> merge: named speaker mapping } together: "Together real-time API\nParakeet transcription" operator.ui -> app.auth: password, key, count, named samples app.control -> speech.profiles: enrollment audio + names (private) app.control -> speech.ingress: session config + Together key (private) app.ticket -> operator.ui: ticket only operator.mic -> speech.ingress: live PCM + ticket speech.ingress -> together: same meeting PCM (server-side key) together -> speech.merge: interim + final text speech.merge -> operator.ui: live speaker-attributed transcript