OpenAI Realtime embed · Vanilla HTML

OpenAI Realtime embed — Vanilla HTML

Runnable in repo

This is the hello-world integration. Fork it, run locally, and drop the same embed into your product shell.

Run locally

From the repo root, ./start runs all examples (or ./start sveltekit / ./start nextjs / ./start react-vite for those frameworks). To run only this one:

terminal
cd examples/openai-realtime-embed/vanilla
npx serve . -l tcp://localhost:4007
# http://localhost:4007

Local URL: http://localhost:4007

Experience id

The demo uses a single public experience id (exp_01EXAMPLES_COFFEE_BARISTA) written directly in the page.

Liforma integration

Load the CDN script and mount the web component with one experience id:

embed
<script src="https://cdn.liforma.ai/sdk/v2/client.js"><\/script>

<liforma-experience experience-id="exp_01EXAMPLES_COFFEE_BARISTA"></liforma-experience>

Key files

  • helloByo.jscopy the npm pattern from docs — vanilla wraps bridge.js
  • app.js — demo scaffolding only
  • bridge.js — CDN port of the SDK helper
  • server.mjs — demo mint / proxy

Related docs

AI agent prompt

Use the Liforma OpenAI Realtime embed example as source material to build a vanilla HTML app.

Source repo folder: examples/openai-realtime-embed/vanilla

Copy `helloByo.js` (`startByoSpeech`) — thin wrapper over `bridge.js` / `connectOpenAiRealtime`.
`app.js` is demo scaffolding only. Prefer `@liforma/client/openai` in bundled apps.

Preserve:
- CDN script: https://cdn.liforma.ai/sdk/v2/client.js
- `Experience.startSession` in presenter mode with `speechInputMode: 'off'`
- OpenAI Realtime → Liforma bridge (pipe PCM + transcript into createUtterance)
- local ephemeral client-secret mint pattern (never ship OPENAI_API_KEY to production browsers)

Adapt:
- branding
- experience id
- Realtime model / voice / instructions
- production ephemeral-secret backend