Scenaro combines a scenario authoring cockpit, a Python voice agent, a public API, and the @scenaro/sdk npm package — everything you need to ship a production voice experience on the web.

Platform map

ComponentRole
CockpitAuthor scenarios, configure features, publish to production
Platform APIIdentity, sessions, scenario metadata, collections
Voice AgentPython agent joining the Transport session — STT, LLM, TTS, tool calls
@scenaro/sdkProtocol, API client, React providers and hooks
TransportRealtime 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 of scenaro-sdk with diverging auth and storage behavior. @scenaro/sdk is now the single source of truth for:
  1. Protocol — Transport data-channel topics, message formats, RPC contracts
  2. API client — identify, session, token storage
  3. React bindings — providers, hooks, feature runtime
Business features (product search, cart, comparison) remain outside the package. Each app injects its own feature registry.
@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

ImportContentsDependencies
@scenaro/sdkScenaroSession, client, protocol (framework-agnostic)livekit-client (peer)
@scenaro/sdk/protocolTopics, message types, RPCnone
@scenaro/sdk/clientcreateScenaroClient, auth, storagenone (native fetch)
@scenaro/sdk/reactScenaroProvider, useScenaroSession, FeatureProviderreact, 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:
Current version: @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