Mintplex-Labs/anything-llm · warning · Error

Select a router

Error message

Select a router

What it means

Workspace chat LLM selector save guard. When the selected provider is 'anythingllm-router', saving requires a non-empty selectedRouterId; otherwise the localized 'model-router.chat.select-router-error' message (default text 'Select a router') is thrown before any API call is made.

Source

Thrown at frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/LLMSelector/index.jsx:91

  }

  function handleProviderSelection(provider) {
    setSelectedLLMProvider(provider);
    setAvailableProviders(WORKSPACE_LLM_PROVIDERS);
    autoScrollToSelectedLLMProvider(provider, 50);
    document.getElementById("llm-search-input").value = "";
    setHasChanges(true);
    setMissingCredentials(hasMissingCredentials(settings, provider));
  }

  async function handleSave() {
    setSaving(true);
    try {
      setHasChanges(false);

      const isRouter = selectedLLMProvider === "anythingllm-router";
      if (isRouter && !selectedRouterId)
        throw new Error(t("model-router.chat.select-router-error"));

      const updateData = isRouter
        ? { chatProvider: selectedLLMProvider, router_id: selectedRouterId }
        : {
            chatProvider: selectedLLMProvider,
            chatModel: validatedModelSelection(selectedLLMModel),
          };

      if (!isRouter && !updateData.chatModel)
        throw new Error(t("model-router.chat.invalid-model"));

      const { message } = await Workspace.update(slug, updateData);

      if (!!message) throw new Error(message);
      window.dispatchEvent(new Event(SAVE_LLM_SELECTOR_EVENT));
    } catch (error) {
      console.error(error);
      showToast(error.message, "error", { clear: true });

View on GitHub (pinned to 3aec848f28)

Solutions

  1. Pick a router in the router dropdown before saving
  2. If no routers are listed, create one first in the model-router admin pages
  3. Reload the page when the router list failed to load, then select and save
Defensive patterns

Strategy: validation

Validate before calling

const isRouter = selectedLLMProvider === "anythingllm-router";
const canSave = isRouter ? !!selectedRouterId : !!validatedModelSelection(selectedLLMModel);
// <button disabled={!canSave} onClick={handleSave}>Save</button>

Try / catch

try { await handleSave(); }
catch (e) { if (e.message === t("model-router.chat.select-router-error")) highlightRouterDropdown(); else throw e; }

Prevention

When it happens

Trigger: Provider dropdown set to anythingllm-router while the router sub-selection is empty — because no routers exist, the router list is still loading, or the user simply never picked one — and Save is clicked.

Common situations: No routers created yet in the model-router admin section; router fetch failed so the dropdown is empty; user switched provider to the router option and immediately saved.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18). Data as JSON: /api/errors/a4620130649a3fe1. Report an issue: GitHub.