Voice-driven workspace navigation
Speak a request such as “show my calendar next month” and the workspace responds through the same permission-checked command path used for typed requests. One mic press starts continuous listening, natural pauses separate utterances, and the right Calendar, Tasks, Email, or Spreadsheets view appears without creating a second control system for voice.
Speak naturally, keep the interface deterministic
The browser captures speech as a real-time audio stream. A worker detects natural pauses against the room's changing noise floor, transcribes each utterance, and returns text over the same session. From there, voice and keyboard input converge: the existing resolver validates the request, applies access rules, and selects a known workspace view.
Why this interaction is useful
Less interface hunting
A person can ask for a destination and time range directly instead of finding a module, opening filters, and reconstructing the same request through several controls.
Hands-free when it matters
Voice keeps the workspace useful while reviewing notes, moving between meetings, or handling another task that makes a keyboard inconvenient.
Accessible without a weaker boundary
Voice changes how a command arrives, not what it is allowed to do. Authentication, organisation scope, validation, and the fixed view catalogue still apply.
Continuous listening
A single session can carry several requests, so there is no stop-and-restart ritual between each sentence.
Adaptive speech detection
The worker learns the ambient noise floor and detects relative silence instead of assuming every room and microphone has the same volume.
One interaction model
Typed and spoken requests share one submission path, one permission model, and one set of tested workspace renderers.
The stack behind one spoken command
Media transport, transcription, authorization, intent handling, and rendering are deliberately separate. Each layer has a narrow responsibility and the application backend remains the authority for access and UI capabilities.
Browser and UI
React 19, TypeScript, TanStack Query, WebRTC microphone capture, and the existing reducer-driven workspace renderers.
Authorization API
Laravel 12 authenticates the user, checks the feature flag and rate limit, scopes the room to the organisation, and issues a short-lived microphone publishing grant.
Real-time media
A managed WebRTC media cloud provides the ephemeral room, low-latency audio transport, and reliable transcript data between browser and worker.
Audio worker
A Node.js worker receives mono PCM16 frames, measures ambient noise, closes utterances after 900 ms of relative silence, and encodes WAV audio.
Speech and intent
Hosted speech recognition produces text. Natural requests can use the centrally routed language service, while exact commands stay deterministic.
Runtime and data
Nginx verifies room-start webhooks, Docker Compose runs the services, and PostgreSQL stores each organisation's encrypted media credentials.
Privacy and failure boundaries
Diagnostic events describe the session lifecycle without recording content. Room names, tokens, credentials, raw audio, transcript text, parsed commands, and raw provider responses stay out of logs. Short-lived grants limit what the browser can publish, while the backend rechecks every request before a workspace view is selected.