Providers
The LLM and the speech providers are props, imported from curb/providers. Keys stay in the environment
(Configuration).
| Export | What it gives you |
|---|---|
kugelaudio | kugelaudio.llm(), kugelaudio.stt(), kugelaudio.tts() |
anthropic | An LLM |
openai | An LLM, openai.stt(), openai.tts() |
openaiCompatible | Any OpenAI-compatible LLM |
azure | azure.stt() |
deepgram | deepgram.stt() |
elevenlabs | elevenlabs.stt(), elevenlabs.tts() |
cartesia | cartesia.tts() |
defaultKugelVoice | defaultKugelVoice(language?): the default voice of a language |
DEFAULT_VOICE_LANGUAGE | The language with none set, "en" |
KUGELAUDIO_LLM_MODELS | The models kugelaudio.llm() accepts |
DEFAULT_KUGELAUDIO_LLM_MODEL | The one it uses by default |
kugelaudio
Runs on one key, KUGELAUDIO_API_KEY.
kugelaudio.llm(options?)
KugelAudio’s EU-hosted LLM, in closed alpha.
| Option | Type | Default |
|---|---|---|
model | one of KUGELAUDIO_LLM_MODELS | DEFAULT_KUGELAUDIO_LLM_MODEL |
kugelaudio.stt(options?)
Kugel Ear 1.
| Option | Type | Default | What it does |
|---|---|---|---|
language | string | detects 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 |
boostedPhrases | string[] | Names and terms to spell the way you write them (Pronunciation) | |
dictionaryIds | number[] | every active dictionary | Dictionaries used as vocabulary; [] for none |
projectId | number | the key’s project | The project whose dictionaries apply |
kugelaudio.tts(options?)
| Option | Type | Default | What it does |
|---|---|---|---|
voice | number | the voice of language | A KugelAudio voice id |
model | string | "kugel-3.5" | The TTS model |
language | string | "en" | How text is read, and which voice reads it when voice is not set |
dictionaryIds | number[] | Pronunciation dictionaries. Needs projectId | |
projectId | number | The 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.
| Option | Type | What it does |
|---|---|---|
baseURL | string | The endpoint, like http://127.0.0.1:11434/v1. Required |
model | string | Required |
reasoningEffort | "none", "minimal", "low", "medium", "high", "xhigh", "max" | Sent as reasoning_effort. "none" switches thinking off where the endpoint takes it |
temperature | number, 0 to 2 | Sent as temperature |
topP | number, above 0, at most 1 | Sent as top_p |
body | object | Extra 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
- Voice: choosing the providers.
- Configuration: every environment variable.