Skip to content

@vowel.to/client v0.1.2-393


@vowel.to/client / index / VowelClientConfig

Interface: VowelClientConfig

Defined in: lib/vowel/types/types.ts:527

Vowel client configuration

Properties

PropertyTypeDescriptionDefined in
appId?stringApp ID for this tenant (string format from Vowel platform)lib/vowel/types/types.ts:529
convexUrl?stringOptional: Custom Convex platform URL (base URL) If provided, constructs the token endpoint as ${convexUrl}/vowel/api/generateToken Useful for pointing to different Convex deployments (dev, staging, production) Example const vowel = new Vowel({ appId: 'demo-app', convexUrl: 'https://my-deployment.convex.site' });lib/vowel/types/types.ts:544
tokenEndpoint?stringOptional: Custom token endpoint URL If provided, overrides the default Vowel platform endpoint Takes precedence over convexUrl if both are provided Useful for self-hosted or proxy token generation Example const vowel = new Vowel({ appId: 'demo-app', tokenEndpoint: 'https://my-server.com/api/token' });lib/vowel/types/types.ts:560
tokenProvider?(config) => Promise<{ tokenName: string; model: string; provider: "gemini" | "openai" | "vowel-prime"; expiresAt: string; systemInstructions?: string; }>Optional: Custom token provider for advanced use cases Allows complete control over token generation (e.g., caching, custom auth) The token provider should return an object matching this interface: `{ tokenName: string; // The ephemeral token model: string; // AI model name provider: 'gemini''openai'; expiresAt: string; // ISO timestamp systemInstructions?: string; }**Example**const vowel = new Vowel({ appId: 'demo-app', tokenProvider: async (config) => { // Custom token generation logic const response = await fetch('/my-custom-endpoint', { method: 'POST', body: JSON.stringify(config) }); return await response.json(); } });`
router?RouterAdapterRouter adapter for navigation (LEGACY - deprecated) Deprecated Use navigationAdapter instead for the new dual-adapter architecturelib/vowel/types/types.ts:604
navigationAdapter?NavigationAdapterNavigation adapter (NEW) Handles WHERE to go (routing) Optional - if not provided, navigation features will be disabledlib/vowel/types/types.ts:611
automationAdapter?AutomationAdapterAutomation adapter (NEW) Handles WHAT to do (page interaction) Optional - if not provided, page interaction features will be disabledlib/vowel/types/types.ts:618
routes?VowelRoute[]Optional: Custom routes (can also be auto-detected from adapters)lib/vowel/types/types.ts:621
voiceConfig?VowelVoiceConfigOptional: Voice configurationlib/vowel/types/types.ts:624
instructions?stringOptional: Custom system instructions for the AI agentlib/vowel/types/types.ts:627
systemInstructionOverride?stringDeprecated Use 'instructions' instead Legacy alias for instructions (from OpenAI SDK compatibility)lib/vowel/types/types.ts:633
onUserSpeakingChange?(isSpeaking) => voidOptional: Callback when user speaking state changeslib/vowel/types/types.ts:636
onAIThinkingChange?(isThinking) => voidOptional: Callback when AI thinking state changeslib/vowel/types/types.ts:639
onToolExecutingChange?(isExecuting) => void-lib/vowel/types/types.ts:640
onAISpeakingChange?(isSpeaking) => voidOptional: Callback when AI speaking state changeslib/vowel/types/types.ts:643
floatingCursor?FloatingCursorConfigOptional: Floating cursor configuration By default, floating cursor is enabled. Set enabled: false to disable it. Default { enabled: true }lib/vowel/types/types.ts:650
borderGlow?{ enabled: boolean; color?: string; intensity?: number; width?: number; animationDuration?: number; zIndex?: number; pulse?: boolean; }Optional: Border glow configurationlib/vowel/types/types.ts:680
borderGlow.enabledbooleanEnable border glow feature (default: false)lib/vowel/types/types.ts:682
borderGlow.color?stringGlow color (CSS color value)lib/vowel/types/types.ts:684
borderGlow.intensity?numberGlow intensity (blur radius in pixels)lib/vowel/types/types.ts:686
borderGlow.width?numberGlow width (box-shadow spread in pixels)lib/vowel/types/types.ts:688
borderGlow.animationDuration?numberAnimation duration in millisecondslib/vowel/types/types.ts:690
borderGlow.zIndex?numberZ-index for positioninglib/vowel/types/types.ts:692
borderGlow.pulse?booleanWhether to show pulsing animationlib/vowel/types/types.ts:694
actionPill?{ enabled: boolean; bottomOffset?: number; autoHideDelay?: number; maxWidth?: number; zIndex?: number; mobileOnly?: boolean; }Optional: Floating action pill configurationlib/vowel/types/types.ts:698
actionPill.enabledbooleanEnable action pill feature (default: false)lib/vowel/types/types.ts:700
actionPill.bottomOffset?numberPosition from bottom in pixelslib/vowel/types/types.ts:702
actionPill.autoHideDelay?numberAuto-hide delay in milliseconds (0 = no auto-hide)lib/vowel/types/types.ts:704
actionPill.maxWidth?numberMaximum width in pixelslib/vowel/types/types.ts:706
actionPill.zIndex?numberZ-index for positioninglib/vowel/types/types.ts:708
actionPill.mobileOnly?booleanShow only on mobile deviceslib/vowel/types/types.ts:710
typingSounds?{ enabled?: boolean; volume?: number; typingSoundUrl?: string; clickSoundUrl?: string; minSegmentDurationMs?: number; maxSegmentDurationMs?: number; minPauseDurationMs?: number; maxPauseDurationMs?: number; clickSoundProbability?: number; }Optional: Typing sound configurationlib/vowel/types/types.ts:714
typingSounds.enabled?booleanEnable typing sounds (default: true)lib/vowel/types/types.ts:716
typingSounds.volume?numberVolume multiplier (0.0 to 1.0, default: 0.3)lib/vowel/types/types.ts:718
typingSounds.typingSoundUrl?stringCustom typing sound URL (default: assets.vowel.to/typing-sound.pcm)lib/vowel/types/types.ts:720
typingSounds.clickSoundUrl?stringCustom click sound URL (default: assets.vowel.to/mouse-click-sound.pcm)lib/vowel/types/types.ts:722
typingSounds.minSegmentDurationMs?numberMinimum segment duration in ms (default: 200)lib/vowel/types/types.ts:724
typingSounds.maxSegmentDurationMs?numberMaximum segment duration in ms (default: 800)lib/vowel/types/types.ts:726
typingSounds.minPauseDurationMs?numberMinimum pause duration in ms (default: 300)lib/vowel/types/types.ts:728
typingSounds.maxPauseDurationMs?numberMaximum pause duration in ms (default: 1500)lib/vowel/types/types.ts:730
typingSounds.clickSoundProbability?numberProbability of click sound vs typing (0.0 to 1.0, default: 0.15)lib/vowel/types/types.ts:732
darkMode?{ enabled?: boolean; storageKeyPrefix?: string; }Optional: Dark mode configuration Controls the appearance theme of vowel UI components Example const vowel = new Vowel({ appId: 'demo-app', darkMode: { enabled: true, // Enable dark mode storageKeyPrefix: 'my-app' // Optional: custom storage key prefix } });lib/vowel/types/types.ts:750
darkMode.enabled?booleanEnable dark mode (default: follows system preference)lib/vowel/types/types.ts:752
darkMode.storageKeyPrefix?stringStorage key prefix for persisting preference (default: 'vowel')lib/vowel/types/types.ts:754