BerriAI/litellm · error · NotImplementedError
Provider '{provider}' not supported for Focus export configu
Error message
Provider '{provider}' not supported for Focus export configuration What it means
The factory is an explicit allow-list dispatcher: it only knows 's3', 'vantage', 'gcs', and 'mavvrik'. Any other provider string falls through to raise NotImplementedError with the offending value interpolated. This is a programming/config error, not an environment issue.
Source
Thrown at litellm/integrations/focus/destinations/factory.py:83
raise ValueError("VANTAGE_INTEGRATION_TOKEN must be provided for Vantage exports")
return {k: v for k, v in resolved.items() if v is not None}
if provider == "gcs":
resolved = {
"bucket_name": overrides.get("bucket_name") or os.getenv("FOCUS_GCS_BUCKET_NAME"),
"service_account_json": overrides.get("service_account_json")
or os.getenv("FOCUS_GCS_PATH_SERVICE_ACCOUNT"),
}
if not resolved.get("bucket_name"):
raise ValueError("FOCUS_GCS_BUCKET_NAME must be provided for GCS exports")
return {k: v for k, v in resolved.items() if v is not None}
if provider == "mavvrik":
resolved = {
"api_key": overrides.get("api_key") or os.getenv("MAVVRIK_API_KEY"),
"api_endpoint": overrides.get("api_endpoint") or os.getenv("MAVVRIK_API_ENDPOINT"),
"connection_id": overrides.get("connection_id") or os.getenv("MAVVRIK_CONNECTION_ID"),
}
return {k: v for k, v in resolved.items() if v is not None}
raise NotImplementedError(f"Provider '{provider}' not supported for Focus export configuration")
View on GitHub (pinned to 6c2dcb801b)
Solutions
- Use exactly one of: s3, vantage, gcs, mavvrik (lowercase).
- Strip and lowercase the provider string before passing it: provider.strip().lower().
- If you need a provider the code doesn't support, upgrade LiteLLM to the latest version and re-check the allow-list in factory.py.
- As a last resort, implement a custom FocusDestination subclass instead of relying on the factory.
Example fix
# before
provider = config["provider"] # e.g. 'S3' or 'azure'
# after
provider = config["provider"].strip().lower()
assert provider in {"s3", "vantage", "gcs", "mavvrik"}, f"unsupported: {provider}" Defensive patterns
Strategy: type-guard
Validate before calling
SUPPORTED = {"s3", "vantage", "gcs", "mavvrik"}
provider = raw_provider.strip().lower()
if provider not in SUPPORTED:
raise ValueError(f"Unsupported Focus export provider '{raw_provider}'; choose from {sorted(SUPPORTED)}") Type guard
def is_supported_focus_provider(provider: str) -> bool:
return provider.strip().lower() in {"s3", "vantage", "gcs", "mavvrik"} Try / catch
try:
cfg = focus_destination_config(provider=provider, overrides=overrides)
except NotImplementedError as e:
fail_fast(f"Config bug: {e}") # do not retry; this is deterministic Prevention
- Normalize the provider string (strip + lower) at the config boundary.
- Pin your LiteLLM version and re-check the factory allow-list when upgrading before using new provider names.
When it happens
Trigger: Calling the factory with a typo'd or unsupported provider, e.g. 'google_cloud', 'S3' (case-sensitive), 'azure', 'vantage-cloud', or a future provider on an older LiteLLM version that doesn't support it yet.
Common situations: Case mismatch ('S3' vs 's3'); referencing a provider added in a newer LiteLLM release than the one installed; copying a provider name from another tool's config format; trailing whitespace in the provider string.
Related errors
- prompt_id is required for BitBucket prompt manager
- FOCUS_S3_BUCKET_NAME must be provided for S3 exports
- VANTAGE_API_KEY must be provided for Vantage exports
- VANTAGE_INTEGRATION_TOKEN must be provided for Vantage expor
- FOCUS_GCS_BUCKET_NAME must be provided for GCS exports
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/fd5adebb6e266348.
Report an issue: GitHub.