Models and MCP servers are discovered from the LiteLLM gateway at sync time
(/v1/models, and the aggregate /mcp/ endpoint). Skills have no gateway side to
query: LiteLLM's /v1/skills is a passthrough to Anthropic's Skills API, which
lists skills on an Anthropic account rather than serving skill files, and
/public/skill_hub is a marketplace catalog. So the repo is the source of truth
and the tree is fetched whole, from the repo tarball.
Deploy to ~/.config/mcp-sync/skills rather than ~/.config/opencode/skills so
the atomic replace can never delete a skill the user wrote by hand; opencode
picks the tree up via skills.paths, which expands {env:HOME} — verified — so
the shared config stays identical for every user.
Same throttle and non-fatal discipline as the config sync: a fetch that yields
no skills/ leaves the last-good tree in place instead of emptying it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
602 B
JSON
28 lines
602 B
JSON
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"covert-gpt": {
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"name": "covert-gpt (LiteLLM)",
|
|
"options": {
|
|
"baseURL": "https://llm.covert-gpt.com/v1",
|
|
"apiKey": "{env:LITELLM_KEY}"
|
|
},
|
|
"models": {}
|
|
}
|
|
},
|
|
"mcp": {
|
|
"covert-gpt": {
|
|
"type": "remote",
|
|
"url": "https://llm.covert-gpt.com/mcp/",
|
|
"enabled": true,
|
|
"headers": {
|
|
"Authorization": "Bearer {env:LITELLM_KEY}"
|
|
}
|
|
}
|
|
},
|
|
"skills": {
|
|
"paths": ["{env:HOME}/.config/mcp-sync/skills"]
|
|
}
|
|
}
|