Skip to content

feat(config): unify STT provider under [[llm.providers]] with role/capability field #2175

@bug-ops

Description

@bug-ops

Motivation

STT is currently configured in a separate [llm.stt] section with its own model, base_url, and provider fields. This breaks the multi-model design principle: all providers should be declared once in [[llm.providers]] and referenced by name from subsystems.

Unifying STT under [[llm.providers]] enables:

  • Single place to configure all API endpoints and credentials
  • Reuse of existing provider entries (e.g. STT on same OpenAI endpoint as chat)
  • Consistent *_provider reference pattern across all subsystems

Proposed Design

Add a capabilities field (or role) to [[llm.providers]] entries to mark STT-capable providers:

[[llm.providers]]
name = "whisper"
type = "openai"
base_url = "https://api.openai.com/v1"
model = "gpt-4o-mini-transcribe"
capabilities = ["stt"]

[llm.stt]
provider = "whisper"   # references [[llm.providers]] name — one line
language = "auto"

The [llm.stt] section is kept for STT-specific options (language, VAD settings) but loses model and base_url — those move to the provider entry.

Migration

--migrate-config must auto-convert existing [llm.stt]. model/base_url into a new [[llm.providers]] entry named stt and replace [llm.stt] with a provider reference.

Breaking Change

Yes — existing configs with [llm.stt] model = ... need migration. Document in CHANGELOG.md.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestllmzeph-llm crate (Ollama, Claude)

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions