summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIsmail Ghallou <[email protected]>2026-04-17 17:29:31 +0200
committerGitHub <[email protected]>2026-04-17 10:29:31 -0500
commit3fe602cda3e34761256c53254accc46abdff1c17 (patch)
tree10f0fdcb33942eb7365d05c913698dcb90e8e075
parent3a4b49095c5273383ea581dfbc31628d80ac43a2 (diff)
downloadopencode-3fe602cda3e34761256c53254accc46abdff1c17.tar.gz
opencode-3fe602cda3e34761256c53254accc46abdff1c17.zip
feat: add LLM Gateway provider (#7847)
Co-authored-by: Claude Opus 4.5 <[email protected]> Co-authored-by: Aiden Cline <[email protected]> Co-authored-by: Aiden Cline <[email protected]>
-rw-r--r--packages/opencode/src/provider/provider.ts11
-rw-r--r--packages/opencode/src/provider/transform.ts4
-rw-r--r--packages/opencode/test/preload.ts1
-rw-r--r--packages/ui/src/components/provider-icons/types.ts1
-rw-r--r--packages/web/src/content/docs/providers.mdx68
5 files changed, 83 insertions, 2 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index 711481d80..558bcb75a 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -390,6 +390,17 @@ function custom(dep: CustomDep): Record<string, CustomLoader> {
},
}
}),
+ llmgateway: () =>
+ Effect.succeed({
+ autoload: false,
+ options: {
+ headers: {
+ "HTTP-Referer": "https://opencode.ai/",
+ "X-Title": "opencode",
+ "X-Source": "opencode",
+ },
+ },
+ }),
openrouter: () =>
Effect.succeed({
autoload: false,
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts
index 284fb0fca..1b6b0918b 100644
--- a/packages/opencode/src/provider/transform.ts
+++ b/packages/opencode/src/provider/transform.ts
@@ -807,7 +807,7 @@ export function options(input: {
result["promptCacheKey"] = input.sessionID
}
- if (input.model.api.npm === "@openrouter/ai-sdk-provider") {
+ if (input.model.api.npm === "@openrouter/ai-sdk-provider" || input.model.api.npm === "@llmgateway/ai-sdk-provider") {
result["usage"] = {
include: true,
}
@@ -944,7 +944,7 @@ export function smallOptions(model: Provider.Model) {
}
return { thinkingConfig: { thinkingBudget: 0 } }
}
- if (model.providerID === "openrouter") {
+ if (model.providerID === "openrouter" || model.providerID === "llmgateway") {
if (model.api.id.includes("google")) {
return { reasoning: { enabled: false } }
}
diff --git a/packages/opencode/test/preload.ts b/packages/opencode/test/preload.ts
index a2592286a..58dc2b0b4 100644
--- a/packages/opencode/test/preload.ts
+++ b/packages/opencode/test/preload.ts
@@ -62,6 +62,7 @@ delete process.env["AWS_PROFILE"]
delete process.env["AWS_REGION"]
delete process.env["AWS_BEARER_TOKEN_BEDROCK"]
delete process.env["OPENROUTER_API_KEY"]
+delete process.env["LLM_GATEWAY_API_KEY"]
delete process.env["GROQ_API_KEY"]
delete process.env["MISTRAL_API_KEY"]
delete process.env["PERPLEXITY_API_KEY"]
diff --git a/packages/ui/src/components/provider-icons/types.ts b/packages/ui/src/components/provider-icons/types.ts
index f9ddfdf0e..5a9728750 100644
--- a/packages/ui/src/components/provider-icons/types.ts
+++ b/packages/ui/src/components/provider-icons/types.ts
@@ -32,6 +32,7 @@ export const iconNames = [
"perplexity",
"ovhcloud",
"openrouter",
+ "llmgateway",
"opencode",
"opencode-go",
"openai",
diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx
index 163dcdcf2..bad9e1ebb 100644
--- a/packages/web/src/content/docs/providers.mdx
+++ b/packages/web/src/content/docs/providers.mdx
@@ -1577,6 +1577,74 @@ OpenCode Zen is a list of tested and verified models provided by the OpenCode te
---
+### LLM Gateway
+
+1. Head over to the [LLM Gateway dashboard](https://llmgateway.io/dashboard), click **Create API Key**, and copy the key.
+
+2. Run the `/connect` command and search for LLM Gateway.
+
+ ```txt
+ /connect
+ ```
+
+3. Enter the API key for the provider.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Many LLM Gateway models are preloaded by default, run the `/models` command to select the one you want.
+
+ ```txt
+ /models
+ ```
+
+ You can also add additional models through your opencode config.
+
+ ```json title="opencode.json" {6}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "llmgateway": {
+ "models": {
+ "somecoolnewmodel": {}
+ }
+ }
+ }
+ }
+ ```
+
+5. You can also customize them through your opencode config. Here's an example of specifying a provider
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "llmgateway": {
+ "models": {
+ "glm-4.7": {
+ "name": "GLM 4.7"
+ },
+ "gpt-5.2": {
+ "name": "GPT-5.2"
+ },
+ "gemini-2.5-pro": {
+ "name": "Gemini 2.5 Pro"
+ },
+ "claude-3-5-sonnet-20241022": {
+ "name": "Claude 3.5 Sonnet"
+ }
+ }
+ }
+ }
+ }
+ ```
+
+---
+
### SAP AI Core
SAP AI Core provides access to 40+ models from OpenAI, Anthropic, Google, Amazon, Meta, Mistral, and AI21 through a unified platform.