blog
providersconfigurationSixteen providers behind one seam
· par Kerem Aslan · 1 min de lecture · Les billets sont écrits en anglais ; la page qui les entoure suit votre langue.
A coding agent that only speaks to one provider is a coding agent with a single point of failure and a single invoice. rovecode speaks to sixteen, and to anything else that accepts the OpenAI request shape, through one file.
The file
~/.rovecode/providers.json is a list. Each entry names a provider, a model, and where the key comes from — an environment variable, never the file itself. The order is the fallback order: when the first entry refuses a request, the second is tried, and only when the list is exhausted are you asked what to do.
[
{ "provider": "anthropic", "model": "claude-sonnet-5", "key": "ANTHROPIC_API_KEY" },
{ "provider": "openai-compatible", "url": "http://localhost:11434/v1", "model": "qwen2.5-coder" }
]
Live reload
The registry watches the file. Save it, and the next request uses the new list — no restart, no lost session. Switching from a hosted model to a local one mid-task is an edit, not a ceremony.
Local runtimes are not second class
Ollama, LM Studio and llama.cpp are in the list beside the hosted names, and the cockpit treats them the same: the usage panel shows context, the approval card shows argv, the session tree records the run. The pricing catalog knows they cost nothing, and says so.
What the seam does not do
It does not translate between tool-calling dialects beyond the OpenAI shape, and it does not retry a request the model answered badly — a wrong answer is not a refusal. Both are deliberate: the seam is for availability, and the policy layers are for correctness.