startConversation, the response contains everything your web client needs to join the live room:
conversation.serverUrl— the LiveKit WebSocket URLconsumerAccessToken— the end-user’s JWTconversation.character.livekitIdentity— the character’s identity for event wiring
@equos/browser-sdk
Vanilla TypeScript/JavaScript. Great for custom UIs or non-React frameworks.
@equos/react
Provider + renderer components for React, Next.js, Remix, etc.
Browser SDK
Install:EquosConversation:
Full vanilla example
Plain HTML + TypeScript project using Vite.
React SDK
Install:useEquosConversation() hook exposes methods like sendText() and sendContext() for building custom controls.
Full React example
Vite + React app using
<EquosConversationProvider> and <EquosConversationRenderer>.Next.js (full-stack pattern)
Next.js is the canonical full-stack pattern: your API key stays on the server (in a server action or route handler), and only the conversation payload crosses to the client. Server action —app/actions.ts:
app/conversation-client.tsx:
Full Next.js example
Next.js 15 app with server actions +
@equos/react.Features
The following features are available in both the Browser SDK and the React SDK.Mode switch (text · audio · video)
A conversation can run in one of three modes:EquosMode.Text— typed messages only, no audio or videoEquosMode.Audio— voice conversation, no videoEquosMode.Video— full video + voice (default)
In the React SDK,
mode is a controlled prop on EquosConversationProvider—update your state and re-render to change it.Send user text
Send a text message from the user to the character—useful for typed input, accessibility, or inEquosMode.Text conversations. Behaves like the user spoke the message.
Send context
Inject silent context into the conversation—information the character should know about, but that isn’t spoken by the user and doesn’t appear as a message. Great for things like:- Telling the character who the logged-in user is (
"The user's name is Alex, Pro tier, signed up in 2024.") - Passing in the current page or screen the user is on
- Feeding live data (cart contents, current order, sensor readings) as the conversation evolves