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

  1. Hit /api/onboarding directly in the browser and read the status/body.
  2. Confirm the backend finished startup (check /api/ping returns {online:true}).
  3. If on a reverse proxy, verify the /onboarding path is forwarded (note: no baseHeaders() is sent, so it must be reachable without auth).
  4. 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

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


AI-assisted analysis of Mintplex-Labs/anything-llm@526360e320 (2026-08-13). Data as JSON: /api/errors/0790db7001e3961c. Report an issue: GitHub.