Folds in the in-flight local-checkout work and fixes the context accounting
on top of it. Both halves are the same bug seen from two ends: clients were
sending requests larger than the backend's window and getting hard
ContextWindowExceededError 400s, intermittently, in a way that looked like
the model or the GPU misbehaving.
Already in flight here (unchanged in intent):
- sync.sh prefers the LOCAL CHECKOUT over re-downloading from Gitea, and
install.sh records the checkout path so it can be found. That recording
is load-bearing: without it sync.sh cannot find the repo, silently falls
back to Gitea, and every local edit to opencode.gateway.json is ignored.
Observed on this box — ~/.config/mcp-sync/source did not exist, the
default ~/.dotfiles is not where the checkout lives, and the Gitea base
still served models:{}.
- the hermes custom-provider wiring.
Fixed on top:
opencode had NO context limit on ANY gateway model, not a wrong one. Two
faults compounded. /model/info 403s for a day-to-day virtual key (only
management-scoped keys may read it), which sync.sh treats as best-effort and
falls back to names-only — as designed and as commented. But the merge then
did `prov["models"] = models`, replacing the map wholesale, so limits
declared in the base config were discarded too and there was no floor left.
Base specs are now a floor that live /model/info overrides field by field:
discovery still wins where present, so this adds no drift, and a 403 no
longer strips the limits. Verified: ornith 195584/32768, the qwens
261120/32768.
hermes' model map named `qwen3-vl-30b-a3b` at 262144 — a model the gateway
stopped serving when Ornith replaced it — while ornith-1.0-35b, the model
actually on cg-1 AND the only one with a window smaller than its neighbours
(196608), had no entry at all and inherited Hermes' default. The one model
needing a lower ceiling was the one not declaring one, which is exactly the
shape that fails only once a session grows.
NOTE for other boxes: hermes reads ~/.hermes/config.yaml, which install.sh
produces by MERGING gateway.yaml. Editing gateway.yaml alone changes nothing
until install.sh re-runs — this machine's live config was patched by hand.
Not addressed here, deliberately: the gateway-side context_window_fallback
(ai-k8s-iac). It is wired but inert while cg-2 is scaled down, so preventing
the oversized request client-side is what actually works today.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FoDK4wwB1Twty5gwiriYLf
70 lines
1.5 KiB
JSON
70 lines
1.5 KiB
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": {
|
|
"ornith-1.0-35b": {
|
|
"limit": {
|
|
"context": 195584,
|
|
"output": 32768
|
|
}
|
|
},
|
|
"qwen3.8-27b": {
|
|
"limit": {
|
|
"context": 261120,
|
|
"output": 32768
|
|
}
|
|
},
|
|
"qwen3-coder-next": {
|
|
"limit": {
|
|
"context": 261120,
|
|
"output": 32768
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"mcp": {
|
|
"gitea": {
|
|
"type": "local",
|
|
"command": [
|
|
"npx",
|
|
"-y",
|
|
"gitea-mcp@0.0.10"
|
|
],
|
|
"enabled": true,
|
|
"environment": {
|
|
"GITEA_HOST": "https://git.nic-oconnor.com",
|
|
"GITEA_ACCESS_TOKEN": "{env:GITEA_KEY}"
|
|
}
|
|
},
|
|
"proxmox": {
|
|
"type": "local",
|
|
"command": [
|
|
"npx",
|
|
"-y",
|
|
"proxmox-mcp-server@0.2.0"
|
|
],
|
|
"enabled": true,
|
|
"environment": {
|
|
"PROXMOX_HOST": "https://prox-01.covert-cloud.com:8006",
|
|
"PROXMOX_TOKEN_ID": "{env:PROXMOX_TOKEN_ID}",
|
|
"PROXMOX_TOKEN_SECRET": "{env:PROXMOX_TOKEN_SECRET}",
|
|
"PROXMOX_INSECURE_TLS": "true",
|
|
"PVE_READONLY": "false"
|
|
}
|
|
}
|
|
},
|
|
"skills": {
|
|
"paths": [
|
|
"{env:HOME}/.config/mcp-sync/skills"
|
|
]
|
|
}
|
|
}
|