Use this checklist before shipping a Scenaro integration to production.

Environment

VariableRequiredExample
API URLYeshttps://api.scenaro.io
Publication UUIDYesCockpit production publication
apiPathPrefixCheck'/v1' or '' if URL includes /v1
Double-check apiPathPrefix. A common bug is /v1/v1/public/token when the base URL already includes /v1.

Security

  • HTTPS on your site (required for microphone)
  • Publication UUID is the production publication, not staging
  • No admin API keys in frontend code
  • user_token JWT is stored in localStorage only (never logged to analytics)

Dependencies

  • @scenaro/sdk version pinned in package.json
  • react, react-dom installed
  • If using Transport extensions: livekit-client, @livekit/components-react >=2.0.0 installed

Feature registry

  • Every tool in Cockpit config has a matching registry entry
  • Handlers return within 10s (RPC_TIMEOUTS.FRONTEND_TOOL_MS)
  • Error responses use code: 'ERROR' with agent-friendly data

Session lifecycle

  • end() called on page unload or navigation (optional beforeunload handler)
  • onSessionEnd resets feature UI state
  • status === 'reconnecting' surfaced to the user (brief indicator)
  • ScenaroError codes handled: MIC_PERMISSION_DENIED, CONNECTION_LOST, AGENT_UNAVAILABLE

Performance

  • ScenaroProvider mounted once at the app root — the identity JWT is cached and reused across sessions
  • Feature components lazy-loaded if heavy
  • Search results limited via Cockpit limit setting

Browser support

  • Tested Chrome, Safari, Firefox (desktop + mobile)
  • Microphone permission flow handled gracefully
  • Fallback message when WebRTC blocked

Monitoring

  • Client-side error logging for connection failures
  • Track session start/end events in your analytics
  • Monitor API error rates on /public/token and /public/session

Build

For Next.js:

Deployment

  • Mintlify docs URL in your README: https://docs.scenaro.io
  • Changelog reviewed for breaking changes: Changelog