openclaw/extensions/opencode/openclaw.plugin.json
Peter Steinberger 84da6ded4e
fix(models): refresh native pricing without pinning defaults (#133695)
* fix(models): refresh native pricing without pinning defaults

Use complete native OpenCode and Venice pricing schedules while preserving
authored zero, partial, flat and tiered costs across preparation and lookup.
Avoid generated price pins during fresh merge-mode Venice onboarding.

Follow-up to #133349 (cached long-context accounting) and #129694
(Venice runtime pricing); related to #113549 (broader OpenCode catalog drift).

* fix(pricing): preserve native schedules through resolution

Merge prepared costs beneath authored display prices, retain validated native
free schedules under exact owner policy, and compile OpenRouter overrides
with strict thresholds and source-order inheritance for each price key.

Preserve zero, partial, flat and tiered user pricing without new settings
or storage. Follow-up repairs for #133695.
2026-08-30 23:50:24 -07:00

229 lines
7.7 KiB
JSON

{
"id": "opencode",
"icon": "https://cdn.simpleicons.org/opencode",
"activation": { "onStartup": true },
"providerCatalogEntry": "./provider-discovery.ts",
"enabledByDefault": true,
"providers": ["opencode"],
"providerEndpoints": [
{ "endpointClass": "opencode-native", "hostSuffixes": ["opencode.ai"] }
],
"providerRequest": {
"providers": { "opencode": { "family": "opencode" } }
},
"modelCatalog": {
"providers": {
"opencode": {
"baseUrl": "https://opencode.ai/zen/v1",
"api": "openai-completions",
"models": [
{
"id": "claude-opus-5",
"name": "Claude Opus 5",
"api": "anthropic-messages",
"provider": "opencode",
"baseUrl": "https://opencode.ai/zen",
"reasoning": true,
"input": ["text", "image"],
"cost": { "input": 5, "output": 25, "cacheRead": 0.5, "cacheWrite": 6.25 },
"contextWindow": 1000000,
"maxTokens": 128000,
"compat": {
"supportsUsageInStreaming": true,
"supportsReasoningEffort": true,
"supportedReasoningEfforts": ["low", "medium", "high", "xhigh", "max"],
"maxTokensField": "max_tokens",
"codeMode": "capable"
}
},
{
"id": "gpt-5.6-sol",
"name": "GPT-5.6 Sol",
"api": "openai-responses",
"provider": "opencode",
"baseUrl": "https://opencode.ai/zen/v1",
"reasoning": true,
"input": ["text", "image"],
"cost": {
"input": 2,
"output": 10,
"cacheRead": 0.2,
"cacheWrite": 2.5,
"tieredPricing": [
{
"input": 2,
"output": 10,
"cacheRead": 0.2,
"cacheWrite": 2.5,
"range": [0, 272000]
},
{
"input": 4,
"output": 15,
"cacheRead": 0.4,
"cacheWrite": 5,
"range": [272000]
}
]
},
"contextWindow": 1050000,
"contextTokens": 922000,
"maxTokens": 128000,
"compat": {
"supportsUsageInStreaming": true,
"supportsReasoningEffort": true,
"supportedReasoningEfforts": ["none", "low", "medium", "high", "xhigh", "max"],
"maxTokensField": "max_tokens",
"codeMode": "capable"
}
},
{
"id": "gpt-5-nano",
"name": "GPT-5 Nano",
"api": "openai-responses",
"provider": "opencode",
"baseUrl": "https://opencode.ai/zen/v1",
"reasoning": true,
"input": ["text", "image"],
"cost": { "input": 0.05, "output": 0.4, "cacheRead": 0.005, "cacheWrite": 0 },
"contextWindow": 400000,
"contextTokens": 272000,
"maxTokens": 128000,
"thinkingLevelMap": { "off": null },
"compat": {
"supportsUsageInStreaming": true,
"supportsReasoningEffort": true,
"supportedReasoningEfforts": ["minimal", "low", "medium", "high"],
"maxTokensField": "max_tokens"
}
},
{
"id": "gemini-3.6-flash",
"name": "Gemini 3.6 Flash",
"api": "google-generative-ai",
"provider": "opencode",
"baseUrl": "https://opencode.ai/zen/v1",
"reasoning": true,
"input": ["text", "image"],
"cost": { "input": 1.5, "output": 7.5, "cacheRead": 0.15, "cacheWrite": 0 },
"contextWindow": 1048576,
"maxTokens": 65536,
"compat": {
"supportsUsageInStreaming": true,
"supportsReasoningEffort": true,
"supportedReasoningEfforts": ["minimal", "low", "medium", "high"],
"maxTokensField": "max_tokens"
}
},
{
"id": "minimax-m3",
"name": "MiniMax M3",
"api": "openai-completions",
"provider": "opencode",
"baseUrl": "https://opencode.ai/zen/v1",
"reasoning": true,
"input": ["text", "image"],
"cost": { "input": 0.3, "output": 1.2, "cacheRead": 0.06, "cacheWrite": 0 },
"contextWindow": 512000,
"maxTokens": 128000,
"compat": {
"supportsUsageInStreaming": true,
"maxTokensField": "max_tokens",
"supportsDeveloperRole": false,
"supportsStrictMode": false
}
},
{
"id": "kimi-k3",
"name": "Kimi K3",
"api": "openai-completions",
"provider": "opencode",
"baseUrl": "https://opencode.ai/zen/v1",
"reasoning": true,
"input": ["text", "image"],
"cost": { "input": 3, "output": 15, "cacheRead": 0.3, "cacheWrite": 0 },
"contextWindow": 1048576,
"maxTokens": 131072,
"compat": {
"supportsUsageInStreaming": true,
"supportsReasoningEffort": true,
"supportedReasoningEfforts": ["max"],
"maxTokensField": "max_tokens",
"supportsDeveloperRole": false,
"supportsStrictMode": false,
"codeMode": "capable"
}
},
{
"id": "big-pickle",
"name": "Big Pickle",
"api": "openai-completions",
"provider": "opencode",
"baseUrl": "https://opencode.ai/zen/v1",
"reasoning": true,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 200000,
"contextTokens": 160000,
"maxTokens": 32000,
"compat": {
"supportsUsageInStreaming": true,
"maxTokensField": "max_tokens",
"supportsDeveloperRole": false,
"supportsStrictMode": false
}
}
]
}
},
"discovery": { "opencode": "runtime" }
},
"modelPricing": { "providers": { "opencode": { "openCode": { "provider": "opencode" } } } },
"setup": {
"providers": [
{ "id": "opencode", "envVars": ["OPENCODE_API_KEY", "OPENCODE_ZEN_API_KEY"] }
]
},
"providerAuthChoices": [
{
"provider": "opencode",
"method": "api-key",
"choiceId": "opencode-zen",
"appGuidedSecret": true,
"choiceLabel": "OpenCode Zen catalog",
"groupId": "opencode",
"groupLabel": "OpenCode",
"groupHint": "Shared API key infrastructure for Zen + Go",
"optionKey": "opencodeZenApiKey",
"cliFlag": "--opencode-zen-api-key",
"cliOption": "--opencode-zen-api-key <key>",
"cliDescription": "OpenCode API key (Zen catalog)"
}
],
"contracts": { "mediaUnderstandingProviders": ["opencode"] },
"mediaUnderstandingProviderMetadata": {
"opencode": {
"capabilities": ["image"],
"defaultModels": { "image": "gpt-5-nano" }
}
},
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"sessionCatalog": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean", "default": true }
}
}
}
},
"uiHints": {
"sessionCatalog.enabled": {
"label": "OpenCode Session Catalog",
"help": "Auto-detect OpenCode sessions on the Gateway and paired nodes, then show them in the sessions sidebar."
}
}
}