Skip to main content

Model ID format

Every model is identified by a provider/model string:
This is the exact string cost tracking prices. When attach()/guard() wraps a plugin, VoiceGateway reads its provider and model attributes off the live instance (f"{provider}/{model}") and passes that straight to voice-prices. Nothing is parsed or stripped from it.
Language and voice selection belong to your framework’s native constructor kwargs (language="en" on a Deepgram STT plugin, voice_id="..." on a Cartesia TTS plugin), not to the model string. If a colon-suffixed value like nova-3:en ends up as the plugin’s model, that suffix becomes part of the literal model_id VoiceGateway records, and the pricing lookup for that exact string fails for most cloud providers (cost records as unpriced). Local/self-hosted models (local/*, ollama/*) are unaffected: they price at $0 regardless of what follows the model name, which is why an Ollama tag (ollama/llama3.2:3b) or a Piper voice (local/piper:en_US-lessac-medium) is safe to write as-is.

Registering custom model aliases

Register aliases under models in voicegw.yaml. Aliases surface in the dashboard and CLI as friendlier names; they group models by modality with an optional default_voice for TTS entries.
Models can also be registered through the dashboard or, if voicegw mcp is running, through MCP tool calls from your IDE. Dashboard/MCP-registered models persist in SQLite and merge with YAML at startup (a YAML entry with the same id wins).

Model reference

STT

LLM

TTS


Stacks

A stack is a named bundle mapping one name to an STT, LLM, and TTS model id: exactly those three keys, nothing else.
Reference a stack from a project with default_stack: premium (see Projects).
A stack is a dashboard and documentation hint only. Nothing reads default_stack at runtime to construct a provider. Pick the model ids from your chosen stack and pass them to your framework’s native provider constructors yourself, then wrap with attach()/guard():

See Projects for default_stack and budget configuration. See attach() for wiring native providers so cost tracking sees them. See voicegw.yaml reference for the full config file shape.