Skip to main content

Provider Reference

EstaCoda routes every inference request through a provider. This page lists every provider EstaCoda knows about, what maturity label it carries, and what that label means in practice. The label decides what you can claim, what you can debug, and what you should not expect.

A provider being "known" does not mean it is runnable. A provider being "registered" does not mean it is validated. Check the label before you configure.


Maturity Labels

LabelMeaningWhat you can do
live-provenConfigured, tested, and validated in realistic usage.Set it as a primary route with confidence.
implementedCode exists, credentials resolve, and requests execute. Not yet validated in sustained live use.Set it up and test it. Report gaps.
configurableAppears in setup/model selection and has runnable adapter support, but may not be live-proven.Configure it if you are testing or extending.
catalog-knownRegistered in the offline model catalog. No runnable inference adapter in the current build.Not a primary route for v0.1.0.
experimentalGated behind feature flags or unstable by design.Enable explicitly. Expect breakage.
unsupportedNo implementation. No adapter. No claim.Do not configure.

Labels are cumulative downward. A live-proven provider is also implemented. A catalog-known provider is not configurable for inference.


LLM Providers

ProviderMaturityNotes
Kimilive-provenPrimary validation target. Tool-call exactness verified.
OpenAIlive-provenChat completions and responses modes both supported.
DeepSeeklive-provenValidated for chat completions with tool schema.
OpenRouterlive-provenRuntime works. Tool-call exactness is occasionally inconsistent; monitor for routing edge cases.
CodeximplementedConfigure from the model picker by choosing OpenAI -> Codex, from Setup Editor primary/fallback route edits, or via estacoda model setup codex. Uses OAuth, provider codex, default model gpt-5.5, auth method oauth_device_pkce, and API mode openai_responses. Excluded from first-run onboarding and auxiliary route OAuth setup in this pass.
GoogleconfigurableCatalog-enriched. Inference adapter exists but live validation is limited in this build.
Anthropiccatalog-knownMetadata and catalog entries exist, but it is not exposed as a setup/model-picker route and is not runnable as a primary LLM route in this build.
MiniMaxcatalog-knownRegistered in model catalog. Not runnable in the current build.
Nouscatalog-knownRegistered in model catalog. Not runnable in the current build.
Local / Custom EndpointimplementedBuilt-in local provider for Ollama, LM Studio, llama.cpp, vLLM, LiteLLM, or another OpenAI-compatible local/custom endpoint. Defaults to http://localhost:11434/v1, authMethod: "none", and optional API key env OPENAI_COMPATIBLE_API_KEY.
Custom (OpenAI-compatible)implementedAny non-built-in provider ID with an explicit baseUrl is treated as custom OpenAI-compatible. Requires baseUrl. Default API key env is OPENAI_COMPATIBLE_API_KEY. Use this when you need a separate named provider identity instead of local.
unconfiguredunsupportedPlaceholder. Not runnable.

API Execution Modes

The following API modes are executable by current code:

  • openai_chat_completions
  • custom_openai_compatible
  • openai_responses

Auth Methods

  • apiKey — read from apiKeyEnv at runtime
  • none — no credentials required
  • oauth_device_pkce — Codex OAuth device-code flow

Request Timeouts

Primary and fallback LLM routes use a total timeout and a stale/no-progress timeout:

FieldDefaultNotes
timeoutMs1800000Total provider request budget.
staleTimeoutMs120000Time-to-response-headers for non-streaming calls; time between received bytes for streaming calls.

Precedence is route-specific: model or fallback route value, then providers.<id> value, then the built-in default. Auxiliary model routes keep their existing auxiliaryModels.*.timeoutMs behavior and do not gain stale-timeout controls in this implementation. CLI setup commands do not expose provider timeout flags; configure these values in the selected profile config.


Voice Providers

TTS (Text to Speech)

ProviderMaturityNotes
OpenAIlive-provenHosted TTS. Requires OPENAI_API_KEY.
ElevenLabslive-provenHosted TTS. Requires ELEVENLABS_API_KEY.
MiniMaxlive-provenHosted TTS.
Geminilive-provenHosted TTS.
xAIlive-provenHosted TTS.
EdgeimplementedMicrosoft Edge TTS. No API key required, but synthesis text is sent over the network to Microsoft's Edge speech service. Not local/offline.
MistralexperimentalDeferred for v0.1.0. Gated.
Local TTSunsupportedneutts and kittentts are deferred in this build.

STT (Speech to Text)

