LLM providers

Connect the model accounts that Assistant Cloud features use for generation, analysis, and evaluation.

An LLM provider is a named connection to a model account. It holds the credentials and model catalog that Assistant Cloud needs when a feature calls a model, while keeping the credential values out of the dashboard.

A provider can supply a model for thread titles, Intelligence, Evaluators, Assistants, or a harness voice configuration. Each feature records the provider and model it uses, so its runs can be attributed to that model account.

How providers are used

FeatureHow it uses a provider
Thread titlesUses the selected provider and model to name conversations. When no title model is saved, the first model in the provider's stored list is selected.
IntelligenceUses the provider and model chosen in Settings › Intelligence to classify conversations.
EvaluatorsA rule can name a provider and model for its verdicts.
AssistantsEach assistant is bound to a provider and its model configuration.
Harness voiceA harness can hold a voice provider reference.

Configure a provider

LLM providers on the demo project

Choose a preset when it matches your model account. The form renders one credential input for each field in that preset. Fields whose names contain KEY, TOKEN, or SECRET are password inputs.

PresetStored typeCredential fieldsBase URL rule
OpenAIopenaiOPENAI_API_KEYNo base URL field.
AnthropicanthropicANTHROPIC_API_KEYNo base URL field.
Google AIgoogleGOOGLE_GENERATIVE_AI_API_KEYNo base URL field.
xAIxaiXAI_API_KEYNo base URL field.
Mistral AImistralMISTRAL_API_KEYNo base URL field.
GroqgroqGROQ_API_KEYNo base URL field.
Azure AI FoundryazureAZURE_RESOURCE_NAME, AZURE_API_KEYThe deployment host is derived from the resource name.
Amazon Bedrockamazon-bedrockAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGIONNo base URL field.
DeepSeek, Hugging Face, Fireworks AI, Together AI, OpenRouter, NVIDIA, Perplexity, Cerebras, SiliconFlow, Ollama Cloud, Cloudflare AI Gateway, or Cloudflare Workers AIopenai-compatibleThe preset's fields, such as DEEPSEEK_API_KEY, OPENROUTER_API_KEY, or the Cloudflare token, account, and gateway fields.Uses that preset's URL template. A template that reads credentials hides the URL input and derives the URL from those values.
Custom OpenAI Compatibleopenai-compatibleOptional API_KEYA base URL is required.

Form rules

RuleEffect
NameRequired, from 1 to 255 characters. The form shows Name is required when it is empty. A project cannot have two providers with the same name.
Base URLIt must be a valid public HTTPS URL. OpenAI compatible providers require one and the form shows Base URL is required for OpenAI Compatible providers when it is missing.
Primary secret on createA provider type that declares a primary secret requires that field when you create it. The custom OpenAI compatible form keeps API_KEY optional.
Credentials on updateLeave a credential empty to keep its current value. The dashboard does not return stored credential values.
Type or base URL changesSend new credentials in the same save. Otherwise the save is refused with Changing provider type or base URL requires new credentials in the same request. A routing change replaces the credential map. Other credential updates merge with it.
Available modelsThe comma separated Available models field appears only for OpenAI compatible providers. Those are the models this provider declares by hand.

The URL check rejects private hosts. It applies when the provider is created and when its base URL changes, before the cloud stores the connection.

How model discovery works

The dashboard asks the provider for models, then shows the live result when possible. Every outbound request is checked as a public URL, has a five second timeout, and returns null rather than an error if the provider call fails.

Provider typeModel listing request
OpenAI{base URL or https://api.openai.com/v1}/models with bearer authentication.
Anthropic/models?limit=1000 with anthropic-version: 2023-06-01 and x-api-key.
Google AI/models?pageSize=1000 with x-goog-api-key. Only models that support generateContent remain, and the models/ prefix is removed.
xAI, Mistral AI, GroqEach provider's /models endpoint.
Azure AI Foundryhttps://{AZURE_RESOURCE_NAME}.openai.azure.com/openai/deployments?api-version=2023-03-15-preview with api-key. Azure lists deployments rather than models.
Amazon Bedrockhttps://bedrock.{AWS_REGION}.amazonaws.com/foundation-models, signed with AWS credentials. The list keeps only models with TEXT output and ON_DEMAND inference. When no region is supplied, it uses us-east-1.
OpenAI compatible{base URL or preset URL}/models.

The cloud caches a provider's live result for five minutes. The cache is keyed by provider and invalidated when that provider changes. If the live list is unavailable, it falls back to the catalog for the provider key, then to an empty list. Stored compatible-provider models are unioned into the result and the response reports source: "provider" or source: "catalog" so the dashboard can say where the list came from.

Credential storage and audit history

Credential values are encrypted with AES-256-GCM. Each value has a new 12 byte random IV and is stored as enc:<iv_hex>:<ciphertext_hex>; credential names remain in clear text so the cloud can render the needed inputs.

Provider creation, updates, and deletion enter the audit log as provider.create, provider.update, and provider.delete. The audit record includes the name, type, provider key, model list, and credential map. Audit redaction removes credential key names that match api_key, credentials, secret, sha256, or suffix, and a configured base URL is recorded as [redacted].

Costs and limits

The provider key is the catalog identity that the cloud uses for model discovery and pricing. Set it to the preset's catalog key when you need catalog pricing and a catalog fallback. A compatible provider's hand declared models remain available even when the live list is unavailable.

You cannot delete a provider while an assistant still uses it. The dashboard refuses the delete with This provider is currently in use by one or more assistants. Please update or delete the assistants using this provider first. Update or remove those assistants before deleting the provider.

Troubleshooting

What you seeWhyWhat to do
The model list is emptyThe live listing failed, and the provider key has no catalog fallback or the compatible provider has no declared models.Check the credentials and provider URL, then add comma separated models for a compatible provider when it cannot list models itself.
The provider does not list that model when saving Thread titlesThe selected title model is not in the chosen provider's stored model list.Choose a listed model or update the provider's model list.
A private URL is refusedProvider URLs must be public HTTPS URLs.Use a public HTTPS endpoint for the provider.
Thread title runs report provider errorsThe title feature uses the provider credentials and selected model for its model call.Verify the provider credentials, the model list, and the model account's access to that model.