Support matrix · formats and harnesses

What works with Torana.

Torana only sends recognized inference endpoints through its canonical IR and plugin pipeline. Other provider endpoints remain transparent reverse-proxy traffic. “Preserved” below means executable fixtures cover the wire behavior; it does not claim that every model or account enables the provider feature.

Provider formats

FormatInference endpointsStreamingToolsPrompt-cache behaviorKnown boundary
OpenAIPOST …/chat/completions
POST …/responses
SSEPreserved and mutable under explicit grantsprompt_cache_key, prompt_cache_retention, and usage preserved; Responses compaction is opt-inProvider-owned history behind previous_response_id is not rewritten
AnthropicPOST …/messagesSSEStructured use/results and signatures preservedOrdered cache_control breakpoints preservedBoth string and block-array system prompts are accepted
Gemini / Vertex AIPOST …:generateContent
POST …:streamGenerateContent
SSEFunction calls/results, metadata, and signatures preservedcachedContent references and usage preserved; Torana does not manage cache resourcesCaller-supplied API key or bearer auth; ADC/service-account minting is not built in
Gemini Code AssistPOST …:generateContent
POST …:streamGenerateContent
SSEFunction calls/results and signed parts preservedProvider cache references and usage preservedClients without a base-URL setting require Torana’s optional, explicitly configured MITM ingress

Selective interception

Model-list, token-counting, account, quota, status, telemetry, update, MCP, and unknown auxiliary paths do not enter IR and do not run request or response plugins. Real-proxy tests cover auxiliary pass-through for all four formats, including method, path, query, body, permitted headers, upstream status, and response bytes.

Coding harnesses

Harness pathTorana formatAutomated contractManual status
Claude Code via ANTHROPIC_BASE_URLAnthropic MessagesSystem prompts, streaming tool use/results, cache markers, signatures, and auxiliary pass-throughCredentialed normal/tool/resume smoke remains a release gate
Codex custom providerOpenAI ResponsesResponses layout, opaque input items, streaming tools, and model-list pass-throughCredentialed normal/tool/resume smoke remains a release gate
OpenCode / Aider base URLOpenAI or AnthropicThe selected provider wire has automated coverageCredentialed client smoke remains a release gate
Antigravity / Code AssistGemini Code AssistWrapper data, signed parts, cache facts, stream framing, and auxiliary pass-throughCredentialed client smoke remains a release gate

Plugin SDKs

GoABI v1 SDK, helpers, test harness, official plugins, and host conformance.
RustABI v1 bindings and safe wrappers. A clean Rust guest has built, installed, been digest-approved, and executed through the real host path. v0.3.0 is tagged and published as a Go module; the crate is not yet on crates.io, so a Rust guest builds from the tag.
TypeScript / AssemblyScriptNo supported SDK today. WASI alone is insufficient: a guest must also implement Torana’s protobuf ABI, allocator, framed host calls, and hook contract.
Other WASI languagesPossible through the documented raw ABI, but not advertised as supported until a maintained SDK and host-conformance guest exist.

How to read this matrix

Coverage is endpoint-specific: matching a provider name alone is not enough. Use the format and harness rows above to choose your route and distinguish automated wire tests from credentialed client checks.

Implementation evidence: harness boundary ↗ · prompt caching ↗ · benchmarks ↗