Hello Live is an OpenAI GPT-Live app that supports WebRTC voice calls. You can access the app at hello-live.val.run.
This demo shows off the GPT-Live WebRTC session API and the server-side sideband
websocket used to observe and control a session. It uses Responses
delegation: gpt-live-1 handles the spoken conversation while a backend
Responses model (gpt-5.6-luna) handles reasoning and tool calls (e.g.
end_call). Demo calls are limited to 3 minutes.
If you remix the app, you'll just need to pop in your own OPENAI_API_KEY (from
platform.openai.com).
/rtc endpoint posts the offer + session config to
POST /v1/live/sessions and returns the SDP answer + session IDresponse.eventresponse.item.create and continues the
backend with response.createRendering mermaid diagram...
GET / - serves the WebRTC-based appPOST /rtc - creates a new GPT-Live WebRTC session; body is the SDP offer,
response is { session: { id }, transport: { type: "webrtc", sdp } }POST /observer/:sessionId - internal endpoint to attach a GPT-Live sideband
websocket for session control├── frontend/
│ └── index.html # HTML/JS application for WebRTC
├── main.tsx # Main entrypoint for the val.town app
└── routes/
├── agent.ts # GPT-Live session configuration, delegation, and tools
├── observer.ts # Server-side sideband control for WebRTC
├── rtc.ts # WebRTC session setup
└── utils.ts # Various HTTP helpers
audioActive / callEnding from reflected session.output_audio.delta
events so hangup waits for the goodbye to finish playingsession.close from the browser on Stop and wait for session.closed