Coverage for src/local_deep_research/llm/providers/implementations/openrouter.py: 100%
14 statements
« prev ^ index » next coverage.py v7.15.1, created at 2026-07-20 01:24 +0000
« prev ^ index » next coverage.py v7.15.1, created at 2026-07-20 01:24 +0000
1"""OpenRouter LLM provider for Local Deep Research."""
3from ..base import Exposure
4from ..openai_base import OpenAICompatibleProvider
7class OpenRouterProvider(OpenAICompatibleProvider):
8 """OpenRouter provider using OpenAI-compatible endpoint.
10 OpenRouter provides access to many different models through a unified
11 OpenAI-compatible API, automatically supporting all current and future
12 models without needing code updates.
13 """
15 provider_name = "OpenRouter"
16 api_key_setting = "llm.openrouter.api_key"
17 default_base_url = "https://openrouter.ai/api/v1"
18 default_model = "" # User must explicitly pick a model — no silent fallback
20 # Metadata for auto-discovery
21 provider_key = "OPENROUTER"
22 company_name = "OpenRouter"
23 is_cloud = True
24 # Egress exposure (ADR-0007): cloud inference sink — data leaves the box.
25 egress_exposure = Exposure.EXPOSING
27 @classmethod
28 def requires_auth_for_models(cls):
29 """OpenRouter doesn't require authentication for listing models."""
30 return False