Environment
| Variable | Required | Example |
|---|---|---|
| API URL | Yes | https://api.scenaro.io |
| Publication UUID | Yes | Cockpit production publication |
apiPathPrefix | Check | '/v1' or '' if URL 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_tokenJWT is stored in localStorage only (never logged to analytics)
Dependencies
-
@scenaro/sdkversion pinned inpackage.json -
react,react-dominstalled - If using Transport extensions:
livekit-client,@livekit/components-react>=2.0.0installed
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 (optionalbeforeunloadhandler) -
onSessionEndresets feature UI state -
status === 'reconnecting'surfaced to the user (brief indicator) -
ScenaroErrorcodes handled:MIC_PERMISSION_DENIED,CONNECTION_LOST,AGENT_UNAVAILABLE
Performance
-
ScenaroProvidermounted 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
limitsetting
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/tokenand/public/session
Build
Deployment
- Mintlify docs URL in your README:
https://docs.scenaro.io - Changelog reviewed for breaking changes: Changelog