{ "$schema": "https://opencode.ai/config.json", "instructions": [ "../AGENTS.md" ], "provider": { "zenmux": { "options": { "baseURL": "https://zenmux.ai/api/v1" }, "models": { "anthropic/claude-opus-4.7": { "name": "Claude Opus 4.7", "limit": { "context": 1000000, "output": 64000 } }, "anthropic/claude-opus-4.6": { "name": "Claude Opus 4.6", "limit": { "context": 1000000, "output": 64000 } }, "anthropic/claude-sonnet-4.6": { "name": "Claude Sonnet 4.6", "limit": { "context": 1000000, "output": 64000 } }, "anthropic/claude-sonnet-4.5": { "name": "Claude Sonnet 4.5", "limit": { "context": 1000000, "output": 64000 } }, "anthropic/claude-haiku-4.5": { "name": "Claude Haiku 4.5", "limit": { "context": 200000, "output": 32000 } }, "google/gemini-3.1-pro-preview": { "name": "Gemini 3.1 Pro Preview", "limit": { "context": 1000000, "output": 64000 } }, "google/gemini-2.5-pro": { "name": "Gemini 2.5 Pro", "limit": { "context": 1000000, "output": 64000 } }, "openai/gpt-5.4-pro": { "name": "GPT-5.4 Pro", "limit": { "context": 1050000, "output": 64000 } }, "openai/gpt-5.4": { "name": "GPT-5.4", "limit": { "context": 1050000, "output": 64000 } }, "qwen/qwen3.6-plus": { "name": "Qwen3.6 Plus", "limit": { "context": 1000000, "output": 32000 } }, "minimax/minimax-m2.7": { "name": "MiniMax M2.7", "limit": { "context": 204800, "output": 32000 } }, "moonshotai/kimi-k2.5": { "name": "Kimi K2.5", "limit": { "context": 262144, "output": 32000 } }, "deepseek/deepseek-v3.2": { "name": "DeepSeek V3.2", "limit": { "context": 128000, "output": 32000 } }, "deepseek/deepseek-reasoner": { "name": "DeepSeek V3.2 Thinking", "limit": { "context": 128000, "output": 32000 } }, "z-ai/glm-5.1": { "name": "GLM 5.1", "limit": { "context": 200000, "output": 32000 } }, "x-ai/grok-4.2-fast": { "name": "Grok 4.2 Fast", "limit": { "context": 2000000, "output": 32000 } } } }, "zenmux-anthropic": { "npm": "@ai-sdk/anthropic", "name": "ZenMux Anthropic (cache enabled)", "options": { "baseURL": "https://zenmux.ai/api/anthropic/v1", "apiKey": "{env:ZENMUX_API_KEY}" }, "models": { "claude-opus-4-7": { "name": "Claude Opus 4.7 (cache)", "limit": { "context": 1000000, "output": 64000 } }, "claude-opus-4-6": { "name": "Claude Opus 4.6 (cache)", "limit": { "context": 1000000, "output": 64000 } }, "claude-sonnet-4-6": { "name": "Claude Sonnet 4.6 (cache)", "limit": { "context": 1000000, "output": 64000 } }, "claude-sonnet-4-5": { "name": "Claude Sonnet 4.5 (cache)", "limit": { "context": 1000000, "output": 64000 } }, "claude-haiku-4-5": { "name": "Claude Haiku 4.5 (cache)", "limit": { "context": 200000, "output": 32000 } } } } }, "mcp": { "tavily": { "type": "local", "command": ["npx", "-y", "tavily-mcp@latest"], "environment": { "TAVILY_API_KEY": "{env:TAVILY_API_KEY}" }, "enabled": true }, "brave-search": { "type": "local", "command": ["npx", "-y", "@modelcontextprotocol/server-brave-search"], "environment": { "BRAVE_API_KEY": "{env:BRAVE_API_KEY}" }, "enabled": true }, "exa": { "type": "local", "command": ["npx", "-y", "exa-mcp-server"], "environment": { "EXA_API_KEY": "{env:EXA_API_KEY}" }, "enabled": true } }, "permission": { "edit": "allow", "bash": { "*": "ask", "python *": "allow", "python3 *": "allow", "pandoc *": "allow", "ls *": "allow", "cat *": "allow", "head *": "allow", "tail *": "allow", "wc *": "allow", "grep *": "allow", "find *": "allow", "curl *": "allow", "bash .opencode/templates/fonts/download-fonts.sh": "allow", "rm -rf*": "deny", "sudo *": "deny" }, "webfetch": "allow" }, "agent": { "build": { "mode": "primary" }, "plan": { "mode": "primary" } } }