diff --git a/nanobot/config/schema.py b/nanobot/config/schema.py index 3994c273..2144d884 100644 --- a/nanobot/config/schema.py +++ b/nanobot/config/schema.py @@ -235,6 +235,8 @@ class ProvidersConfig(Base): github_copilot: ProviderConfig = Field(default_factory=ProviderConfig, exclude=True) # Github Copilot (OAuth) qianfan: ProviderConfig = Field(default_factory=ProviderConfig) # Qianfan (百度千帆) nvidia: ProviderConfig = Field(default_factory=ProviderConfig) # NVIDIA NIM (nvapi- keys) + opencode_zen: ProviderConfig = Field(default_factory=ProviderConfig) # OpenCode Zen (curated coding models) + opencode_go: ProviderConfig = Field(default_factory=ProviderConfig) # OpenCode Go (low-cost coding models) @model_validator(mode="after") def convert_extra_providers(self): diff --git a/nanobot/providers/registry.py b/nanobot/providers/registry.py index 273ea4cc..88bf76f4 100644 --- a/nanobot/providers/registry.py +++ b/nanobot/providers/registry.py @@ -543,6 +543,26 @@ PROVIDERS: tuple[ProviderSpec, ...] = ( detect_by_base_keyword="nvidia.com", default_api_base="https://integrate.api.nvidia.com/v1", ), + # OpenCode Zen: curated reliable models for coding agents + ProviderSpec( + name="opencode_zen", + keywords=("opencode_zen", "opencode-zen", "zen"), + env_key="OPENCODE_API_KEY", + display_name="OpenCode Zen", + backend="openai_compat", + is_gateway=True, + default_api_base="https://opencode.ai/zen/v1", + ), + # OpenCode Go: low-cost coding models + ProviderSpec( + name="opencode_go", + keywords=("opencode_go", "opencode-go"), + env_key="OPENCODE_API_KEY", + display_name="OpenCode Go", + backend="openai_compat", + is_gateway=True, + default_api_base="https://opencode.ai/zen/go/v1", + ), # === Auxiliary (not a primary LLM provider) ============================ # Groq: mainly used for Whisper voice transcription, also usable for LLM ProviderSpec(