skyl ships four adapters. Three are native — written against a specific vendor's API at full fidelity. One is generic, and reaches the long tail of hosts that speak OpenAI's wire format.
The four#
| Adapter | Module | Go | Reaches |
|---|---|---|---|
| provider/anthropic | its own | 1.24 | Claude Opus 5, Fable 5, Sonnet 5, Haiku 4.5, and the 4.x family |
| provider/openai | core | 1.22 | GPT-5.6 (Sol, Terra, Luna), GPT-5.5, GPT-5.4 nano, the o-series, and gpt-oss |
| provider/gemini | core | 1.22 | Gemini 3.6 Flash, 3.5/3.1 Flash-Lite, and 3 Pro |
| provider/openaicompat | core | 1.22 | ~18 hosts including xAI, DeepSeek, Groq, OpenRouter, Ollama, vLLM and LM Studio |
Choosing between them#
Use a native adapter when you want a vendor's deep features and its exact
error semantics. Concretely: Anthropic is the only adapter that emits
EventThinkingDelta, reports CacheWriteTokens, or delivers
ToolResult.IsError faithfully. Gemini is the only one where Request.Thinking
maps completely.
Use openaicompat for reach — roughly eighteen hosts, including local
runtimes that need no credential at all. OpenRouter alone brokers 300+ models,
so this single adapter puts the realistic reachable total in the hundreds.
Where they differ#
The feature matrix documents every field, per adapter, in four states: mapped, rejected, silently ignored, and not applicable. The third is the one worth reading — it is where skyl accepts something and quietly does not do it.
There are fourteen such cases, and they are published in one list rather than discovered in production.
Writing your own#
Provider is four methods, and nothing in skyl
privileges the in-tree adapters. An adapter in your own repository inherits
retry, hooks, validation and the gateway with no changes to skyl. See
Writing an Adapter.