{"record":{"id":"6c58fd84315a6717","repo":"janhq/jan","slug":"no-model-available-to-load","errorCode":null,"errorMessage":"No model available to load","messagePattern":"No model available to load","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"web-app/src/routes/settings/local-api-server.tsx","lineNumber":141,"sourceCode":"\n      // if (!apiKey || apiKey.toString().trim().length === 0) {\n      //   setShowApiKeyError(true)\n      //   return\n      // }\n\n      setShowApiKeyError(false)\n\n      setServerStatus('pending')\n\n      ensureModelForServer({\n        modelsService: serviceHub.models(),\n        modelOverride: defaultModelLocalApiServer,\n        onLoadStart: () => setIsModelLoading(true),\n        onLoadEnd: () => setIsModelLoading(false),\n      })\n        .then(async (result) => {\n          if (result.status === 'no_model_available') {\n            throw new Error('No model available to load')\n          }\n\n          // Remember loaded models for next startup\n          const activeModels = await serviceHub.models().getActiveModels()\n          if (activeModels && activeModels.length > 0) {\n            const allProviders = useModelProvider.getState().providers\n            const serverModels = activeModels.flatMap((id: string) => {\n              const p = allProviders.find((p) =>\n                p?.models?.some((m: { id: string }) => m.id === id)\n              )\n              return p ? [{ model: id, provider: p.provider }] : []\n            })\n            if (serverModels.length > 0) setLastServerModels(serverModels)\n          }\n\n          // Refresh active models in app state\n          const models = await serviceHub.models().getActiveModels()\n          setActiveModels(models || [])","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/janhq/jan/blob/7205d770c1e097c3daf35a911176410e93bc5564/web-app/src/routes/settings/local-api-server.tsx#L123-L159","documentation":"toggleAPIServer attempts to load a default model before starting the local API server; if the load result status is 'no_model_available' it throws. It means no local model exists to serve the OpenAI-compatible endpoint.","triggerScenarios":"Starting the local API server with no downloaded/imported models and no defaultModelLocalApiServer resolvable.","commonSituations":"Fresh install with no models downloaded, all models deleted, or the configured default model was removed from disk.","solutions":["Download/import at least one local model before starting the server","Set a valid default model for the local API server in settings","Verify model files exist in the Jan data folder","Re-pull the model if it was deleted"],"exampleFix":"// before\nawait toggleAPIServer()\n// after\nconst providers = useModelProvider.getState().providers\nconst hasModel = providers.some(p => p.models.length > 0)\nif (!hasModel) await downloadDefaultModel()\nawait toggleAPIServer()","handlingStrategy":"try-catch","validationCode":"const hasModels = useModelProvider.getState().providers.some(p => p.models.length > 0)","typeGuard":"null","tryCatchPattern":"try { await toggleAPIServer() } catch (e) { if (e.message === 'No model available to load') promptModelDownload(); else throw e }","preventionTips":["Show model availability state before allowing server start","Auto-download a default model on first launch","Keep at least one local model installed"],"tags":["model","local-api-server"],"backgroundTag":"empty-result-set","analyzedSha":"7205d770c1e097c3daf35a911176410e93bc5564","analyzedAt":"2026-09-17T14:27:30.100Z","contentChangedAt":"2026-09-17T14:27:30.100Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}