Skip to content

ADR-003: Use one OpenAI-compatible provider

  • Status: Accepted
  • Date: 2026-05-11
  • Updated: 2026-07-28

Context

Native adapters for every model provider would require separate request, authentication, error, tool-call, and streaming implementations.

Decision

Keep one general Provider for OpenAI-compatible chat-completions endpoints. Use structural protocols for custom adapters maintained by callers.

The Anthropic Message Batches integration is a separate, narrow client because that asynchronous API does not use the chat-completions shape. It does not change the general provider boundary.

Consequences

  • Pattern code stays independent of provider SDKs.
  • Endpoint and model compatibility are caller configuration.
  • Native Anthropic, Azure deployment, Gemini, and other request shapes are not translated by the default provider.
  • Provider-specific behavior is added only as a bounded integration with a documented reason.

Rejected alternative

A native adapter matrix would broaden compatibility but add an ongoing maintenance surface outside the package's pattern-execution purpose.