Providers¶
Joch routes every model call through the Model Router, which uses pluggable provider adapters. Each provider has its own page covering authentication, capabilities, region / residency, fallback, cost reporting, streaming, and known limits.
-
OpenAI
chat.completionsandresponsesAPIs, structured outputs, tool calling, vision, streaming, reasoning models. -
Anthropic
Messages API, tool use, vision, prompt caching, extended thinking.
-
Google
Vertex AI / Gemini API, tool calling, multimodal, structured outputs.
-
Microsoft Foundry / Azure OpenAI
Azure AI Foundry projects, Azure OpenAI deployments, Entra-ID auth.
-
Ollama
Local model server with OpenAI-compatible endpoint.
-
vLLM
Self-hosted inference server with OpenAI-compatible API.
-
llama.cpp
Lightweight C++ inference server.
What every provider page covers¶
- Authentication shape and Joch
Secretexamples. - Capability vector — what to declare on the
Modelrecord. - Tool calling — JSON-schema or native function-calling conventions.
- Streaming — supported chunk types and how Joch surfaces them.
- Region / residency — how to constrain calls.
- Fallback behavior — when the router falls forward off this provider.
- Cost reporting — how cost is computed per call.
- Known limits and quirks.
Adding a new provider¶
A new provider is a package, not a fork of Joch. Implementations live under pkg/adapters/provider/<name>/. The interface:
interface ProviderAdapter {
capabilities(): CapabilitySet;
respond(request: CanonicalRequest): Promise<CanonicalResponse>;
stream(request: CanonicalRequest): AsyncIterable<CanonicalChunk>;
health(): Promise<HealthSignal>;
}
A provider is supported once it passes the provider conformance suite covering tool calling, structured outputs, streaming, error mapping, and cost attribution.