HKUDS/DeepTutor · error · HTTPException
No default knowledge base is configured
Error message
No default knowledge base is configured
What it means
Raised by _resolve_registered_kb_name when the request asks for the default KB (by alias such as 'default') but the manager has no default knowledge base configured, or the configured default no longer exists in kb_names. HTTP 404.
Source
Thrown at deeptutor/api/routers/knowledge.py:769
detail=(
f"PageIndex knowledge bases accept: {supported}. "
f"Unsupported: {', '.join(unsupported[:5])}."
),
)
def _resolve_registered_kb_name(manager: KnowledgeBaseManager, kb_name: str | None) -> str:
"""Resolve route-level default aliases to the configured default KB."""
requested = str(kb_name or "").strip()
kb_names = manager.list_knowledge_bases()
if requested and requested in kb_names:
return requested
if requested.lower() in DEFAULT_KB_ALIASES:
default_kb = manager.get_default()
if default_kb and default_kb in kb_names:
return default_kb
raise HTTPException(status_code=404, detail="No default knowledge base is configured")
raise HTTPException(status_code=404, detail=f"Knowledge base '{requested}' not found")
def _load_kb_entry_or_404(manager: KnowledgeBaseManager, kb_name: str) -> dict:
manager.config = manager._load_config()
kb_entry = manager.config.get("knowledge_bases", {}).get(kb_name)
if kb_entry is None:
raise HTTPException(status_code=404, detail=f"Knowledge base '{kb_name}' not found")
return kb_entry
def _assert_not_connected_kb(kb_name: str, kb_entry: dict) -> None:
"""Block writes to connected KBs (Obsidian vaults, linked indexes).
They are read-only pointers to the user's external files — we never write
into or re-index them.
"""View on GitHub (pinned to 3e82f13042)
Solutions
- Create a knowledge base first, then mark one as the default in settings
- If a KB already exists, explicitly pass its real name instead of the alias
- Repair the manager config so get_default() returns a registered KB name
Example fix
# before kb = 'default' # after kb = 'my-kb' # or configure a default KB in settings
Defensive patterns
Strategy: validation
Validate before calling
kbs = client.get('/api/v1/knowledge').json()['knowledge_bases']
default = manager_default(kbs)
if default is None: create_and_set_default_kb() Type guard
def has_default_kb(kbs) -> bool:
return any(kb.get('is_default') for kb in kbs) Prevention
- Pass explicit KB names instead of the 'default' alias
- Ensure a default KB exists during onboarding
- Clear the default pointer when deleting the default KB
When it happens
Trigger: Any endpoint accepting a KB name where the client passes a default alias (e.g. 'default') while manager.get_default() returns None or an unregistered name.
Common situations: Fresh install before any KB was created or marked default; default KB deleted and default pointer not cleared; config file edited by hand leaving a stale default entry.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- Knowledge base '{requested}' not found
- Knowledge base '{kb_name}' not found
- Knowledge base '{name}' not found
- Knowledge base '{requested}' not found
- Operation not found
AI-assisted analysis of HKUDS/DeepTutor@3e82f13042 (2026-08-27).
Data as JSON: /api/errors/689d53bfde24d1f2.
Report an issue: GitHub.