Mintplex-Labs/anything-llm · warning · Error
Could not find onboarding information.
Error message
Could not find onboarding information.
What it means
Thrown by System.isOnboardingComplete on a non-2xx GET to /api/onboarding. The function drives the onboarding gate in the UI. The .catch() returns false, which means a server error forces the user back into the onboarding flow rather than surfacing the failure.
Source
Thrown at frontend/src/models/system.js:43
return await fetch(url.toString(), {
headers: baseHeaders(),
})
.then((res) => {
if (!res.ok) throw new Error("Could not find indexes.");
return res.json();
})
.then((res) => res.vectorCount)
.catch(() => 0);
},
/**
* Checks if the onboarding is complete.
* @returns {Promise<boolean>}
*/
isOnboardingComplete: async function () {
return await fetch(`${API_BASE}/onboarding`)
.then((res) => {
if (!res.ok) throw new Error("Could not find onboarding information.");
return res.json();
})
.then((res) => res.onboardingComplete)
.catch(() => false);
},
/**
* Marks the onboarding as complete.
* @returns {Promise<boolean>}
*/
markOnboardingComplete: async function () {
return await fetch(`${API_BASE}/onboarding`, {
method: "POST",
headers: baseHeaders(),
})
.then((res) => res.ok)
.catch(() => false);
},
keys: async function () {View on GitHub (pinned to 526360e320)
Solutions
- Hit /api/onboarding directly in the browser and read the status/body.
- Confirm the backend finished startup (check /api/ping returns {online:true}).
- If on a reverse proxy, verify the /onboarding path is forwarded (note: no baseHeaders() is sent, so it must be reachable without auth).
- Ensure database migrations ran so the onboarding state table exists.
Defensive patterns
Strategy: fallback
Validate before calling
// Ensure backend is up before probing onboarding state.
if (!(await System.ping())) { /* skip onboarding check */ } Type guard
/** @param {any} v @returns {v is boolean} */
function isBool(v) { return typeof v === "boolean"; } Try / catch
const complete = await System.isOnboardingComplete(); // false can mean 'not complete' OR 'request failed' — treat defensively.
Prevention
- Call System.ping() first to confirm reachability.
- Treat a false result as 'show onboarding' since that path is safe.
- Cache the resolved value for the session.
When it happens
Trigger: Calling isOnboardingComplete() when the backend is not fully booted (503), when the onboarding route is blocked by a reverse proxy, or when an unauthenticated request hits a multi-user-mode guard.
Common situations: First-run after upgrade where migrations have not completed; the onboarding table/collection is missing from the database; a CDN/proxy strips the /onboarding path.
Related errors
- Failed to sync link content. ${reason}
- Failed to sync YouTube video transcript. ${reason}
- Failed to sync Confluence page content. ${reason}
- Failed to sync GitHub file content. ${reason}
- Failed to sync GitLab file content. ${reason}
AI-assisted analysis of Mintplex-Labs/anything-llm@526360e320 (2026-08-13).
Data as JSON: /api/errors/0790db7001e3961c.
Report an issue: GitHub.