Voice-Native Operations Analytics Dashboard & Copilot
VoiceOps is a voice-native operations copilot for support and operations analysts to investigate transaction failures, operational incidents, and performance metrics through realtime conversational voice.
The core problem we address is not simply speech recognition. In real operational conversations, users interrupt, refine, and change requests while the system may still be processing the previous request.
VoiceOps therefore treats interruption, recovery, and stale-result prevention as first-class system requirements.
VoiceOps is designed for:
- Support engineers
- Operations analysts
- Payment operations teams
- Incident response teams
- Engineers investigating transaction failures
The goal is to let an operator investigate an incident naturally, as they would communicate with a teammate.
Operations teams often investigate transaction failures by manually navigating dashboards, applying filters, inspecting tables, and checking metrics.
During a live incident, this can slow down investigation and decision-making.
VoiceOps allows the analyst to perform these investigations conversationally.
For example:
"Show me the failed transactions from Bangalore."
While the system is responding, the analyst can interrupt:
"Wait β only transactions above ten thousand."
The previous turn becomes obsolete, the new turn becomes authoritative, and stale results from the previous request are prevented from overwriting the latest dashboard state or being spoken to the user.
A naive voice assistant may stop speaking when a user interrupts but still allow the previous asynchronous operation to finish and update application state.
VoiceOps prevents this using a turn-fencing model.
Each user request receives:
- A monotonically increasing
turnId - A unique
requestId - An authoritative/superseded status
When a new request arrives:
- The previous turn is interrupted/superseded.
- The new turn becomes authoritative.
- Cancellable work is cancelled where supported.
- Asynchronous results retain their originating turn ID.
- Results are checked against the authoritative turn before state mutation.
- Only the latest authoritative turn can update the dashboard or produce the final spoken response.
Cancellation is an optimization; turn fencing is the correctness mechanism.
Users can query operational data naturally:
"Show failed transactions from Bangalore."
"Only transactions above ten thousand."
"Show me the failures from Mumbai."
VoiceOps uses LiveKit for realtime audio transport and conversational interaction.
Rime is the active text-to-speech provider used for spoken agent responses.
Users can interrupt an ongoing response and immediately provide a refined request.
Older asynchronous results cannot overwrite state belonging to a newer authoritative turn.
Authoritative agent results are published through the realtime data channel and reflected in the React dashboard.
βββββββββββββββββββββββ
β User β
β Microphone β
ββββββββββββ¬βββββββββββ
β
βΌ
βββββββββββββββββββββββ
β LiveKit β
β Realtime WebRTC β
ββββββββββββ¬βββββββββββ
β
βΌ
βββββββββββββββββββββββ
β STT β
β Deepgram Nova-3 β
ββββββββββββ¬βββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββ
β VoiceOps Agent β
β β
β Agent Coordinator β
β Turn Manager β
β Tool Registry β
β State Fence β
β Response Generator β
ββββββββββββββ¬ββββββββββββββββ
β
βββββββββββββββΌβββββββββββββββ
β β β
βΌ βΌ βΌ
Transaction Metrics Operations /
Tools Tools Incidents
β β β
βββββββββββββββΌβββββββββββββββ
β
βΌ
βββββββββββββββββββββββ
β Authoritative State β
β Turn Fence β
ββββββββββββ¬βββββββββββ
β
LiveKit Data Channel
β
βΌ
βββββββββββββββββββββββ
β React Dashboard β
β Zustand State β
β Tables + Metrics β
βββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββ
β Rime TTS β
β Spoken Response β
βββββββββββββββββββββββ
- React 18
- Vite
- TypeScript
- Tailwind CSS
- Lucide Icons
- Recharts
- LiveKit React components
- Zustand
- LiveKit Agents
- LiveKit WebRTC
- Deepgram Nova-3 STT through LiveKit inference
- Rime TTS
- Node.js
- TypeScript
- LiveKit Agents SDK
- Gemini API / tool-calling architecture
- Synthetic operations data engine
- Turn management and state fencing
- AbortController-based cancellation where supported
@voiceops/shared- TypeScript event and state contracts
- Node.js native test runner
- TypeScript build/type checking
- Automated interruption tests
- Stale-result race tests
- Turn-sequencing tests
- State-fencing tests
- Stress tests
- Dashboard state tests
- Simulated end-to-end workflow tests
Rime is the active speech provider in the submitted implementation.
| Configuration | Value |
|---|---|
| Provider | Rime |
| Model ID | coda |
| Speaker | celeste |
| Language | en |
| Audio format | PCM |
| Sample rate | 24000 Hz |
| Channels | Mono |
| Runtime synthesis | HTTP / non-WebSocket |
| WebSocket streaming | Disabled |
| Integration | @livekit/agents-plugin-rime |
Rime is integrated through the LiveKit Rime plugin. The submitted runtime uses non-WebSocket synthesis.
VoiceOps/
β
βββ packages/
β βββ shared/
β β βββ Common TypeScript contracts and event schemas
β β
β βββ agent/
β β βββ Agent coordinator
β β βββ Transaction query tools
β β βββ Synthetic data engine
β β βββ Turn manager
β β βββ State fencing
β β βββ LiveKit realtime worker
β β βββ Rime TTS integration
β β
β βββ web/
β βββ React dashboard
β βββ Transaction table
β βββ Metrics
β βββ Incident panel
β βββ Voice controls
β βββ LiveKit voice session
β
βββ tests/
β βββ contracts/
β βββ data/
β βββ interruption/
β βββ state/
β βββ e2e/
β
βββ docs/
β
βββ README.md
βββ RIME_EVIDENCE.md
βββ .env.example
βββ package.json
- Node.js
- npm
- A LiveKit project
- A Rime API key
- A Gemini API key if using the Gemini provider
From the project root:
npm installCopy the example environment file.
Copy-Item .env.example .envcp .env.example .envConfigure:
LIVEKIT_URL=
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
RIME_API_KEY=
GEMINI_API_KEY=
PORT=3001
For the frontend:
VITE_API_URL=http://localhost:3001
Never commit .env or real API keys.
From the project root:
npm run dev:webnpm run dev:agentnpm run dev:serverThe frontend connects to the realtime LiveKit session and receives authoritative dashboard state through the realtime data channel.
Build the complete project:
npm run buildRun the complete automated test suite:
npm testRun interruption-specific tests:
npm run test:interruptionRun stress tests:
npm run test:stressRun contract tests:
npm run test:contractsRun end-to-end simulation tests:
npm run test:e2eThe test suite covers:
- Turn sequencing
- Interruption handling
- Stale asynchronous results
- State fencing
- Dashboard state updates
- Repeated interruption scenarios
- Cross-package contracts
- Deterministic transaction querying
A typical interaction is:
User:
"Show failed transactions from Bangalore."
β
βΌ
Turn 1 becomes authoritative
β
βΌ
Agent executes query / generates response
β
β USER INTERRUPTS
βΌ
"Wait β only transactions above βΉ10,000."
β
βΌ
Turn 1 becomes superseded
β
βΌ
Turn 2 becomes authoritative
β
βΌ
Latest query executes
β
βΌ
Turn 2 updates dashboard + Rime response
β
βΌ
Any late Turn 1 result is fenced
and cannot overwrite Turn 2
This is the primary hard voice behavior demonstrated by the project.
If a user interrupts an active request:
- Obsolete speech is interrupted.
- The previous turn is superseded.
- The new request receives a newer turn ID.
- Cancellable operations are cancelled where supported.
- Late results from previous turns are checked against the authoritative-turn fence.
- Only the latest authoritative state can update the dashboard.
- Only the latest authoritative response is allowed through the spoken response path.
If a realtime connection fails, the voice session reports the connection failure and the frontend can transition out of the active listening state.
VoiceOps includes automated evaluation of the core correctness properties.
Verifies that newer requests receive newer authoritative turn IDs.
Verifies that a new request supersedes the active request.
Simulates an older request completing after a newer request and verifies that the old result cannot mutate authoritative state.
Verifies that dashboard state is only updated by authoritative turns.
Runs repeated interruption scenarios to exercise turn sequencing and stale-result protection.
The realtime pipeline was manually validated with:
- LiveKit microphone connection
- Browser microphone input
- Live STT transcription
- User-turn completion
- Agent processing
- Authoritative state publication
- Dashboard state synchronization
- Rime TTS response generation
Detailed evidence is provided in:
RIME_EVIDENCE.md
"Show me the failed transactions from Bangalore."
The dashboard displays the matching transactions and metrics.
"Wait β only transactions above ten thousand."
The previous response is interrupted and the newer request becomes authoritative.
The dashboard then reflects the refined request.
If the original query completes later, its stale result cannot overwrite the newer dashboard state.
- The operations dataset is synthetic and deterministic; it does not connect to a production payment database.
- The current system is a hackathon prototype rather than a production incident-management platform.
- Voice quality and transcription depend on external realtime, STT, and TTS services and network conditions.
- Rime is used through non-WebSocket synthesis in the submitted implementation.
- Dedicated numerical measurements for WebRTC audio cutoff latency, STT finalization latency, LLM TTFT, and Rime TTFA were not instrumented with a synchronized measurement harness.
- Production deployment would require additional authentication, authorization, audit logging, persistent storage, observability, and enterprise data integrations.
Secrets are supplied through environment variables and are intentionally excluded from source control.
The repository includes:
.env.example
with placeholders only.
The actual:
.env
file must never be committed or included in a submission package.
| Role | Focus |
|---|---|
| Frontend Engineer | React operations dashboard, tables, metrics, visualizations, voice UI |
| Voice / Realtime Engineer | LiveKit realtime pipeline, STT, Rime TTS, audio and interruption handling |
| AI / Backend Engineer | Agent orchestration, tool calling, synthetic data engine, turn fencing |
| Evaluation / Integration Engineer | Interruption tests, stress testing, evaluation, integration and evidence |
VoiceOps is designed to make operational investigation as natural as talking to a teammate.
The project does not treat voice as a button placed on top of a dashboard.
Instead, voice, interruption, recovery, and stale-result prevention are part of the core workflow.
Let an operations analyst investigate an incident naturally, quickly, and safely through voice.