Capabilities
Provider Capability Matrix
Per-feature compatibility tables comparing upstream provider APIs to pi-go's implementation
Read this when
- Choosing a provider for a feature
- Planning new provider work
- Auditing pi-go gaps against upstream APIs
This folder documents pi-go’s coverage of upstream provider features. Each page contains a compatibility matrix, links to official provider documentation, and a list of current gaps in pi-go.
Providers covered:
- Anthropic — Messages API (pkg/ai/provider/anthropic)
- OpenAI Chat — Chat Completions API (pkg/ai/provider/openai)
- OpenAI Responses — Responses API (pkg/ai/provider/openairesponses)
- OpenRouter — Responses-API dialect of the same package (openrouter-dialect)
- Google — Gemini API (pkg/ai/provider/google)
- Claude CLI —
claudesubprocess (pkg/ai/provider/claudecli) - Codex CLI —
codexsubprocess (pkg/ai/provider/codexcli) - Cursor CLI —
cursorsubprocess (pkg/ai/provider/cursorcli)
Pages
Inputs & Outputs
- Streaming — SSE / event-stream consumption
- Multimodal Input — images, documents, audio, video
- Multimodal Output — image generation, audio (TTS)
- Citations — inline source attribution
- Structured Outputs — JSON mode and schema enforcement
Tools
- Function Calling — client-side tools, parallel calls, tool choice
- Server-Side Tools — web search/fetch, code execution, computer use, bash, text editor, file search, tool search, MCP
Reasoning & Optimization
- Reasoning — thinking budgets, encrypted reasoning passthrough
- Prompt Caching — TTL, breakpoints, session affinity
Sampling
- Sampling Controls — temperature, top-p/k, penalties, stop, seed, logprobs, safety
Auth & Lifecycle
- Authentication — API keys, OAuth, service accounts, cloud endpoints
- Files API — uploaded-file references
- Stateful Conversations — provider-managed session state
- Async Execution — Batch API, background mode
- Realtime / Live API — bidirectional streaming
- Fine-Tuning — custom-model training
Legend
Compatibility tables use:
- ✅ supported
- ⚠️ partial / preview / behind a flag
- ❌ not supported
- — not applicable
Where helpful, columns split into API (upstream support) and pi-go (wired up in this SDK), with caveats and file:line references in the Notes column.