tinyhumansai/openhuman · warning
No providers available for model probing
Error message
No providers available for model probing
What it means
The doctor's model-probe section builds its target list from inference::provider::list_providers() and bails rather than emitting a vacuous report when that list is empty. In the current code list_providers() returns a fixed single entry (the "openhuman" backend), and run_models itself marks every target Skipped with the message "model catalog refresh removed" — so this bail is a defensive guard that is effectively unreachable unless the provider registry is emptied by a refactor or trimmed build variant.
Source
Thrown at src/openhuman/platform/doctor/core.rs:145
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelProbeReport {
pub entries: Vec<ModelProbeEntry>,
pub summary: ModelProbeSummary,
}
fn doctor_model_targets() -> Vec<String> {
crate::openhuman::inference::provider::list_providers()
.into_iter()
.map(|provider| provider.name.to_string())
.collect()
}
pub fn run_models(_config: &Config, _use_cache: bool) -> Result<ModelProbeReport> {
let targets = doctor_model_targets();
if targets.is_empty() {
anyhow::bail!("No providers available for model probing");
}
let skipped_count = targets.len();
let entries = targets
.into_iter()
.map(|provider| ModelProbeEntry {
provider,
outcome: ModelProbeOutcome::Skipped,
message: Some("model catalog refresh removed".to_string()),
})
.collect();
Ok(ModelProbeReport {
entries,
summary: ModelProbeSummary {
ok: 0,
skipped: skipped_count,
auth_or_access: 0,View on GitHub (pinned to 7491200858)
Solutions
- If you forked or trimmed the provider list, restore at least one entry or skip the doctor models section entirely.
- Treat the error as a signal that the build's inference surface is empty — verify your feature flags.
- For upstream users this indicates a code-state bug, not a config problem — report it rather than working around it.
Defensive patterns
Strategy: validation
Validate before calling
if crate::openhuman::inference::provider::list_providers().is_empty() {
// nothing to probe — render an empty doctor section instead of calling run_models
} Try / catch
Catch the bail and render the doctor's model section as 'no providers' rather than failing the whole doctor run — the report struct supports an empty entries list.
Prevention
- Keep doctor sections optional in the UI so one empty section cannot fail the run.
- When refactoring the provider registry, add a test asserting list_providers() is non-empty.
- Do not gate doctor availability behind provider availability.
When it happens
Trigger: Running the doctor models check in a build or fork where list_providers() returns an empty vec — the static list was emptied, the provider module is compiled out by a future gate, or a test stubs the registry to empty.
Common situations: Custom forks trimming the provider list; feature-gating experiments around the inference module; test harnesses mocking list_providers.
Related errors
- Not running in Tauri
- Model testing is only available in the desktop app.
- Model test RPC returned no result for ${workload} via ${prov
- Unknown core RPC error
- Local model runtime is unavailable in this core build. Resta
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/7d7ee5fa260fcc20.
Report an issue: GitHub.