LLM Providers

One interface, and your keys stay yours

Adapters normalise each provider to one canonical request and response. Your credentials are resolved at the moment a provider is called — never carried through the planner, never written to a manifest, never logged.

ProviderStatusNotes
AnthropicavailableChat, streaming, tool calls. Real list pricing with recorded provenance.
OpenAIadapter readyAdapter implemented; ships with no pricing rows, so endpoints fail closed under a cost ceiling until priced.
Self-hosted / OpenAI-compatiblesupportedAny endpoint speaking the same shape drops in via a base URL — required where a data class must not leave your estate.
MocktestingDeterministic adapter for CI. Excluded from quality measurement, because a mock's grades describe the harness, not a model.

Differences we refuse to paper over

Unsupported parameters are omitted, not guessed

Sampling parameters differ by model — some current models reject a temperature outright. Capability flags drive what is sent, defaulting to omit when unknown: omitting an optional parameter degrades a request, sending an unsupported one fails it.

A 429 means two different things

Rate-limited means back off and retry. Out of credit means retrying cannot possibly work — and marking it retryable sends the fallback chain through every remaining endpoint to reproduce the same failure. We distinguish them.

Truncation is not a wrong answer

A thinking model that spends its whole budget reasoning returns no text. That is a mis-provisioned request, not evidence about the model, so it is excluded from quality measurement rather than graded as a failure.

Bring your own key

No markup, because Planverity never holds your provider balance.

Get started