{"record":{"id":"fe92a587c01ea9ac","repo":"tinyhumansai/openhuman","slug":"chat-factory-no-cloud-provider-configured-for-sl","errorCode":null,"errorMessage":"[chat-factory] no cloud provider configured for slug '{}' (role '{}') — add an entry with that slug to cloud_providers in config.toml. Configured slugs: [{}]","messagePattern":"\\[chat-factory\\] no cloud provider configured for slug '(.+?)' \\(role '(.+?)'\\) — add an entry with that slug to cloud_providers in config\\.toml\\. Configured slugs: \\[(.+?)\\]","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/inference/provider/factory.rs","lineNumber":2154,"sourceCode":"    key: String,\n    codex: crate::openhuman::inference::provider::openai_codex::OpenAiCodexRouting,\n}\n\nfn resolve_cloud_slug<'a>(\n    role: &str,\n    slug: &str,\n    model: &str,\n    config: &'a Config,\n) -> anyhow::Result<CloudSlugResolution<'a>> {\n    let entry = config.cloud_providers.iter().find(|e| e.slug == slug);\n\n    let entry = entry.ok_or_else(|| {\n        let known: Vec<&str> = config\n            .cloud_providers\n            .iter()\n            .map(|e| e.slug.as_str())\n            .collect();\n        anyhow::anyhow!(\n            \"[chat-factory] no cloud provider configured for slug '{}' (role '{}') — \\\n             add an entry with that slug to cloud_providers in config.toml. \\\n             Configured slugs: [{}]\",\n            slug,\n            role,\n            known.join(\", \")\n        )\n    })?;\n\n    // Resolve effective model: use provided model if non-empty, else fall back\n    // to the entry's legacy default_model (if any), else empty → error.\n    let mut effective_model = if model.trim().is_empty() {\n        entry.default_model.clone().unwrap_or_default()\n    } else {\n        model.to_string()\n    };\n\n    // Guard: if effective_model is still empty after fallback, bail with an","sourceCodeStart":2136,"sourceCodeEnd":2172,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/inference/provider/factory.rs#L2136-L2172","documentation":"resolve_cloud_slug could not find any entry in the config's cloud_providers list whose slug equals the requested one. The message lists the currently configured slugs so the mismatch is immediately visible. The provider/model pair therefore cannot be routed to any configured cloud backend.","triggerScenarios":"Thrown at src/openhuman/inference/provider/factory.rs:2154 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add a [[cloud_providers]] entry with the missing slug to config.toml","Fix a typo in the slug referenced by the role's provider string","Copy one of the already-configured slugs listed in the error if the intended backend is already set up"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}