← Schema index / Config Reference

providers schema

Canonical generated docsThis section is generated from caco config schema --json. The table below preserves the runtime field path, type, required/default markers, and canonical description for every value in this slice.

Provider credentials and canonical model catalogs — API keys, endpoints, configured models, and discovery overrides.

Field pathTypeRequiredDefaultCanonical description
providerssectionoptionalProvider credentials and canonical model catalogs — API keys, endpoints, configured models, and discovery overrides.
└ providers.openaimapoptionalOpenAI provider.
└ providers.openai.base_urlstringoptionalBase URL.
└ providers.openai.api_key_filestringoptionalPath to file containing API key.
└ providers.openai.api_key_envstringoptionalOPENAI_API_KEYEnv var name for API key.
└ providers.openai.base_url_envstringoptionalOPENAI_BASE_URLEnv var name for base URL.
└ providers.openai.modelslist[string | map]optionalCanonical model catalog for this provider.
└ providers.openai.models.namestringrequiredProvider-scoped model identifier.
└ providers.openai.models.logical_providerstringoptionalCanonical upstream provider that actually serves this model.
└ providers.openai.model_endpointstringoptional/v1/modelsModel list endpoint path.
└ providers.openai.model_discoverymapoptionalPer-provider model discovery overrides.
└ providers.openai.model_discovery.enabledbooloptionaltrueWhether model discovery is enabled.
└ providers.openai.model_discovery.interval_secsu64optional300Polling interval in seconds.
└ providers.openai.model_discovery.timeout_secsu64optional10Per-request timeout in seconds.
└ providers.anthropicmapoptionalAnthropic provider.
└ providers.anthropic.base_urlstringoptionalBase URL.
└ providers.anthropic.auth_token_filestringoptionalPath to file containing auth token.
└ providers.anthropic.auth_token_envstringoptionalANTHROPIC_AUTH_TOKENEnv var name for auth token.
└ providers.anthropic.base_url_envstringoptionalANTHROPIC_BASE_URLEnv var name for base URL.
└ providers.anthropic.modelslist[string | map]optionalCanonical model catalog for this provider.
└ providers.anthropic.models.namestringrequiredProvider-scoped model identifier.
└ providers.anthropic.models.logical_providerstringoptionalCanonical upstream provider that actually serves this model.
└ providers.anthropic.model_endpointstringoptional/v1/modelsModel list endpoint path.
└ providers.anthropic.model_discoverymapoptionalPer-provider model discovery overrides.
└ providers.anthropic.model_discovery.enabledbooloptionaltrueWhether model discovery is enabled.
└ providers.anthropic.model_discovery.interval_secsu64optional300Polling interval in seconds.
└ providers.anthropic.model_discovery.timeout_secsu64optional10Per-request timeout in seconds.
└ providers.googlemapoptionalGoogle/Gemini provider.
└ providers.google.base_urlstringoptionalBase URL.
└ providers.google.api_key_filestringoptionalPath to file containing API key.
└ providers.google.api_key_envstringoptionalGOOGLE_API_KEYEnv var name for API key.
└ providers.google.modelslist[string | map]optionalCanonical model catalog for this provider.
└ providers.google.models.namestringrequiredProvider-scoped model identifier.
└ providers.google.models.logical_providerstringoptionalCanonical upstream provider that actually serves this model.
└ providers.google.model_endpointstringoptional/v1/modelsModel list endpoint path.
└ providers.google.model_discoverymapoptionalPer-provider model discovery overrides.
└ providers.google.model_discovery.enabledbooloptionaltrueWhether model discovery is enabled.
└ providers.google.model_discovery.interval_secsu64optional300Polling interval in seconds.
└ providers.google.model_discovery.timeout_secsu64optional10Per-request timeout in seconds.
└ providers.azuremapoptionalDirect Azure TTS/STT authentication; does not change OpenAI-compatible proxy auth.
└ providers.azure.authstringoptionalkeyDirect Azure authentication: key or entra. No automatic fallback between modes.
└ providers.azure.azstringoptionalazAzure CLI-compatible token broker executable (e.g. az or az-token); invoked without a shell.
└ providers.azure.apistringoptionalopenai-completionsWire API: openai-completions or anthropic-messages; independent of provider identity.
└ providers.azure.base_urlstringoptionalBase URL (e.g. http://localhost:8080/v1).
└ providers.azure.api_key_filestringoptionalPath to file containing API key.
└ providers.azure.api_key_envstringoptionalEnv var name for API key.
└ providers.azure.modelslist[string | map]optionalCanonical model catalog for this provider.
└ providers.azure.models.namestringrequiredProvider-scoped model identifier.
└ providers.azure.models.logical_providerstringoptionalCanonical upstream provider that actually serves this model.
└ providers.azure.model_endpointstringoptional/v1/modelsModel list endpoint path.
└ providers.azure.model_headersmap[string,string]optionalNon-secret model-discovery protocol headers; authentication uses api_key_file/api_key_env.
└ providers.azure.model_discoverymapoptionalPer-provider model discovery overrides.
└ providers.azure.model_discovery.enabledbooloptionaltrueWhether model discovery is enabled.
└ providers.azure.model_discovery.interval_secsu64optional300Polling interval in seconds.
└ providers.azure.model_discovery.timeout_secsu64optional10Per-request timeout in seconds.
└ providers.azure-speechmapoptionalAzure Speech native STT/TTS and separately configured MAI STT provider.
└ providers.azure-speech.resource_idstringoptionalAzure ARM resource ID; required for direct native TTS with providers.azure.auth=entra.
└ providers.azure-speech.base_urlstringoptionalAzure Speech region or resource base URL (e.g. https://eastus.api.cognitive.microsoft.com).
└ providers.azure-speech.api_key_filestringoptionalPath to file containing the Azure Speech subscription key.
└ providers.azure-speech.api_key_envstringoptionalAZURE_SPEECH_API_KEYEnv var name for the API key.
└ providers.azure-speech.base_url_envstringoptionalAZURE_SPEECH_BASE_URLEnv var name for the base URL.
└ providers.azure-speech.api_versionstringoptional2025-10-15Transcription REST API version.
└ providers.azure-speech.localeslist[string]optionalDefault transcription locales (e.g. ["en-US"]).
└ providers.azure-speech.tts_base_urlstringoptionalOptional explicit native TTS endpoint (.../cognitiveservices/v1); derived from base_url region when omitted.
└ providers.azure-speech.maimapoptionalSeparate Azure MAI STT resource binding for mai-transcribe-2 (multipart/form-data transcription API).
└ providers.azure-speech.mai.base_urlstringoptionalAzure MAI resource root (services.ai.azure.com or cognitiveservices.azure.com).
└ providers.azure-speech.mai.base_url_envstringoptionalAZURE_STT_ENDPOINTEndpoint environment variable.
└ providers.azure-speech.mai.api_key_filestringoptionalPath to MAI resource API key file; preferred over environment.
└ providers.azure-speech.mai.api_key_envstringoptionalAZURE_STT_API_KEYAPI key environment variable.
└ providers.azure-speech.mai.deploymentstringoptionalRequired MAI transcription deployment name.
└ providers.localmapoptionalLocal provider configuration for arbitrary model endpoints.
└ providers.local.modelslist[map]optionalRegistered local model endpoints.
└ providers.local.models.namestringrequiredHuman-friendly name for this model configuration.
└ providers.pimapoptionalPi-native provider configuration.
└ providers.pi.github-copilotmapoptionalNative Pi GitHub Copilot provider configuration.
└ providers.pi.github-copilot.auth-filestringoptionalPath to the operator's Pi auth.json file copied into managed Pi workspaces.
└ providers.pi.github-copilot.modelslist[string | map]optionalCanonical GitHub Copilot model catalog for Pi workspaces.
└ providers.pi.github-copilot.models.namestringrequiredProvider-scoped model identifier.
└ providers.pi.github-copilot.models.logical_providerstringoptionalCanonical upstream provider that actually serves this model.
└ providers.pi.modelsmap[string, map]optionalCustom provider declarations for Pi models.json materialization. Keyed by provider name.
└ providers.pi.models.<provider-name>mapoptionalCustom provider entry.
└ providers.pi.models.<provider-name>.apistringoptionalAPI type: anthropic-messages, openai-responses, openai-chat.
└ providers.pi.models.<provider-name>.api_key_envstringoptionalEnvironment variable name for the API key.
└ providers.pi.models.<provider-name>.base_urlstringoptionalBase URL for the provider API.
└ providers.pi.models.<provider-name>.logical_providerstringoptionalCanonical upstream provider for this intermediary (e.g. 'anthropic' for litellm-anthropic). Used for Pi avatar selection.
└ providers.pi.models.<provider-name>.modelslist[string | map]optionalOptional per-model entries with their own logical_provider overrides.
└ providers.pi.models.<provider-name>.models.namestringrequiredProvider-scoped model identifier.
└ providers.pi.models.<provider-name>.models.logical_providerstringoptionalCanonical upstream provider that actually serves this model.
└ providers.<custom>mapoptionalCustom provider with OpenAI-compatible API.
└ providers.<custom>.apistringoptionalopenai-completionsWire API: openai-completions or anthropic-messages; independent of provider identity.
└ providers.<custom>.base_urlstringoptionalBase URL (e.g. http://localhost:8080/v1).
└ providers.<custom>.api_key_filestringoptionalPath to file containing API key.
└ providers.<custom>.api_key_envstringoptionalEnv var name for API key.
└ providers.<custom>.modelslist[string | map]optionalCanonical model catalog for this provider.
└ providers.<custom>.models.namestringrequiredProvider-scoped model identifier.
└ providers.<custom>.models.logical_providerstringoptionalCanonical upstream provider that actually serves this model.
└ providers.<custom>.model_endpointstringoptional/v1/modelsModel list endpoint path.
└ providers.<custom>.model_headersmap[string,string]optionalNon-secret model-discovery protocol headers; authentication uses api_key_file/api_key_env.
└ providers.<custom>.model_discoverymapoptionalPer-provider model discovery overrides.
└ providers.<custom>.model_discovery.enabledbooloptionaltrueWhether model discovery is enabled.
└ providers.<custom>.model_discovery.interval_secsu64optional300Polling interval in seconds.
└ providers.<custom>.model_discovery.timeout_secsu64optional10Per-request timeout in seconds.