pub struct Config {Show 30 fields
pub provider: String,
pub model: Option<String>,
pub language: String,
pub output: String,
pub output_file: Option<PathBuf>,
pub timestamps: bool,
pub verbose: bool,
pub openrouter_api_key: Option<SecretString>,
pub openrouter_base_url: String,
pub openrouter_default_model: String,
pub openrouter_allow_custom_endpoint: bool,
pub openrouter_stt_mode: String,
pub openrouter_use_system_proxy: bool,
pub providers: ProvidersConfig,
pub cleanup_style: String,
pub cleanup_provider: String,
pub cleanup_openrouter_model: Option<String>,
pub tts_provider: String,
pub tts_model: String,
pub tts_voice: String,
pub tts_language: String,
pub tts_speaking_rate: f32,
pub tts_max_chars: usize,
pub tts_timeout_ms: u64,
pub tts_pack_dir: Option<PathBuf>,
pub tts_allow_unverified: bool,
pub tts_custom_models: Vec<CustomTtsModelConfig>,
pub local_only: bool,
pub config_path: Option<PathBuf>,
pub cache_dir: PathBuf,
}Expand description
Fully-resolved runtime configuration after merging all sources.
STT direction uses provider / model / language. TTS uses tts_*.
OpenRouter options remain on the historical openrouter_* fields (mirrors of
[providers.openrouter] / legacy [openrouter]). Other vendors live under
Config::providers so the flat surface does not grow per vendor.
Fields§
§provider: StringSTT provider id (local, openrouter, …). Never inferred from key presence.
model: Option<String>§language: String§output: String§output_file: Option<PathBuf>§timestamps: bool§verbose: bool§openrouter_api_key: Option<SecretString>OpenRouter API key — redacted via SecretString (JOE-1779).
openrouter_base_url: String§openrouter_default_model: String§openrouter_allow_custom_endpoint: boolAllow custom credentialed endpoints (JOE-1587).
openrouter_stt_mode: Stringauto | chat | transcriptions (JOE-1586).
openrouter_use_system_proxy: bool§providers: ProvidersConfigNamed non-OpenRouter provider credentials (JOE-1935).
cleanup_style: StringCleanup style name (raw, clean, …).
cleanup_provider: StringCleanup backend name (rules, openrouter).
cleanup_openrouter_model: Option<String>Optional dedicated model for OpenRouter cleanup.
tts_provider: StringTTS provider name (default local).
tts_model: String§tts_voice: String§tts_language: String§tts_speaking_rate: f32§tts_max_chars: usize§tts_timeout_ms: u64§tts_pack_dir: Option<PathBuf>Optional default pack directory for local override (JOE-1619).
tts_allow_unverified: bool§tts_custom_models: Vec<CustomTtsModelConfig>Validated custom TTS catalogue entries (empty when packs not present yet).
local_only: boolWhen true, remote STT/TTS providers are rejected at validation (JOE-1935).
config_path: Option<PathBuf>§cache_dir: PathBufImplementations§
Source§impl Config
impl Config
Sourcepub fn default_config_path() -> Option<PathBuf>
pub fn default_config_path() -> Option<PathBuf>
Resolve the platform-appropriate config file path.
Sourcepub fn default_cache_dir() -> Result<PathBuf>
pub fn default_cache_dir() -> Result<PathBuf>
Resolve the platform-appropriate cache directory (models live under models/).
Sourcepub fn load() -> Result<Self>
pub fn load() -> Result<Self>
Load config file from the default location (if present) and merge with env vars.
Sourcepub fn load_from(path: &Path) -> Result<Self>
pub fn load_from(path: &Path) -> Result<Self>
Load from an explicit config file path (used in tests / CLI --config).
Sourcepub fn load_from_required(path: &Path) -> Result<Self>
pub fn load_from_required(path: &Path) -> Result<Self>
Load from an explicit path; error if the file is missing (JOE-1608).
Sourcepub fn openrouter_api_key_exposed(&self) -> Option<String>
pub fn openrouter_api_key_exposed(&self) -> Option<String>
Expose the OpenRouter API key as a plain string for provider construction.
Sourcepub fn provider_secret(&self, id: &ProviderId) -> Option<SecretString>
pub fn provider_secret(&self, id: &ProviderId) -> Option<SecretString>
Provider-scoped secret for build-context construction (JOE-1935).
Sourcepub fn validate(&self) -> Result<()>
pub fn validate(&self) -> Result<()>
Validate provider/model/style/limit cross-fields (JOE-1608 / JOE-1935).
Sourcepub fn validate_tts_custom_models(&self) -> Result<()>
pub fn validate_tts_custom_models(&self) -> Result<()>
Validate [[tts.custom_models]] uniqueness and reserved namespaces.
Sourcepub fn effective_diagnostic(&self) -> EffectiveConfigDiagnostic
pub fn effective_diagnostic(&self) -> EffectiveConfigDiagnostic
Redacted diagnostic view for --print-effective-config (JOE-1608 / JOE-1935).
Sourcepub fn apply_cli(
&mut self,
provider: Option<&str>,
model: Option<&str>,
language: Option<&str>,
output: Option<&str>,
output_file: Option<&Path>,
timestamps: bool,
verbose: bool,
cleanup: Option<&str>,
cleanup_provider: Option<&str>,
cleanup_model: Option<&str>,
)
pub fn apply_cli( &mut self, provider: Option<&str>, model: Option<&str>, language: Option<&str>, output: Option<&str>, output_file: Option<&Path>, timestamps: bool, verbose: bool, cleanup: Option<&str>, cleanup_provider: Option<&str>, cleanup_model: Option<&str>, )
Apply CLI overrides on top of the loaded config.
Sourcepub fn resolve_model(&self, model_explicitly_set: bool) -> Result<String>
pub fn resolve_model(&self, model_explicitly_set: bool) -> Result<String>
Resolve the effective model for the active provider.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more