@scenaro/sdk npm package — everything you need to ship a production voice experience on the web.
Platform map
| Component | Role |
|---|---|
| Cockpit | Author scenarios, configure features, publish to production |
| Platform API | Identity, sessions, scenario metadata, collections |
| Voice Agent | Python agent joining the Transport session — STT, LLM, TTS, tool calls |
@scenaro/sdk | Protocol, API client, React providers and hooks |
| Transport | Realtime engine carrying audio + data channel — LiveKit today, see Transport |
Three primitives
Platform
Create and publish scenarios in Cockpit. The API issues JWT identity tokens and Transport session credentials.
Voice Agent
The Python agent joins the Transport session, runs the conversation, and calls tools — some fulfilled on the frontend via RPC.
@scenaro/sdk
Headless TypeScript SDK: protocol types, HTTP client, React bindings. Business features stay in your app.
Why @scenaro/sdk
Before unification, each experience vendored its own copy ofscenaro-sdk with diverging auth and storage behavior. @scenaro/sdk is now the single source of truth for:
- Protocol — Transport data-channel topics, message formats, RPC contracts
- API client — identify, session, token storage
- React bindings — providers, hooks, feature runtime
@scenaro/sdk talks to an internal Transport interface rather than any realtime engine
directly — LiveKit is the current implementation. See Transport for
what that means for your code.Package structure
| Import | Contents | Dependencies |
|---|---|---|
@scenaro/sdk | ScenaroSession, client, protocol (framework-agnostic) | livekit-client (peer) |
@scenaro/sdk/protocol | Topics, message types, RPC | none |
@scenaro/sdk/client | createScenaroClient, auth, storage | none (native fetch) |
@scenaro/sdk/react | ScenaroProvider, useScenaroSession, FeatureProvider | react, livekit-client, @livekit/components-react (peers) |
livekit-client and @livekit/components-react are peer dependencies because LiveKit is
the current Transport implementation. The SDK does not bundle
LiveKit — it builds on top of it. Backend scripts can use client + protocol without React
or a Transport implementation at all.Install
For the embed path — one provider, one hook — you only need the SDK itself:@scenaro/sdk@0.3.0
Reaching for the current engine’s own components directly — custom visualizers, avatars,
multi-participant UI? Install the LiveKit peer dependencies as described in
Advanced: Transport extensions. The quickstart below
does not need them.
Next steps
Implement an experience
Full developer journey — install to production
Quickstart
Embed voice on your site in 15 minutes
Coding agent support
Connect docs to Cursor, Claude, and ChatGPT
Authentication
Understand the identify → session flow
Protocol reference
Data-channel topics and message contracts