H-6763: Add OpenAI Realtime voice input to Brunch - #9356
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Author
5 tasks
4 tasks
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 26, 2026 23:04
cf09c5c to
7c04220
Compare
3 tasks
kostandinang
force-pushed
the
kostandin/h-6763-petrinaut-composer-api
branch
from
August 27, 2026 10:52
3152049 to
5b2cf27
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 27, 2026 10:52
7c04220 to
f27bfec
Compare
kostandinang
force-pushed
the
kostandin/h-6763-petrinaut-composer-api
branch
from
August 27, 2026 11:19
5b2cf27 to
3e9d09b
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 27, 2026 11:19
f27bfec to
20c3818
Compare
This was referenced Aug 27, 2026
Base automatically changed from
kostandin/h-6763-petrinaut-composer-api
to
main
September 1, 2026 11:02
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
September 1, 2026 11:06
fa919ff to
70426ed
Compare
Merge activity
|
Initialize transcription-only WebRTC sessions through an app-owned, fail-closed server boundary. Admit only stable finalized transcript items through the existing Petrinaut composer and Brunch transport, with half-duplex lifecycle, stale-event rejection, correction handling, preview gating, and accessible controls. Amp-Thread-ID: https://ampcode.com/threads/T-01a03fb3-fd3d-737f-b4c6-1fc9282950bf Co-authored-by: Amp <amp@ampcode.com>
Keep the voice controller live across React Strict Mode effect replays. Send OpenAI's unified call fields as strings, preserve the SDP terminator, accept its text SDP response, and use provider-default VAD so the microphone reaches the listening state.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
September 1, 2026 12:05
70426ed to
24df8d4
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 24df8d4. Configure here.
lunelson
previously approved these changes
Sep 1, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
lunelson
approved these changes
Sep 1, 2026
This was referenced Sep 2, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


🌟 What is the purpose of this PR?
Add disabled-by-default OpenAI Realtime voice input to Brunch inside the Petrinaut website. OpenAI transcribes microphone audio; each completed transcript is submitted through Petrinaut's generic composer API and the existing AI SDK/Brunch transport.
Brunch remains authoritative for tools, pending asks, evidence, completion, and projection. OpenAI is used only for transcription in this PR.
🔗 Related links
🚫 Blocked by
🔍 What does this change?
/v1/realtime/calls.gpt-live-transcribewith English process-modeling vocabulary and semantic VAD at low eagerness.brunch_askremains correlated and receives the answer through its tool call.Stack record: direct base
3152049cabe28aed98c4e80560366f16fcaae0e4; PR head7c042206e919b80ef27ce46649bfe5202005b27c.Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
No existing documentation screenshot covers the new voice control.
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
🐾 Next steps
🛡 What tests cover this?
Validation run
Results: 214 Petrinaut tests, 49 website tests, 12 transport tests, and 35 Brunch tests passed. Lint, typecheck, build, formatting, and architecture-doc checks passed. Transport emitted 4 inherited
no-await-in-loopwarnings and Brunch emitted 12 inherited warnings.The direct-base no-ElevenLabs audit and
git diff --checkpassed. No package manifest or lockfile changed.Credential-dependent checks not run: live WebRTC negotiation, representative-audio semantic VAD, one finalized item reaching remote Brunch/pending ask, live reconnect rejection, desktop Chrome/Edge/Safari accessibility, and deployed production unavailability.
❓ How to test this?
yarn workspace @apps/petrinaut-website test:unitplus its lint, typecheck, and build commands above.PETRINAUT_OPENAI_VOICE_ENABLED=true, a dedicated server-sideOPENAI_VOICE_API_KEY, and a real Brunch endpoint, start voice input and speak one answer.📹 Demo
Not included: a meaningful demo requires provider credentials, microphone permission, and the remote Brunch environment described above.