janhq/jan · error · Error
No model available to load
Error message
No model available to load
What it means
Thrown in the local API server start flow (local-api-server.tsx:139) when ensureModelForServer resolves with status 'no_model_available'. The server cannot start without a model to serve, so the promise chain rejects before window.core.api.startServer is called.
Source
Thrown at web-app/src/routes/settings/local-api-server.tsx:139
// 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 fad3f12a14)
Solutions
- Download at least one model from the Hub before starting the local API server.
- Set a valid default model for the server in the local-API-server settings (defaultModelLocalApiServer).
- If a model was deleted, re-download it or pick another installed model as the default.
Example fix
// before
if (result.status === 'no_model_available') {
throw new Error('No model available to load')
}
// after: surface a actionable toast and block server start with guidance
if (result.status === 'no_model_available') {
toast.error('Download a model from the Hub first, then start the server.')
setServerStatus('idle')
return
} Defensive patterns
Strategy: validation
Validate before calling
async function hasModelToServe(modelsService, override?: string): Promise<boolean> {
if (override) {
const m = await modelsService.getModel(override)
if (m) return true
}
const installed = await modelsService.fetchModels()
return installed.length > 0
}
// before ensureModelForServer:
if (!(await hasModelToServe(serviceHub.models(), defaultModelLocalApiServer))) {
toast.error('Download a model from the Hub first.')
return
} Type guard
function hasInstalledModels(list: unknown): boolean {
return Array.isArray(list) && list.length > 0
} Try / catch
try {
const result = await ensureModelForServer({ ... })
if (result.status === 'no_model_available') throw new Error('No model available to load')
} catch (e) {
setServerStatus('idle')
toast.error(e instanceof Error ? e.message : 'Server start failed')
} Prevention
- Disable the Start Server button until at least one model is installed.
- Validate defaultModelLocalApiServer points to an installed model.
- Offer a 'Download a model' shortcut from the server settings when none exist.
- Remember the last-served model so re-start is one click.
When it happens
Trigger: No model is installed locally and none is explicitly overridden via defaultModelLocalApiServer; the previously-configured default model was deleted; ensureModelForServer found zero downloadable and zero local candidates to fall back on.
Common situations: Fresh install with no models downloaded; user deleted all models then tried to start the local server; the model override in settings points to an uninstalled model id and no fallback exists.
Related errors
- Critical settings "llamacpp_version" / "llamacpp_backend" no
- No ID returned from image ingestion
- No API key configured for ${provider.provider}. Add one in S
- Provider must have base_url configured
- settings:general.couldNotRelocateToRoot
AI-assisted analysis of janhq/jan@fad3f12a14 (2026-08-12).
Data as JSON: /api/errors/6c58fd84315a6717.
Report an issue: GitHub.