llm: block in canonic.yaml supports four providers, all behind the same interface.
- openai_compatible
- anthropic
- openai
- github_copilot
Local runtimes (Ollama, vLLM, LM Studio, llama.cpp, TGI) or any hosted OpenAI-compatible endpoint.
base_url is required; a key is optional (local servers typically need none):One interface, any provider
All four are reached through litellm behind one interface; no per-provider branching anywhere else in canonic.tasks: optionally overrides the model per task (draft, reconcile):
Air-gapped mode
Underruntime.air_gapped: true, only a local endpoint (loopback, or an allowlisted host via runtime.allow_cidrs) is accepted; openai, anthropic, and github_copilot all call a fixed public endpoint and are rejected outright in that mode.