anomalyco / anomalyco/opencode
[FEATURE]: `opencode.jsonc` should support inheriting data from `anomalyco/models.dev` via properties when configuring provider models
Open
@rekram1-node is already working on this.
Since Aug 2, 2026.
- Dominant language
- TypeScript
- Stars
- 209k
- Forks
- 27.5k
- PR merge metrics
- PR metrics pending
Description
Feature hasn't been suggested before.
- I have verified this feature I'm about to request hasn't been suggested before.
Describe the enhancement you want to request
opencode.jsoncshould support inheriting data fromanomalyco/models.devvia properties when configuring provider models. This current issue was inspired by https://github.com/anomalyco/models.dev/issues/2671 and https://github.com/anomalyco/opencode/pull/38330 .- Currently, if one wants to use a custom provider in
opencodethat includes both GPT and DeepSeek models, it is easy to end up with a configuration like this in~/.config/opencode/opencode.jsonc.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"test-website": {
"npm": "@ai-sdk/openai",
"options": {
"baseURL": "https://test.website.com",
"apiKey": "test-key"
},
"models": {
"gpt-5.6-luna": {
"name": "GPT-5.6 Luna","family": "gpt-luna","release_date": "2026-07-09",
"attachment": true,"reasoning": true,"temperature": false,"tool_call": true,
"modalities": {"input": ["text","image","pdf"],"output": ["text"]},
"limit": {"context": 1050000,"input": 922000,"output": 128000}
},
"gpt-5.6-terra": {
"name": "GPT-5.6 Terra","family": "gpt-terra","release_date": "2026-07-09",
"attachment": true,"reasoning": true,"temperature": false,"tool_call": true,
"modalities": {"input": ["text","image","pdf"],"output": ["text"]},
"limit": {"context": 1050000,"input": 922000,"output": 128000}
},
"gpt-5.6-sol": {
"name": "GPT-5.6 Sol","family": "gpt-sol","release_date": "2026-07-09",
"attachment": true,"reasoning": true,"temperature": false,"tool_call": true,
"modalities": {"input": ["text","image","pdf"],"output": ["text"]},
"limit": {"context": 1050000,"input": 922000,"output": 128000}
},
"deepseek-v4-flash": {
"name": "DeepSeek V4 Flash","family": "deepseek-flash","release_date": "2026-04-24",
"attachment": false,"reasoning": false,"temperature": true,"tool_call": true,
"modalities": {"input": ["text"],"output": ["text"]},
"limit": {"context": 1000000,"output": 65536},
"provider": {
"npm": "@ai-sdk/openai-compatible"
},
"variants": {
"low": {"reasoningEffort": "low"},
"medium": {"reasoningEffort": "medium"},
"high": {"reasoningEffort": "high"},
"none": {"reasoningEffort": "none"}
}
}
}
}
}
}
- Currently, users are forced to visit https://github.com/anomalyco/models.dev to find configuration details for each model and manually convert model attributes—such as those found in
gpt-5.6-luna.toml,gpt-5.6-terra.toml,gpt-5.6-sol.toml, anddeepseek-v4-flash.toml—from TOML format into the JSON format required byopencode.jsonc. anomalyco/opencodelacks a mechanism for directly referencing configurations fromanomalyco/models.dev. I believe it would be entirely feasible to support configurations withextendsandoverridedirectives, allowingopencode.jsoncto inherit from and override configurations fromanomalyco/models.dev. This would significantly simplify the mental burden of maintaining configurations.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"test-website": {
"npm": "@ai-sdk/openai",
"options": {
"baseURL": "https://test.website.com",
"apiKey": "test-key"
},
"models": {
"gpt-5.6-luna": {
"extends": {
"url": [
"https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/models/openai/gpt-5.6-luna.toml",
"https://github.com/anomalyco/models.dev/raw/refs/heads/dev/providers/openai/models/gpt-5.6-luna.toml"
]
}
},
"gpt-5.6-terra": {
"extends": {
"url": [
"https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/models/openai/gpt-5.6-terra.toml",
"https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/providers/openai/models/gpt-5.6-terra.toml"
]
}
},
"gpt-5.6-sol": {
"extends": {
"url": "https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/models/openai/gpt-5.6-sol.toml"
"url": [
"https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/models/openai/gpt-5.6-sol.toml",
"https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/providers/openai/models/gpt-5.6-sol.toml"
]
}
},
"deepseek-v4-flash": {
"extends": {
"url": [
"https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/models/deepseek/deepseek-v4-flash.toml",
"https://raw.githubusercontent.com/anomalyco/models.dev/refs/heads/dev/providers/deepseek/models/deepseek-v4-flash.toml"
]
"override": {
"reasoning": false,
"limit": {
"output": 65536
}
}
},
"provider": {
"npm": "@ai-sdk/openai-compatible"
},
"variants": {
"low": {"reasoningEffort": "low"},
"medium": {"reasoningEffort": "medium"},
"high": {"reasoningEffort": "high"},
"none": {"reasoningEffort": "none"}
}
}
}
}
}
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.