{"record":{"id":"24d729d9ffd308d9","repo":"tinyhumansai/openhuman","slug":"local-model-runtime-is-unavailable-in-this-core-bu","errorCode":null,"errorMessage":"Local model runtime is unavailable in this core build. Restart app after updating to the latest build.","messagePattern":"Local model runtime is unavailable in this core build\\. Restart app after updating to the latest build\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"app/src/utils/tauriCommands/localAi.ts","lineNumber":246,"sourceCode":"): Promise<CommandResponse<string>> {\n  if (!isTauri()) {\n    throw new Error('Not running in Tauri');\n  }\n  return await callCoreRpc<CommandResponse<string>>({\n    method: 'openhuman.agent_chat',\n    params: { message, model_override: modelOverride, temperature },\n  });\n}\n\nexport async function openhumanLocalAiStatus(): Promise<CommandResponse<LocalAiStatus>> {\n  try {\n    return await callCoreRpc<CommandResponse<LocalAiStatus>>({\n      method: 'openhuman.inference_status',\n    });\n  } catch (err) {\n    const message = tauriErrorMessage(err);\n    if (message.includes('unknown method: openhuman.inference_status')) {\n      throw new Error(\n        'Local model runtime is unavailable in this core build. Restart app after updating to the latest build.'\n      );\n    }\n    throw new Error(message);\n  }\n}\n\nexport async function openhumanLocalAiSummarize(\n  text: string,\n  maxTokens?: number\n): Promise<CommandResponse<string>> {\n  return await callCoreRpc<CommandResponse<string>>({\n    method: 'openhuman.inference_summarize',\n    params: { text, max_tokens: maxTokens },\n  });\n}\n\nexport async function openhumanLocalAiPrompt(","sourceCodeStart":228,"sourceCodeEnd":264,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/app/src/utils/tauriCommands/localAi.ts#L228-L264","documentation":"openhumanLocalAiStatus() calls core RPC openhuman.inference_status and maps a JSON-RPC 'unknown method: openhuman.inference_status' failure to this user-facing message: the embedded Rust core binary does not register the inference controller, so the local model runtime surface is absent from that build.","triggerScenarios":"openhumanLocalAiStatus() against a core whose controller registry lacks openhuman.inference_status: version skew between the UI and the bundled core binary, a stale core process still running, OPENHUMAN_CORE_REUSE_EXISTING=1 pointing at an old external core, or a slim build compiled without the inference feature.","commonSituations":"App updated but the old core process was never restarted; debugging with an external core of a different version; custom core build with feature gates narrowed.","solutions":["Restart the app so the fresh core binary is spawned (and unset OPENHUMAN_CORE_REUSE_EXISTING if it pins an old core)","Update to the latest build so UI and core versions match","If running a custom core, verify the method exists via GET http://127.0.0.1:<port>/schema and rebuild with the inference feature enabled"],"exampleFix":"// before\nconst status = await openhumanLocalAiStatus(); // throws on old core\n\n// after\nconst status = await openhumanLocalAiStatus().catch(err =>\n  err.message.includes('unavailable in this core build') ? null : Promise.reject(err)\n);\nif (!status) { /* render 'local AI unavailable, update/restart' state */ }","handlingStrategy":"validation","validationCode":"// Probe the core surface before offering local-AI UI\nconst schema = await fetch(`${await coreRpcUrl()}/schema`).then(r => r.json());\nconst hasInference = JSON.stringify(schema).includes('openhuman.inference_status');\nif (!hasInference) { /* render 'update to use local AI' state */ }","typeGuard":"const supportsInference = (schemaText: string): boolean =>\n  schemaText.includes('openhuman.inference_status');","tryCatchPattern":"try {\n  const status = await openhumanLocalAiStatus();\n} catch (e) {\n  if (e instanceof Error && e.message.includes('unavailable in this core build')) {\n    // treat as feature-absent, not a crash: show update guidance\n    return;\n  }\n  throw e;\n}","preventionTips":["Keep UI and bundled core versions in lockstep; restart after updates","When using OPENHUMAN_CORE_REUSE_EXISTING, probe GET /schema first","Treat 'unknown method' from core RPC as a capability check, never as a transient error"],"tags":["rpc","version-skew","local-ai","feature-gate"],"backgroundTag":null,"analyzedSha":"a221052e0df5b1f7598fceba7329fd1af95d6699","analyzedAt":"2026-08-16T12:47:06.542Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}