Zackriya-Solutions/meetily · error
Unknown model: {}
Error message
Unknown model: {} What it means
get_model_path maps a model name to app_data_dir/models/summary/<gguf_file> via get_model_by_name. An unknown name - anything not in the static catalog - fails here before any filesystem access happens.
Source
Thrown at frontend/src-tauri/src/summary/summary_engine/models.rs:237
}
/// Get a specific model by name
pub fn get_model_by_name(name: &str) -> Option<ModelDef> {
get_available_models().into_iter().find(|m| m.name == name)
}
/// Get the default model (first in list)
pub fn get_default_model() -> ModelDef {
get_available_models()
.into_iter()
.next()
.expect("At least one model must be defined")
}
/// Resolve model name to full file path in the models directory
pub fn get_model_path(app_data_dir: &PathBuf, model_name: &str) -> Result<PathBuf> {
let model = get_model_by_name(model_name)
.ok_or_else(|| anyhow!("Unknown model: {}", model_name))?;
let models_dir = get_models_directory(app_data_dir);
let model_path = models_dir.join(&model.gguf_file);
Ok(model_path)
}
/// Get the models directory path for built-in AI
pub fn get_models_directory(app_data_dir: &PathBuf) -> PathBuf {
app_data_dir.join("models").join("summary")
}
// ============================================================================
// Prompt Templates (Model-Specific Formatting)
// ============================================================================
/// Gemma 3 chat template format
pub const GEMMA3_TEMPLATE: &str = "\View on GitHub (pinned to 0281737d87)
Solutions
- Use a name returned by get_available_models() for the summary engine
- Verify the exact string - matching is verbatim and case-sensitive
- Reset the stored model preference so the code falls back to get_default_model()
Defensive patterns
Strategy: validation
Validate before calling
let model = get_model_by_name(model_name)
.ok_or_else(|| anyhow!("unknown model {:?}; valid: {:?}",
model_name,
get_available_models().iter().map(|m| m.name.clone()).collect::<Vec<_>>()))?;
let path = get_model_path(app_data_dir, &model.name)?; Type guard
fn is_known_model(name: &str) -> bool {
get_model_by_name(name).is_some()
} Prevention
- Derive paths from names freshly resolved via get_available_models() each session
- Do not mix whisper model names into summary-model path lookups (separate catalogs)
- Fall back to get_default_model() when a persisted name fails validation
When it happens
Trigger: Passing a name that is not a ModelDef.name to get_model_path: typo, casing error, a stale persisted model preference, or accidentally passing a whisper model name where a summary (LLM) model name is required.
Common situations: Settings stored by an older build referencing a removed/renamed model; confusion between the whisper model list and the summary-engine model list; frontend sending the display label instead of the internal name.
Related errors
- Unknown template: {}
- Model {} not found
- No transcript text available. Please add some text first.
- Device name cannot be empty
- Device type (input/output) not specified in the name
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/21127f10aaf697af.
Report an issue: GitHub.