searxng-mcp.py is a stdlib-only stdio MCP server with one web_search tool against search.rcjohnstone.com. It is in both profiles and asks first on oc-work. lsp: true in opencode.json, and the launcher sets OPENCODE_EXPERIMENTAL_LSP_TOOL and OPENCODE_DISABLE_LSP_DOWNLOAD. The launcher adds gitea-mcp to oc-local through OPENCODE_CONFIG_CONTENT when the binary and GITEA_MCP_TOKEN exist, limited to 15 tools. gitea_issue_write asks.
339 lines
8.5 KiB
JSON
339 lines
8.5 KiB
JSON
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"litellm": {
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"name": "LiteLLM · LOCAL (all models)",
|
|
"options": {
|
|
"baseURL": "{env:LITELLM_BASE}/v1",
|
|
"apiKey": "{env:LITELLM_KEY}"
|
|
},
|
|
"models": {
|
|
"qwen3.8-flash-next-iq3s-med": {
|
|
"name": "Qwen3.8-Flash-Next IQ3_S (local Strata, medium reasoning)",
|
|
"limit": {
|
|
"context": 196608,
|
|
"output": 32768
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"qwen3.8-flash-next-iq3s": {
|
|
"name": "Qwen3.8-Flash-Next IQ3_S (local Strata, full reasoning - slow)",
|
|
"limit": {
|
|
"context": 196608,
|
|
"output": 32768
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"qwen3.8-flash-next": {
|
|
"name": "qwen3.8-flash-next (rented MI325X; run gi up on mainframe first)",
|
|
"limit": {
|
|
"context": 262144,
|
|
"output": 32768
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"qwen3-next-80b-128k": {
|
|
"name": "qwen3-next-80b (local, 128k agentic)",
|
|
"limit": {
|
|
"context": 131072,
|
|
"output": 8192
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"qwen3-next-80b": {
|
|
"name": "qwen3-next-80b (local, 32k)",
|
|
"limit": {
|
|
"context": 32768,
|
|
"output": 8192
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"gemma3-12b": {
|
|
"name": "gemma3-12b (local, on demand)",
|
|
"limit": {
|
|
"context": 32768,
|
|
"output": 8192
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"muse-glimmer-30b-low": {
|
|
"name": "Muse Glimmer 30B (local, low reasoning)",
|
|
"limit": {
|
|
"context": 131072,
|
|
"output": 8192
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"muse-glimmer-30b": {
|
|
"name": "Muse Glimmer 30B (local, full reasoning - slow)",
|
|
"limit": {
|
|
"context": 131072,
|
|
"output": 8192
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"anthropic/claude-opus-5": {
|
|
"name": "claude-opus-5 (Anthropic direct)",
|
|
"limit": {
|
|
"context": 1000000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 5.0,
|
|
"output": 25.0,
|
|
"cache_read": 0.5,
|
|
"cache_write": 6.25
|
|
}
|
|
},
|
|
"anthropic/claude-sonnet-5": {
|
|
"name": "claude-sonnet-5 (Anthropic direct)",
|
|
"limit": {
|
|
"context": 1000000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 2.0,
|
|
"output": 10.0,
|
|
"cache_read": 0.2,
|
|
"cache_write": 2.5
|
|
}
|
|
},
|
|
"anthropic/claude-haiku-4-5": {
|
|
"name": "claude-haiku-4-5 (Anthropic direct)",
|
|
"limit": {
|
|
"context": 200000,
|
|
"output": 64000
|
|
},
|
|
"cost": {
|
|
"input": 1.0,
|
|
"output": 5.0,
|
|
"cache_read": 0.1,
|
|
"cache_write": 1.25
|
|
}
|
|
},
|
|
"chatgpt/gpt-5.6-sol": {
|
|
"name": "gpt-5.6-sol (ChatGPT Plus, flat fee)",
|
|
"limit": {
|
|
"context": 272000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"chatgpt/gpt-5.6-terra": {
|
|
"name": "gpt-5.6-terra (ChatGPT Plus, flat fee)",
|
|
"limit": {
|
|
"context": 272000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"chatgpt/gpt-5.6-luna": {
|
|
"name": "gpt-5.6-luna (ChatGPT Plus, flat fee)",
|
|
"limit": {
|
|
"context": 272000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"chatgpt/gpt-5.5": {
|
|
"name": "gpt-5.5 (ChatGPT Plus, flat fee)",
|
|
"limit": {
|
|
"context": 272000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 0.0,
|
|
"output": 0.0,
|
|
"cache_read": 0.0,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"openai/gpt-5.6-sol": {
|
|
"name": "gpt-5.6-sol (OpenAI direct)",
|
|
"limit": {
|
|
"context": 1050000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 4.0,
|
|
"output": 20.0,
|
|
"cache_read": 0.4,
|
|
"cache_write": 5.0
|
|
}
|
|
},
|
|
"openai/gpt-5.5": {
|
|
"name": "gpt-5.5 (OpenAI direct)",
|
|
"limit": {
|
|
"context": 1050000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 5.0,
|
|
"output": 30.0,
|
|
"cache_read": 0.5,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"openai/gpt-5.4": {
|
|
"name": "gpt-5.4 (OpenAI direct)",
|
|
"limit": {
|
|
"context": 1050000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 2.5,
|
|
"output": 15.0,
|
|
"cache_read": 0.25,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"openai/gpt-5.4-mini": {
|
|
"name": "gpt-5.4-mini (OpenAI direct)",
|
|
"limit": {
|
|
"context": 1050000,
|
|
"output": 128000
|
|
},
|
|
"cost": {
|
|
"input": 0.75,
|
|
"output": 4.5,
|
|
"cache_read": 0.075,
|
|
"cache_write": 0.0
|
|
}
|
|
},
|
|
"openai/gpt-5.3-codex": {
|
|
"name": "gpt-5.3-codex (OpenAI direct)",
|
|
"limit": {
|
|
"context": 200000,
|
|
"output": 64000
|
|
},
|
|
"cost": {
|
|
"input": 1.75,
|
|
"output": 14.0,
|
|
"cache_read": 0.175,
|
|
"cache_write": 0.0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"enabled_providers": [
|
|
"litellm"
|
|
],
|
|
"model": "litellm/qwen3.8-flash-next-iq3s-med",
|
|
"small_model": "litellm/qwen3.8-flash-next-iq3s-med",
|
|
"mcp": {
|
|
"searxng": {
|
|
"type": "local",
|
|
"command": ["python3", "{env:HOME}/.dotfiles/common/opencode/mcp/searxng-mcp.py"],
|
|
"enabled": true
|
|
}
|
|
},
|
|
"permission": {
|
|
"edit": "allow",
|
|
"webfetch": "allow",
|
|
"searxng_*": "allow",
|
|
"gitea_issue_write": "ask",
|
|
"external_directory": "ask",
|
|
"read": {
|
|
"*": "allow",
|
|
"*.env": "ask",
|
|
"*.env.*": "ask",
|
|
"*.env.example": "allow"
|
|
},
|
|
"bash": {
|
|
"*": "allow",
|
|
"rm *": "ask",
|
|
"rmdir *": "ask",
|
|
"sudo *": "ask",
|
|
"su *": "ask",
|
|
"kill *": "ask",
|
|
"pkill *": "ask",
|
|
"killall *": "ask",
|
|
"git commit*": "ask",
|
|
"git push*": "ask",
|
|
"git reset *": "ask",
|
|
"git checkout -- *": "ask",
|
|
"git restore *": "ask",
|
|
"git clean *": "ask",
|
|
"git rebase*": "ask",
|
|
"git stash drop*": "ask",
|
|
"git stash clear*": "ask",
|
|
"git branch -D*": "ask",
|
|
"git tag *": "ask",
|
|
"cargo publish*": "ask",
|
|
"npm publish*": "ask",
|
|
"gh *": "ask",
|
|
"ssh *": "ask",
|
|
"scp *": "ask",
|
|
"rsync *": "ask",
|
|
"rbw *": "ask",
|
|
"systemctl *": "ask",
|
|
"podman *": "ask",
|
|
"docker *": "ask",
|
|
"dd *": "ask",
|
|
"mkfs*": "ask",
|
|
"chmod -R*": "ask",
|
|
"chown *": "ask",
|
|
"shutdown*": "ask",
|
|
"reboot*": "ask",
|
|
"poweroff*": "ask"
|
|
}
|
|
}
|
|
}
|