Providers

Providers

The LLM and the speech providers are props, imported from curb/providers. Keys stay in the environment (Configuration).

ExportWhat it gives you
kugelaudiokugelaudio.llm(), kugelaudio.stt(), kugelaudio.tts()
anthropicAn LLM
openaiAn LLM, openai.stt(), openai.tts()
openaiCompatibleAny OpenAI-compatible LLM
azureazure.stt()
deepgramdeepgram.stt()
elevenlabselevenlabs.stt(), elevenlabs.tts()
cartesiacartesia.tts()
defaultKugelVoicedefaultKugelVoice(language?): the default voice of a language
DEFAULT_VOICE_LANGUAGEThe language with none set, "en"
KUGELAUDIO_LLM_MODELSThe models kugelaudio.llm() accepts
DEFAULT_KUGELAUDIO_LLM_MODELThe one it uses by default

kugelaudio

Runs on one key, KUGELAUDIO_API_KEY.

kugelaudio.llm(options?)

KugelAudio’s EU-hosted LLM, in closed alpha.

OptionTypeDefault
modelone of KUGELAUDIO_LLM_MODELSDEFAULT_KUGELAUDIO_LLM_MODEL

kugelaudio.stt(options?)

Kugel Ear 1.

OptionTypeDefaultWhat it does
languagestringdetects German or English"de", or "de,fr" to detect among several, expecting the first. Supported: de, en, fr, it, es, pt, nl, pl, ro
turnDetection"kugelturn", "vad""kugelturn"What ends a caller’s turn: KugelTurn hears when the speaker finished; vad waits for a second of pause
turnDetectionLevel"responsive", "conservative""responsive"conservative holds longer through a pause mid-thought
boostedPhrasesstring[]Names and terms to spell the way you write them (Pronunciation)
dictionaryIdsnumber[]every active dictionaryDictionaries used as vocabulary; [] for none
projectIdnumberthe key’s projectThe project whose dictionaries apply

kugelaudio.tts(options?)

OptionTypeDefaultWhat it does
voicenumberthe voice of languageA KugelAudio voice id
modelstring"kugel-3.5"The TTS model
languagestring"en"How text is read, and which voice reads it when voice is not set
dictionaryIdsnumber[]Pronunciation dictionaries. Needs projectId
projectIdnumberThe number in your dashboard URL

anthropic

anthropic(model: string)

Key: ANTHROPIC_API_KEY.

openai

openai(model: string)
openai.stt({ model?, language? })
openai.tts({ voice?, model? })

Key: OPENAI_API_KEY.

openaiCompatible

Any OpenAI-compatible endpoint. Its key, when it needs one, is AGENT_LLM_API_KEY, else OPENAI_API_KEY.

OptionTypeWhat it does
baseURLstringThe endpoint, like http://127.0.0.1:11434/v1. Required
modelstringRequired
reasoningEffort"none", "minimal", "low", "medium", "high", "xhigh", "max"Sent as reasoning_effort. "none" switches thinking off where the endpoint takes it
temperaturenumber, 0 to 2Sent as temperature
topPnumber, above 0, at most 1Sent as top_p
bodyobjectExtra request fields, sent as written. A field Curb or an option above sets is refused

Unset, each one is the endpoint’s default. See Your own LLM.

azure

azure.stt({ language?, region?, segmentationMs? })

Key: AZURE_SPEECH_KEY. region defaults to AZURE_SPEECH_REGION, else eastus. segmentationMs is the trailing silence before Azure ends an utterance, default 300.

deepgram

deepgram.stt({ model?, language? })

Key: DEEPGRAM_API_KEY.

elevenlabs

elevenlabs.stt({ model? })
elevenlabs.tts({ voice?, model? })

Key: ELEVEN_API_KEY, or ELEVENLABS_API_KEY.

cartesia

cartesia.tts({ voice?, model?, language? })

Key: CARTESIA_API_KEY.

Next steps