diff --git a/README.md b/README.md
index 9e1117208..84a11c6f0 100644
--- a/README.md
+++ b/README.md
@@ -102,6 +102,8 @@ output = 15.00 # Cost per million output tokens (USD)
reasoning = 15.00 # Cost per million reasoning tokens (USD)
cache_read = 0.30 # Cost per million cached read tokens (USD)
cache_write = 3.75 # Cost per million cached write tokens (USD)
+input_audio = 1.00 # Cost per million audio input tokens (USD)
+output_audio = 10.00 # Cost per million audio output tokens (USD)
[limit]
context = 200_000 # Maximum context window (tokens)
@@ -155,6 +157,8 @@ Models must conform to the following schema, as defined in `app/schemas.ts`.
- `cost.reasoning` _(optional)_: Number — Cost per million reasoning tokens (USD)
- `cost.cache_read` _(optional)_: Number — Cost per million cached read tokens (USD)
- `cost.cache_write` _(optional)_: Number — Cost per million cached write tokens (USD)
+- `cost.input_audio` _(optional)_: Number — Cost per million audio input tokens, if billed separately (USD)
+- `cost.output_audio` _(optional)_: Number — Cost per million audio output tokens, if billed separately (USD)
- `limit.context`: Number — Maximum context window (tokens)
- `limit.output`: Number — Maximum output tokens
- `modalities.input`: Array of strings — Supported input modalities (e.g., ["text", "image", "audio", "video", "pdf"])
diff --git a/packages/core/src/schema.ts b/packages/core/src/schema.ts
index 0d13d40c9..e5aa27f6e 100644
--- a/packages/core/src/schema.ts
+++ b/packages/core/src/schema.ts
@@ -41,6 +41,14 @@ export const Model = z
.number()
.min(0, "Cache write price cannot be negative")
.optional(),
+ input_audio: z
+ .number()
+ .min(0, "Audio input price cannot be negative")
+ .optional(),
+ output_audio: z
+ .number()
+ .min(0, "Audio output price cannot be negative")
+ .optional(),
})
.optional(),
limit: z.object({
diff --git a/packages/web/src/index.css b/packages/web/src/index.css
index d8f66be65..58a4a5c4e 100644
--- a/packages/web/src/index.css
+++ b/packages/web/src/index.css
@@ -284,13 +284,15 @@ tbody {
td:nth-child(11),
td:nth-child(12),
td:nth-child(13),
- td:nth-child(14) {
+ td:nth-child(14),
+ td:nth-child(15),
+ td:nth-child(16) {
color: var(--color-text);
}
td:nth-child(5),
td:nth-child(6),
- td:nth-child(15) {
+ td:nth-child(18) {
font-size: 0.8125rem;
font-family: var(--font-mono);
text-transform: uppercase;
@@ -303,7 +305,10 @@ tbody {
td:nth-child(11),
td:nth-child(12),
td:nth-child(13),
- td:nth-child(14) {
+ td:nth-child(14),
+ td:nth-child(15),
+ td:nth-child(16),
+ td:nth-child(17) {
font-size: 0.8125rem;
font-family: var(--font-mono);
}
@@ -313,9 +318,11 @@ tbody {
align-items: center;
gap: 0.375rem;
}
+
.provider-cell span:first-child {
flex: 0 0 auto;
}
+
.provider-cell svg {
display: block;
width: 1rem;
@@ -330,8 +337,7 @@ tbody {
gap: 0.375rem;
}
- .model-id-text {
- }
+ .model-id-text {}
.copy-button {
flex: 0 0 auto;
@@ -540,4 +546,4 @@ dialog {
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/web/src/render.tsx b/packages/web/src/render.tsx
index fffd5bdc3..27740dde6 100644
--- a/packages/web/src/render.tsx
+++ b/packages/web/src/render.tsx
@@ -286,6 +286,26 @@ export const Rendered = renderToString(
+
+
+ |
+
+
+ |
Context Limit
|
@@ -398,6 +418,8 @@ export const Rendered = renderToString(
{renderCost(model.cost?.reasoning)} |
{renderCost(model.cost?.cache_read)} |
{renderCost(model.cost?.cache_write)} |
+ {renderCost(model.cost?.input_audio)} |
+ {renderCost(model.cost?.output_audio)} |
{model.limit.context.toLocaleString()} |
{model.limit.output.toLocaleString()} |
{model.temperature ? "Yes" : "No"} |
diff --git a/providers/amazon-bedrock/models/anthropic.claude-sonnet-4-5-20250929-v1:0.toml b/providers/amazon-bedrock/models/anthropic.claude-sonnet-4-5-20250929-v1:0.toml
new file mode 100644
index 000000000..68172b547
--- /dev/null
+++ b/providers/amazon-bedrock/models/anthropic.claude-sonnet-4-5-20250929-v1:0.toml
@@ -0,0 +1,24 @@
+name = "Claude Sonnet 4.5"
+release_date = "2025-09-29"
+last_updated = "2025-09-29"
+attachment = true
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-07-31"
+open_weights = false
+
+[cost]
+input = 3.00
+output = 15.00
+cache_read = 0.30
+cache_write = 3.75
+
+[limit]
+context = 200_000
+output = 64_000
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
+
diff --git a/providers/anthropic/models/claude-sonnet-4-5-20250929.toml b/providers/anthropic/models/claude-sonnet-4-5-20250929.toml
new file mode 100644
index 000000000..c710ccfc0
--- /dev/null
+++ b/providers/anthropic/models/claude-sonnet-4-5-20250929.toml
@@ -0,0 +1,23 @@
+name = "Claude Sonnet 4.5"
+release_date = "2025-09-29"
+last_updated = "2025-09-29"
+attachment = true
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-07-31"
+open_weights = false
+
+[cost]
+input = 3.00
+output = 15.00
+cache_read = 0.30
+cache_write = 3.75
+
+[limit]
+context = 200_000
+output = 64_000
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/chutes/models/Qwen/Qwen3-30B-A3B-Thinking-2507.toml b/providers/chutes/models/Qwen/Qwen3-30B-A3B-Thinking-2507.toml
new file mode 100644
index 000000000..114e27d31
--- /dev/null
+++ b/providers/chutes/models/Qwen/Qwen3-30B-A3B-Thinking-2507.toml
@@ -0,0 +1,21 @@
+name = "Qwen3 30B A3B Thinking 2507"
+release_date = "2025-07-30"
+last_updated = "2025-07-30"
+attachment = false
+reasoning = true
+temperature = true
+knowledge = "2025-04"
+tool_call = true
+open_weights = true
+
+[cost]
+input = 0.08
+output = 0.29
+
+[limit]
+context = 262_144
+output = 262_144
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Instruct.toml b/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Instruct.toml
new file mode 100644
index 000000000..febe65068
--- /dev/null
+++ b/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Instruct.toml
@@ -0,0 +1,21 @@
+name = "Qwen3 Next 80B A3B Instruct"
+release_date = "2025-09-11"
+last_updated = "2025-09-11"
+attachment = false
+reasoning = false
+temperature = true
+knowledge = "2025-04"
+tool_call = true
+open_weights = true
+
+[cost]
+input = 0.10
+output = 0.80
+
+[limit]
+context = 262_144
+output = 262_144
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Thinking.toml b/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Thinking.toml
new file mode 100644
index 000000000..c4b39babc
--- /dev/null
+++ b/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Thinking.toml
@@ -0,0 +1,21 @@
+name = "Qwen3 Next 80B A3B Thinking"
+release_date = "2025-09-11"
+last_updated = "2025-09-11"
+attachment = false
+reasoning = true
+temperature = true
+knowledge = "2025-04"
+tool_call = true
+open_weights = true
+
+[cost]
+input = 0.10
+output = 0.80
+
+[limit]
+context = 262_144
+output = 262_144
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-Terminus.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-Terminus.toml
new file mode 100644
index 000000000..6d116bfbf
--- /dev/null
+++ b/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-Terminus.toml
@@ -0,0 +1,21 @@
+name = "DeepSeek V3.1 Terminus"
+release_date = "2025-09-22"
+last_updated = "2025-09-22"
+attachment = false
+reasoning = true
+temperature = true
+knowledge = "2025-07"
+tool_call = true
+open_weights = true
+
+[cost]
+input = 0.25
+output = 1.00
+
+[limit]
+context = 131_072
+output = 65_536
+
+[modalities]
+input = ["text"]
+output = ["text"]
\ No newline at end of file
diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-turbo.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-turbo.toml
new file mode 100644
index 000000000..cea1721b5
--- /dev/null
+++ b/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-turbo.toml
@@ -0,0 +1,20 @@
+name = "DeepSeek V3.1 Turbo"
+release_date = "2025-08-21"
+last_updated = "2025-08-21"
+attachment = false
+reasoning = false
+temperature = true
+tool_call = true
+open_weights = false
+
+[cost]
+input = 1.00
+output = 3.00
+
+[limit]
+context = 128000
+output = 128000
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/chutes/models/zai-org/GLM-4.5-turbo.toml b/providers/chutes/models/zai-org/GLM-4.5-turbo.toml
new file mode 100644
index 000000000..935b97512
--- /dev/null
+++ b/providers/chutes/models/zai-org/GLM-4.5-turbo.toml
@@ -0,0 +1,21 @@
+name = "GLM 4.5 Turbo"
+release_date = "2025-07-28"
+last_updated = "2025-07-28"
+attachment = false
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-04"
+open_weights = true
+
+[cost]
+input = 1.00
+output = 3.00
+
+[limit]
+context = 131_072
+output = 131_072
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/chutes/models/zai-org/GLM-4.6-FP8.toml b/providers/chutes/models/zai-org/GLM-4.6-FP8.toml
new file mode 100644
index 000000000..feafadca0
--- /dev/null
+++ b/providers/chutes/models/zai-org/GLM-4.6-FP8.toml
@@ -0,0 +1,21 @@
+name = "GLM 4.6 FP8"
+release_date = "2025-09-30"
+last_updated = "2025-09-30"
+attachment = false
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-04"
+open_weights = true
+
+[cost]
+input = 0.39
+output = 1.55
+
+[limit]
+context = 204800
+output = 131072
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/cortecs/logo.svg b/providers/cortecs/logo.svg
index c426c5eea..3a9d6b282 100644
--- a/providers/cortecs/logo.svg
+++ b/providers/cortecs/logo.svg
@@ -1,19 +1,8 @@
diff --git a/providers/github-copilot/models/claude-sonnet-4.5.toml b/providers/github-copilot/models/claude-sonnet-4.5.toml
new file mode 100644
index 000000000..962fb694b
--- /dev/null
+++ b/providers/github-copilot/models/claude-sonnet-4.5.toml
@@ -0,0 +1,17 @@
+name = "Claude Sonnet 4.5 (Preview)"
+release_date = "2025-09-29"
+last_updated = "2025-09-29"
+attachment = true
+reasoning = true
+temperature = true
+knowledge = "2025-03-31"
+tool_call = true
+open_weights = false
+
+[limit]
+context = 128_000
+output = 16_000
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/google/models/gemini-2.5-flash-lite-preview-06-17.toml b/providers/google/models/gemini-2.5-flash-lite-preview-06-17.toml
index fd6286d4c..819053a90 100644
--- a/providers/google/models/gemini-2.5-flash-lite-preview-06-17.toml
+++ b/providers/google/models/gemini-2.5-flash-lite-preview-06-17.toml
@@ -12,9 +12,10 @@ open_weights = false
input = 0.10
output = 0.40
cache_read = 0.025
+input_audio = 0.30
[limit]
-context = 65_536
+context = 1_048_576
output = 65_536
[modalities]
diff --git a/providers/google/models/gemini-2.5-flash-lite-preview-09-2025.toml b/providers/google/models/gemini-2.5-flash-lite-preview-09-2025.toml
new file mode 100644
index 000000000..f0dcb0495
--- /dev/null
+++ b/providers/google/models/gemini-2.5-flash-lite-preview-09-2025.toml
@@ -0,0 +1,22 @@
+name = "Gemini 2.5 Flash Lite Preview 09-25"
+release_date = "2025-09-25"
+last_updated = "2025-09-25"
+attachment = true
+reasoning = true
+temperature = true
+knowledge = "2025-01"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 0.10
+output = 0.40
+cache_read = 0.025
+
+[limit]
+context = 1_048_576
+output = 65_536
+
+[modalities]
+input = ["text", "image", "audio", "video", "pdf"]
+output = ["text"]
diff --git a/providers/google/models/gemini-2.5-flash-lite.toml b/providers/google/models/gemini-2.5-flash-lite.toml
new file mode 100644
index 000000000..4a534b571
--- /dev/null
+++ b/providers/google/models/gemini-2.5-flash-lite.toml
@@ -0,0 +1,22 @@
+name = "Gemini 2.5 Flash Lite"
+release_date = "2025-06-17"
+last_updated = "2025-06-17"
+attachment = true
+reasoning = true
+temperature = true
+knowledge = "2025-01"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 0.10
+output = 0.40
+cache_read = 0.025
+
+[limit]
+context = 1_048_576
+output = 65_536
+
+[modalities]
+input = ["text", "image", "audio", "video", "pdf"]
+output = ["text"]
\ No newline at end of file
diff --git a/providers/google/models/gemini-2.5-flash-preview-09-2025.toml b/providers/google/models/gemini-2.5-flash-preview-09-2025.toml
new file mode 100644
index 000000000..f2f00a2f8
--- /dev/null
+++ b/providers/google/models/gemini-2.5-flash-preview-09-2025.toml
@@ -0,0 +1,22 @@
+name = "Gemini 2.5 Flash Preview 09-25"
+release_date = "2025-09-25"
+last_updated = "2025-09-25"
+attachment = true
+reasoning = true
+temperature = true
+knowledge = "2025-01"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 0.15
+output = 0.60
+cache_read = 0.0375
+
+[limit]
+context = 1_048_576
+output = 65_536
+
+[modalities]
+input = ["text", "image", "audio", "video", "pdf"]
+output = ["text"]
diff --git a/providers/google/models/gemini-2.5-flash.toml b/providers/google/models/gemini-2.5-flash.toml
index 5682b423e..f169c73bf 100644
--- a/providers/google/models/gemini-2.5-flash.toml
+++ b/providers/google/models/gemini-2.5-flash.toml
@@ -12,6 +12,7 @@ open_weights = false
input = 0.30
output = 2.50
cache_read = 0.075
+input_audio = 1.00
[limit]
context = 1_048_576
diff --git a/providers/google/models/gemini-flash-latest.toml b/providers/google/models/gemini-flash-latest.toml
new file mode 100644
index 000000000..fb9af9c9a
--- /dev/null
+++ b/providers/google/models/gemini-flash-latest.toml
@@ -0,0 +1,22 @@
+name = "Gemini Flash Latest"
+release_date = "2025-09-25"
+last_updated = "2025-09-25"
+attachment = true
+reasoning = true
+temperature = true
+knowledge = "2025-01"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 0.15
+output = 0.60
+cache_read = 0.0375
+
+[limit]
+context = 1_048_576
+output = 65_536
+
+[modalities]
+input = ["text", "image", "audio", "video", "pdf"]
+output = ["text"]
diff --git a/providers/google/models/gemini-flash-lite-latest.toml b/providers/google/models/gemini-flash-lite-latest.toml
new file mode 100644
index 000000000..32617f27a
--- /dev/null
+++ b/providers/google/models/gemini-flash-lite-latest.toml
@@ -0,0 +1,22 @@
+name = "Gemini Flash-Lite Latest"
+release_date = "2025-09-25"
+last_updated = "2025-09-25"
+attachment = true
+reasoning = true
+temperature = true
+knowledge = "2025-01"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 0.10
+output = 0.40
+cache_read = 0.025
+
+[limit]
+context = 1_048_576
+output = 65_536
+
+[modalities]
+input = ["text", "image", "audio", "video", "pdf"]
+output = ["text"]
diff --git a/providers/google/models/gemini-live-2.5-flash-preview-native-audio.toml b/providers/google/models/gemini-live-2.5-flash-preview-native-audio.toml
new file mode 100644
index 000000000..b773d8897
--- /dev/null
+++ b/providers/google/models/gemini-live-2.5-flash-preview-native-audio.toml
@@ -0,0 +1,24 @@
+name = "Gemini Live 2.5 Flash Preview Native Audio"
+release_date = "2025-06-17"
+last_updated = "2025-09-18"
+attachment = false
+reasoning = true
+temperature = false
+knowledge = "2025-01"
+tool_call = true
+open_weights = false
+experimental = true
+
+[cost]
+input = 0.50
+output = 2.00
+input_audio = 3.00
+output_audio = 12.00
+
+[limit]
+context = 131_072
+output = 65_536
+
+[modalities]
+input = ["text", "audio", "video"]
+output = ["text", "audio"]
\ No newline at end of file
diff --git a/providers/google/provider.toml b/providers/google/provider.toml
index 63ceec628..a7d8c4775 100644
--- a/providers/google/provider.toml
+++ b/providers/google/provider.toml
@@ -1,4 +1,4 @@
name = "Google"
-env = ["GOOGLE_GENERATIVE_AI_API_KEY"]
+env = ["GOOGLE_GENERATIVE_AI_API_KEY", "GEMINI_API_KEY"]
npm = "@ai-sdk/google"
doc = "https://ai.google.dev/gemini-api/docs/pricing"
diff --git a/providers/huggingface/models/zai-org/GLM-4.6.toml b/providers/huggingface/models/zai-org/GLM-4.6.toml
new file mode 100644
index 000000000..3c6520785
--- /dev/null
+++ b/providers/huggingface/models/zai-org/GLM-4.6.toml
@@ -0,0 +1,22 @@
+name = "GLM-4.6"
+release_date = "2025-09-30"
+last_updated = "2025-09-30"
+attachment = false
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-04"
+open_weights = true
+
+[cost]
+input = 0.60
+output = 2.20
+cache_read = 0.11
+
+[limit]
+context = 200_000
+output = 128_000
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/lucidquery/logo.svg b/providers/lucidquery/logo.svg
index 251f60b29..1d40cf5bb 100644
--- a/providers/lucidquery/logo.svg
+++ b/providers/lucidquery/logo.svg
@@ -1,4 +1,4 @@
diff --git a/providers/openai/models/gpt-4o-2024-05-13.toml b/providers/openai/models/gpt-4o-2024-05-13.toml
new file mode 100644
index 000000000..128d24899
--- /dev/null
+++ b/providers/openai/models/gpt-4o-2024-05-13.toml
@@ -0,0 +1,21 @@
+name = "GPT-4o (2024-05-13)"
+release_date = "2024-05-13"
+last_updated = "2024-05-13"
+attachment = true
+reasoning = false
+temperature = true
+knowledge = "2023-09"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 5.00
+output = 15.00
+
+[limit]
+context = 128_000
+output = 4_096
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/openai/models/gpt-4o-2024-08-06.toml b/providers/openai/models/gpt-4o-2024-08-06.toml
new file mode 100644
index 000000000..f3ac801b0
--- /dev/null
+++ b/providers/openai/models/gpt-4o-2024-08-06.toml
@@ -0,0 +1,22 @@
+name = "GPT-4o (2024-08-06)"
+release_date = "2024-08-06"
+last_updated = "2024-08-06"
+attachment = true
+reasoning = false
+temperature = true
+knowledge = "2023-09"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 2.50
+output = 10.00
+cache_read = 1.25
+
+[limit]
+context = 128_000
+output = 16_384
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/openai/models/gpt-4o-2024-11-20.toml b/providers/openai/models/gpt-4o-2024-11-20.toml
new file mode 100644
index 000000000..73d41a37c
--- /dev/null
+++ b/providers/openai/models/gpt-4o-2024-11-20.toml
@@ -0,0 +1,22 @@
+name = "GPT-4o (2024-11-20)"
+release_date = "2024-11-20"
+last_updated = "2024-11-20"
+attachment = true
+reasoning = false
+temperature = true
+knowledge = "2023-09"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 2.50
+output = 10.00
+cache_read = 1.25
+
+[limit]
+context = 128_000
+output = 16_384
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/openai/models/gpt-4o.toml b/providers/openai/models/gpt-4o.toml
index 74c33e93c..146f4ed05 100644
--- a/providers/openai/models/gpt-4o.toml
+++ b/providers/openai/models/gpt-4o.toml
@@ -1,6 +1,6 @@
name = "GPT-4o"
release_date = "2024-05-13"
-last_updated = "2024-05-13"
+last_updated = "2024-08-06"
attachment = true
reasoning = false
temperature = true
diff --git a/providers/opencode/models/claude-sonnet-4-5.toml b/providers/opencode/models/claude-sonnet-4-5.toml
new file mode 100644
index 000000000..014e7dcdb
--- /dev/null
+++ b/providers/opencode/models/claude-sonnet-4-5.toml
@@ -0,0 +1,26 @@
+name = "Claude Sonnet 4.5"
+release_date = "2025-09-29"
+last_updated = "2025-09-29"
+attachment = true
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-07-31"
+open_weights = false
+
+[cost]
+input = 3.00
+output = 15.00
+cache_read = 0.30
+cache_write = 3.75
+
+[limit]
+context = 1_000_000
+output = 64_000
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
+
+[provider]
+npm = "@ai-sdk/anthropic"
\ No newline at end of file
diff --git a/providers/opencode/models/claude-sonnet-4.toml b/providers/opencode/models/claude-sonnet-4.toml
index 1bf6af749..6ab3baea0 100644
--- a/providers/opencode/models/claude-sonnet-4.toml
+++ b/providers/opencode/models/claude-sonnet-4.toml
@@ -11,12 +11,11 @@ open_weights = false
[cost]
input = 3.00
output = 15.00
-reasoning = 15.00
cache_read = 0.30
cache_write = 3.75
[limit]
-context = 200_000
+context = 1_000_000
output = 64_000
[modalities]
diff --git a/providers/opencode/models/code-supernova.toml b/providers/opencode/models/code-supernova.toml
index 4035c3b5d..ea19dc290 100644
--- a/providers/opencode/models/code-supernova.toml
+++ b/providers/opencode/models/code-supernova.toml
@@ -1,4 +1,4 @@
-name = "Code Supernova"
+name = "Code Supernova 1M"
release_date = "2025-09-19"
last_updated = "2025-09-19"
attachment = true
@@ -14,8 +14,8 @@ cache_read = 0.0
cache_write = 0.0
[limit]
-context = 200_000
-output = 200_000
+context = 1_000_000
+output = 1_000_000
[modalities]
input = ["text", "image"]
diff --git a/providers/opencode/models/kimi-k2.toml b/providers/opencode/models/kimi-k2.toml
index 07584e635..a0256becb 100644
--- a/providers/opencode/models/kimi-k2.toml
+++ b/providers/opencode/models/kimi-k2.toml
@@ -11,6 +11,7 @@ open_weights = true
[cost]
input = 0.6
output = 2.5
+cache_read = 0.36
[limit]
context = 262_144
diff --git a/providers/opencode/models/qwen3-max.toml b/providers/opencode/models/qwen3-max.toml
new file mode 100644
index 000000000..8c70f7240
--- /dev/null
+++ b/providers/opencode/models/qwen3-max.toml
@@ -0,0 +1,22 @@
+name = "Qwen3 Max"
+release_date = "2025-09-05"
+last_updated = "2025-09-05"
+attachment = false
+reasoning = true
+temperature = true
+knowledge = "2025-04"
+tool_call = true
+open_weights = true
+experimental = true
+
+[cost]
+input = 1.6
+output = 6.4
+
+[limit]
+context = 262_144
+output = 65_536
+
+[modalities]
+input = ["text"]
+output = ["text"]
\ No newline at end of file
diff --git a/providers/opencode/provider.toml b/providers/opencode/provider.toml
index d476f31f4..b350ef0b6 100644
--- a/providers/opencode/provider.toml
+++ b/providers/opencode/provider.toml
@@ -1,4 +1,4 @@
-name = "opencode"
+name = "opencode zen"
env = ["OPENCODE_API_KEY"]
npm = "@ai-sdk/openai-compatible"
api = "https://opencode.ai/zen/v1"
diff --git a/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml b/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml
new file mode 100644
index 000000000..d89d931c0
--- /dev/null
+++ b/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml
@@ -0,0 +1,23 @@
+name = "Claude Sonnet 4.5"
+release_date = "2025-09-29"
+last_updated = "2025-09-29"
+attachment = true
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-07-31"
+open_weights = false
+
+[cost]
+input = 3.00
+output = 15.00
+cache_read = 0.30
+cache_write = 3.75
+
+[limit]
+context = 1_000_000
+output = 64_000
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/openrouter/models/openai/gpt-5-codex.toml b/providers/openrouter/models/openai/gpt-5-codex.toml
new file mode 100644
index 000000000..a3c834e57
--- /dev/null
+++ b/providers/openrouter/models/openai/gpt-5-codex.toml
@@ -0,0 +1,22 @@
+name = "GPT-5 Codex"
+release_date = "2025-09-15"
+last_updated = "2025-09-15"
+attachment = true
+reasoning = true
+temperature = true
+knowledge = "2024-10-01"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 1.25
+output = 10.00
+cache_read = 0.125
+
+[limit]
+context = 400_000
+output = 128_000
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/openrouter/models/x-ai/grok-4-fast.toml b/providers/openrouter/models/x-ai/grok-4-fast.toml
new file mode 100644
index 000000000..a592d3f13
--- /dev/null
+++ b/providers/openrouter/models/x-ai/grok-4-fast.toml
@@ -0,0 +1,23 @@
+name = "Grok 4 Fast"
+release_date = "2025-08-19"
+last_updated = "2025-08-19"
+attachment = false
+reasoning = true
+temperature = true
+knowledge = "2024-11"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 0.20
+output = 0.50
+cache_read = 0.05
+cache_write = 0.05
+
+[limit]
+context = 2_000_000
+output = 30_000
+
+[modalities]
+input = ["text", "image"]
+output = ["text"]
diff --git a/providers/openrouter/models/z-ai/glm-4.6.toml b/providers/openrouter/models/z-ai/glm-4.6.toml
new file mode 100644
index 000000000..0b2993305
--- /dev/null
+++ b/providers/openrouter/models/z-ai/glm-4.6.toml
@@ -0,0 +1,22 @@
+name = "GLM 4.6"
+release_date = "2025-09-30"
+last_updated = "2025-09-30"
+attachment = false
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-09"
+open_weights = true
+
+[cost]
+input = 0.60
+output = 2.20
+cache_read = 0.11
+
+[limit]
+context = 200_000
+output = 128_000
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/synthetic/models/hf:deepseek-ai/DeepSeek-V3.1-Terminus.toml b/providers/synthetic/models/hf:deepseek-ai/DeepSeek-V3.1-Terminus.toml
new file mode 100644
index 000000000..a76487220
--- /dev/null
+++ b/providers/synthetic/models/hf:deepseek-ai/DeepSeek-V3.1-Terminus.toml
@@ -0,0 +1,20 @@
+name = "DeepSeek V3.1 Terminus"
+release_date = "2025-09-22"
+last_updated = "2025-09-25"
+attachment = false
+reasoning = true
+temperature = true
+tool_call = true
+open_weights = false
+
+[cost]
+input = 1.20
+output = 1.20
+
+[limit]
+context = 128_000
+output = 128_000
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/synthetic/models/hf:deepseek-ai/DeepSeek-V3.1.toml b/providers/synthetic/models/hf:deepseek-ai/DeepSeek-V3.1.toml
index c803e5a3d..b880ea4bf 100644
--- a/providers/synthetic/models/hf:deepseek-ai/DeepSeek-V3.1.toml
+++ b/providers/synthetic/models/hf:deepseek-ai/DeepSeek-V3.1.toml
@@ -2,7 +2,7 @@ name = "DeepSeek V3.1"
release_date = "2025-08-21"
last_updated = "2025-08-21"
attachment = false
-reasoning = false
+reasoning = true
temperature = true
tool_call = true
open_weights = false
diff --git a/providers/vercel/models/anthropic/claude-4.5-sonnet.toml b/providers/vercel/models/anthropic/claude-4.5-sonnet.toml
new file mode 120000
index 000000000..200b48f73
--- /dev/null
+++ b/providers/vercel/models/anthropic/claude-4.5-sonnet.toml
@@ -0,0 +1 @@
+../../../anthropic/models/claude-sonnet-4-5-20250929.toml
\ No newline at end of file
diff --git a/providers/vercel/models/openai/gpt-5-codex.toml b/providers/vercel/models/openai/gpt-5-codex.toml
new file mode 120000
index 000000000..1ba1b60b6
--- /dev/null
+++ b/providers/vercel/models/openai/gpt-5-codex.toml
@@ -0,0 +1 @@
+../../../openai/models/gpt-5-codex.toml
\ No newline at end of file
diff --git a/providers/vercel/models/xai/grok-4-fast-non-reasoning.toml b/providers/vercel/models/xai/grok-4-fast-non-reasoning.toml
new file mode 120000
index 000000000..c2237818e
--- /dev/null
+++ b/providers/vercel/models/xai/grok-4-fast-non-reasoning.toml
@@ -0,0 +1 @@
+../../../xai/models/grok-4-fast-non-reasoning.toml
\ No newline at end of file
diff --git a/providers/vercel/models/xai/grok-4-fast.toml b/providers/vercel/models/xai/grok-4-fast.toml
new file mode 120000
index 000000000..c31b931b8
--- /dev/null
+++ b/providers/vercel/models/xai/grok-4-fast.toml
@@ -0,0 +1 @@
+../../../xai/models/grok-4-fast.toml
\ No newline at end of file
diff --git a/providers/vercel/models/xai/grok-code-fast-1.toml b/providers/vercel/models/xai/grok-code-fast-1.toml
new file mode 120000
index 000000000..753505214
--- /dev/null
+++ b/providers/vercel/models/xai/grok-code-fast-1.toml
@@ -0,0 +1 @@
+../../../xai/models/grok-code-fast-1.toml
\ No newline at end of file
diff --git a/providers/xai/models/grok-code-fast-1.toml b/providers/xai/models/grok-code-fast-1.toml
new file mode 100644
index 000000000..daeb14982
--- /dev/null
+++ b/providers/xai/models/grok-code-fast-1.toml
@@ -0,0 +1,22 @@
+name = "Grok Code Fast 1"
+release_date = "2025-08-28"
+last_updated = "2025-08-28"
+attachment = false
+reasoning = true
+temperature = true
+knowledge = "2023-10"
+tool_call = true
+open_weights = false
+
+[cost]
+input = 0.20
+output = 1.50
+cache_read = 0.02
+
+[limit]
+context = 256_000
+output = 10_000
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/zai-coding-plan/models/glm-4.6.toml b/providers/zai-coding-plan/models/glm-4.6.toml
new file mode 100644
index 000000000..bcd5f3783
--- /dev/null
+++ b/providers/zai-coding-plan/models/glm-4.6.toml
@@ -0,0 +1,23 @@
+name = "GLM-4.6"
+release_date = "2025-09-30"
+last_updated = "2025-09-30"
+attachment = false
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-04"
+open_weights = true
+
+[cost]
+input = 0
+output = 0
+cache_read = 0
+cache_write = 0
+
+[limit]
+context = 204800
+output = 131072
+
+[modalities]
+input = ["text"]
+output = ["text"]
\ No newline at end of file
diff --git a/providers/zai/models/glm-4.6.toml b/providers/zai/models/glm-4.6.toml
new file mode 100644
index 000000000..f9f362465
--- /dev/null
+++ b/providers/zai/models/glm-4.6.toml
@@ -0,0 +1,23 @@
+name = "GLM-4.6"
+release_date = "2025-09-30"
+last_updated = "2025-09-30"
+attachment = false
+reasoning = true
+temperature = true
+tool_call = true
+knowledge = "2025-04"
+open_weights = true
+
+[cost]
+input = 0.6
+output = 2.2
+cache_read = 0.11
+cache_write = 0
+
+[limit]
+context = 204800
+output = 131072
+
+[modalities]
+input = ["text"]
+output = ["text"]
\ No newline at end of file
diff --git a/providers/zhipuai-coding-plan/models/glm-4.6.toml b/providers/zhipuai-coding-plan/models/glm-4.6.toml
new file mode 120000
index 000000000..558b84f67
--- /dev/null
+++ b/providers/zhipuai-coding-plan/models/glm-4.6.toml
@@ -0,0 +1 @@
+../../zai-coding-plan/models/glm-4.6.toml
\ No newline at end of file
diff --git a/providers/zhipuai/models/glm-4.6.toml b/providers/zhipuai/models/glm-4.6.toml
new file mode 120000
index 000000000..af1a2e6bc
--- /dev/null
+++ b/providers/zhipuai/models/glm-4.6.toml
@@ -0,0 +1 @@
+../../zai/models/glm-4.6.toml
\ No newline at end of file