Skip to content

Commit 630725e

Browse files
committed
Add OpenCode Zen provider
1 parent 2e0aac1 commit 630725e

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

provider.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type Provider interface {
1313
}
1414

1515
// NewProvider returns the provider selected by ITERATE_PROVIDER.
16-
// Supported values: ollama, openai, anthropic, groq, gemini, nvidia (default: gemini)
16+
// Supported values: ollama, openai, anthropic, groq, gemini, nvidia, opencode (default: gemini)
1717
// If apiKey is provided, it takes priority over environment variables.
1818
func NewProvider(providerName string, apiKey ...string) (Provider, error) {
1919
providedKey := ""
@@ -102,12 +102,26 @@ func NewProvider(providerName string, apiKey ...string) (Provider, error) {
102102
if key == "" {
103103
return nil, fmt.Errorf("NVIDIA_API_KEY is required for nvidia provider (or use --api-key)")
104104
}
105-
return NewNvidia(OpenAICompatConfig{
105+
return NewOpenAICompat(OpenAICompatConfig{
106106
BaseURL: getEnvOr("NVIDIA_BASE_URL", "https://integrate.api.nvidia.com/v1"),
107107
Model: getEnvOr("ITERATE_MODEL", "meta/llama-3.3-70b-instruct"),
108108
APIKey: key,
109109
}), nil
110110

111+
case "opencode":
112+
key := providedKey
113+
if key == "" {
114+
key = os.Getenv("OPENCODE_API_KEY")
115+
}
116+
if key == "" {
117+
return nil, fmt.Errorf("OPENCODE_API_KEY is required for opencode provider (or use --api-key)")
118+
}
119+
return NewOpenAICompat(OpenAICompatConfig{
120+
BaseURL: "https://opencode.ai/zen/v1",
121+
Model: getEnvOr("ITERATE_MODEL", "opencode/nemotron-3-super-free"),
122+
APIKey: key,
123+
}), nil
124+
111125
default:
112126
baseURL := os.Getenv("ITERATE_BASE_URL")
113127
if baseURL == "" {

0 commit comments

Comments
 (0)