{"record":{"id":"04819d2281f85460","repo":"tinyhumansai/openhuman","slug":"ollama-api-tags-response-could-not-be-read-e","errorCode":null,"errorMessage":"Ollama /api/tags response could not be read: {e}","messagePattern":"Ollama /api/tags response could not be read: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/platform/doctor/core.rs","lineNumber":933,"sourceCode":"    };\n\n    if !resp.status().is_success() {\n        items.push(DiagnosticItem::error(\n            cat,\n            format!(\n                \"Ollama /api/tags returned {} at {base_url} — cannot verify embedding model `{model}`. \\\n                 Start Ollama and run: ollama pull {model}\",\n                resp.status()\n            ),\n        ));\n        return;\n    }\n\n    // Parse the tags response and look for the configured model.\n    let body = match resp.text() {\n        Ok(t) => t,\n        Err(e) => {\n            items.push(DiagnosticItem::warn(\n                cat,\n                format!(\"Ollama /api/tags response could not be read: {e}\"),\n            ));\n            return;\n        }\n    };\n\n    // Parse the JSON and extract the `models` array.  If the response is\n    // malformed or the schema changed (missing `models` key), report that\n    // explicitly instead of falling through to \"model NOT installed\".\n    let models_array = match serde_json::from_str::<serde_json::Value>(&body) {\n        Ok(v) => match v.get(\"models\").and_then(|m| m.as_array()) {\n            Some(arr) => arr.clone(),\n            None => {\n                items.push(DiagnosticItem::warn(\n                    cat,\n                    format!(\n                        \"Ollama /api/tags response is missing the `models` key — \\","sourceCodeStart":915,"sourceCodeEnd":951,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/platform/doctor/core.rs#L915-L951","documentation":"Doctor embedding-model probe: Ollama answered the /api/tags request (the status check above passed) but resp.text() failed while reading the body, so the model list could not be parsed. The probe degrades to a warn and gives up verification — the daemon is reachable, but the configured embedding model's presence remains unknown.","triggerScenarios":"Thrown at src/openhuman/platform/doctor/core.rs:933 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-run the doctor; interrupted body reads are usually transient connection drops","Check for a reverse proxy or aggressive timeout between the core and Ollama truncacing responses","Verify with curl that /api/tags returns a full body"],"exampleFix":null,"handlingStrategy":"fallback","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-14T05:17:10.506Z"}