janhq/jan · error
No model available to load
Error message
No model available to load
What it means
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.
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
Example fix
// before await toggleAPIServer() // after const providers = useModelProvider.getState().providers const hasModel = providers.some(p => p.models.length > 0) if (!hasModel) await downloadDefaultModel() await toggleAPIServer()
Defensive patterns
Strategy: try-catch
Validate before calling
const hasModels = useModelProvider.getState().providers.some(p => p.models.length > 0)
Type guard
null
Try / catch
try { await toggleAPIServer() } catch (e) { if (e.message === 'No model available to load') promptModelDownload(); else throw e } Prevention
- Show model availability state before allowing server start
- Auto-download a default model on first launch
- Keep at least one local model installed
When it happens
Trigger: Starting the local API server with no downloaded/imported models and no defaultModelLocalApiServer resolvable.
Common situations: Fresh install with no models downloaded, all models deleted, or the configured default model was removed from disk.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
AI-assisted analysis of janhq/jan@7205d770c1 (2026-09-17).
Data as JSON: /api/errors/6c58fd84315a6717.
Report an issue: GitHub.
Appendix: source
Thrown at web-app/src/routes/settings/local-api-server.tsx:141
// if (!apiKey || apiKey.toString().trim().length === 0) {
// setShowApiKeyError(true)
// return
// }
setShowApiKeyError(false)
setServerStatus('pending')
ensureModelForServer({
modelsService: serviceHub.models(),
modelOverride: defaultModelLocalApiServer,
onLoadStart: () => setIsModelLoading(true),
onLoadEnd: () => setIsModelLoading(false),
})
.then(async (result) => {
if (result.status === 'no_model_available') {
throw new Error('No model available to load')
}
// Remember loaded models for next startup
const activeModels = await serviceHub.models().getActiveModels()
if (activeModels && activeModels.length > 0) {
const allProviders = useModelProvider.getState().providers
const serverModels = activeModels.flatMap((id: string) => {
const p = allProviders.find((p) =>
p?.models?.some((m: { id: string }) => m.id === id)
)
return p ? [{ model: id, provider: p.provider }] : []
})
if (serverModels.length > 0) setLastServerModels(serverModels)
}
// Refresh active models in app state
const models = await serviceHub.models().getActiveModels()
setActiveModels(models || [])View on GitHub (pinned to 7205d770c1)