Files
odysseus/docs/discovery/domains/model.md
T
2026-07-28 03:14:56 +01:00

7.7 KiB

Model

Features in this document are generated from ../feature-catalog.json, the canonical inventory.

MODEL-001 — Multi-Provider LLM Model Discovery & Metadata Management

  • Domain: model
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Discovers models from OpenAI, Anthropic, Ollama, vLLM, LMStudio, OpenRouter, and Google AI Studio endpoints.

Evidence summary

  • routes/model_routes.py@router.get('/api/models') — Returns unified list of available models across providers.
  • src/model_discovery.pyModelDiscovery.discover_all — Queries connected provider endpoints for available model IDs.

Unknowns

  • Remote endpoint timeouts may slow down full discovery refresh.

MODEL-002 — Model Capability & Context Limits Detection

  • Domain: model
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Detects vision, tool calling, reasoning, and context window limits for connected model endpoints.

Evidence summary

  • src/model_capabilities.pyget_model_capabilities — Maps model names to vision and tool support flags.
  • src/endpoint_resolver.pyresolve_endpoint_headers — Resolves auth headers and target URLs for model endpoints.

Unknowns

  • Incorrect context limit metadata for unlisted custom fine-tunes.

MODEL-003 — LLM Core Provider Communication & Fallback Routing

  • Domain: model
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: pending — Provider dispatch, header injection and fallback advancement are only observable against a reachable LLM provider endpoint; not exercised in this documentation pass.

Purpose

Manages HTTP request dispatching, authorization header injection, and fallback provider routing for LLM calls.

Evidence summary

  • src/llm_core.pyllm_call_async — Non-streaming provider request dispatcher: resolves the endpoint, injects authorization headers and executes the HTTP call.
  • src/llm_core.pyllm_call_async_with_fallback — Ordered fallback wrapper that retries llm_call_async across the configured candidate endpoints.
  • src/llm_core.pystream_llm_with_fallback — Ordered fallback wrapper for the streaming path; advances to the next candidate when a provider yields an empty completion.

Unknowns

  • Unexpected API changes in upstream third-party model providers.

MODEL-004 — Model Selection & Display Ordering Preferences

  • Domain: model
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Allows pinning, sorting, and hiding specific models in the UI selection dropdown.

Evidence summary

  • routes/model_routes.py@router.post('/order') — Saves custom model display order preference.

Unknowns

  • Stale model IDs in custom order lists after model endpoints are removed.

MODEL-005 — Side-by-Side Model Comparison (A/B Testing)

  • Domain: model
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Enables dual-model side-by-side response evaluation, arena scoring, and latency comparison.

Evidence summary

  • routes/compare/compare_routes.py@router.post('/start') — Starts a parallel dual-model comparison stream.
  • static/js/compare/index.jsinitCompareView — Renders side-by-side model chat panes.

Unknowns

  • High memory and network usage when streaming two model responses simultaneously.

MODEL-006 — GitHub Copilot Device Flow Authentication

  • Domain: model
  • Status: verified
  • Evidence Maturity: E2
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: pending — Requires an interactive GitHub Copilot OAuth device-flow account.

Purpose

Authenticates with GitHub Copilot via OAuth device flow to use Copilot models directly.

Evidence summary

  • routes/copilot_routes.pysetup_copilot_routes — Builds the Copilot device-flow router at prefix /api/copilot, wiring _start_device_flow and _poll_device_flow.
  • routes/device_flow.pycreate_device_flow_router — Shared factory registering POST /device/start and POST /device/poll under the caller-supplied prefix.
  • src/copilot.pyrequest_device_code — Issues the GitHub device-code request that begins the Copilot OAuth device flow.
  • src/copilot.pypoll_access_token — Polls GitHub for the access token once the user has authorized the device code.
  • tests/test_provider_device_flow_js.pytest_copilot_success_uses_complete_verification_uri — Inspected unit test asserting the Copilot device-flow runner surfaces the complete verification URI returned by the backend.

Unknowns

  • Token expiration requires manual device re-authentication.

MODEL-007 — ChatGPT Subscription Device Flow Authentication

  • Domain: model
  • Status: verified
  • Evidence Maturity: E2
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: pending — Requires an interactive ChatGPT subscription OAuth flow.

Purpose

Authenticates with ChatGPT Pro/Plus subscription tokens via device login flow.

Evidence summary

  • routes/chatgpt_subscription_routes.pysetup_chatgpt_subscription_routes — Builds the ChatGPT subscription device-flow router at prefix /api/chatgpt-subscription.
  • routes/device_flow.pycreate_device_flow_router — Shared factory registering POST /device/start and POST /device/poll under the caller-supplied prefix.
  • src/chatgpt_subscription.pyrequest_device_code — Issues the ChatGPT device-authorization request that begins the subscription OAuth device flow.
  • src/chatgpt_subscription.pypoll_device_auth — Polls the ChatGPT device-authorization endpoint for completion using the stored device_auth_id and user_code.
  • tests/test_provider_device_flow_js.pytest_chatgpt_success_uses_plain_verification_uri — Inspected unit test asserting the ChatGPT device-flow runner uses the plain verification URI rather than the Copilot complete-URI form.

Unknowns

  • Changes in OpenAI auth endpoint security challenges.

MODEL-008 — Embedding Model Lane & Vector Provider Setup

  • Domain: model
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Configures local sentence-transformers, FastEmbed, or remote OpenAI embedding model lanes.

Evidence summary

  • routes/embedding_routes.pysetup_embedding_routes — Provides embedding provider configuration endpoints.
  • src/embeddings.pyEmbeddingManager — Generates dense vector embeddings for RAG and memory.

Unknowns

  • First-time download of heavy PyTorch model weights on CPU-only machines.