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

  1. If you forked or trimmed the provider list, restore at least one entry or skip the doctor models section entirely.
  2. Treat the error as a signal that the build's inference surface is empty — verify your feature flags.
  3. 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

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


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/7d7ee5fa260fcc20. Report an issue: GitHub.