ProviderMaturityNotes
OpenAIlive-provenHosted STT.
Groqlive-provenHosted STT.
xAIlive-provenHosted STT.
localimplementedManaged faster-whisper by default for stt.provider: "local"; command engine with explicit stt.local.engine: "command". Gateway faster-whisper model downloads follow allowModelDownload by default and can be blocked with gatewayAllowModelDownload: false.
MistralexperimentalDeferred for v0.1.0.

Image Generation Providers

ProviderMaturityNotes
FALlive-provenDefault image generation provider. Requires FAL_KEY.
BytePlus / Seedreamlive-provenRequires BYTEPLUS_ARK_API_KEY; reviewed setup can also reuse an existing ARK_API_KEY.
OpenAI / GPT Imagelive-provenRequires OPENAI_API_KEY; reviewed setup can reuse an existing selected-profile OpenAI credential env var.

Web Research Providers

Brave Search and DDGS are implemented search providers. fetch is the guarded extraction baseline. The remaining named providers are registered stubs.

ProviderCapabilities DeclaredMaturityNotes
fetchextractlive-provenGuarded built-in extraction fallback. No API key required.
BravesearchimplementedLive Brave Search API provider. Requires an env reference under web.brave.apiKeyEnv, defaulting to BRAVE_SEARCH_API_KEY.
DDGSsearchimplementedLive subprocess provider backed by the managed Python capability ddgs. Run estacoda python-env setup ddgs before use.
Firecrawlsearch, extract, crawlunsupportedRegistered stub. Unavailable even when configured.
ParallelsearchunsupportedRegistered stub.
Tavilysearch, extractunsupportedRegistered stub.
ExasearchunsupportedRegistered stub.
SearXNGsearchunsupportedRegistered stub.

web.search can use Brave or DDGS when the selected provider is available. web.extract falls back to the guarded fetch extractor only when no explicit unavailable extract provider was configured and no available extract provider was auto-detected. web.crawl exists as tool infrastructure, but no live crawl provider is implemented.

Provider selection checks web.searchBackend, web.extractBackend, or web.crawlBackend first, then web.backend, then auto-detects available providers. Explicit unavailable providers do not silently fall back.


Cloud Browser Providers

ProviderMaturityNotes
local-cdplive-provenLocal Chrome DevTools Protocol. Supervised mode is opt-in.
mockimplementedTest backend. No real browser.
BrowserbaseimplementedCloud browser backend. Requires credentials and explicit cloud spend approval.
browser-useunsupportedRegistered stub. Not implemented.
Firecrawl (browser)unsupportedRegistered stub. Not implemented.
CamofoxunsupportedRegistered stub. Not implemented.

Browserbase requires BROWSERBASE_API_KEY, BROWSERBASE_PROJECT_ID, and explicit browser.cloudSpendApproved: true before cloud sessions can be created. estacoda browser approve-cloud approves billable session creation, and estacoda browser revoke-cloud blocks it again. Browserbase direct provider-registry createSession() calls still throw because cloud spend approval is enforced through the browser backend. Legacy browser.backend values firecrawl and camofox remain accepted for compatibility but report unavailable status.


Auxiliary Model Slots

Auxiliary routes are preference constructs, not separate runtimes. They resolve through the same provider infrastructure as the primary route.

SlotPurposeMaturity
visionImage analysisimplemented
compressionSemantic session compressionexperimental
assessorSecurity smart approval classifierimplemented
web_extractWeb extractionimplemented
session_searchSession semantic search / recallimplemented
mcpMCP tool delegationimplemented
memory_flushMemory operationsimplemented
delegationSubagent delegationimplemented
skills_librarySkills distributionimplemented
title_generationSession title generationimplemented
curatorMemory curationimplemented
memory_compactionMemory file compactionimplemented
profile_contextProfile context generationimplemented

Unsupported auxiliary task names throw during config normalization. Config should not use legacy names such as models.auxiliary, auxiliary.default, or auxiliary.contextualize.

Delegated child modelOverride requests use configured provider routes only. Same-provider and reviewed cross-provider child overrides preserve target provider config, use existing apiKeyEnv credentials, respect authMethod: "none", reject enableNetwork: false before execution, and disable fallback routes for the overridden child. They do not introduce credential pools or mutate parent/session/profile routes.


Unsupported in v0.1.0

The following are explicitly out of scope for this release:

  • Runnable Anthropic Messages API adapter as a primary route
  • Runnable MiniMax or Nous LLM adapters
  • Live web search via Firecrawl, Parallel, Tavily, Exa, or SearXNG
  • Live cloud browser sessions via browser-use, Firecrawl, or Camofox
  • Arbitrary external memory providers configured by name without a built-in implementation