# Providers and Models

> How Agent Stream uses provider adapters and a hot-reloadable catalogue to select models, pricing, capabilities, and request profiles for LLM Surfaces.

Hard-coding a provider’s SDK, pricing, and capability quirks into every application makes it slow and risky to add a new model or switch vendors. Agent Stream reaches a broad set of LLM providers through a catalogue of provider adapters. An LLM Surface selects a provider and model when it is configured, or defers that choice to a Decider or load balancer at request time. The catalogue supplies pricing, capabilities, and request profiles, so a new model can be onboarded through configuration. [Surface Variants →](/products/affinidi-trust-fabric/agent-stream/concepts/variants-and-rollout.md)

## Provider

A provider is the vendor adapter behind an LLM Surface. Native providers include OpenAI, Anthropic, Google Gemini, AWS Bedrock, Azure OpenAI, Microsoft 365 Copilot, and Ollama.

First-class OpenAI-compatible presets include Groq, xAI, OpenRouter, Fireworks, Cerebras, DeepSeek, Moonshot (Kimi), SambaNova, Hyperbolic, NVIDIA NIM, and Nebius. A Custom provider accepts any OpenAI-compatible endpoint URL.

## Model

A model is a specific identifier within a provider’s catalogue, such as gpt-5.5 on OpenAI, claude-sonnet-4-6 on Anthropic, or gemini-3.5-flash on Google Gemini. The catalogue supplies each model’s input-token, output-token, and optional prompt-cache pricing, as well as capabilities such as streaming, tools, and vision, and any request-profile transforms the provider needs.

## Catalogue

The catalogue is the hot-reloadable provider and model configuration file, llm.json. It supplies provider request profiles, model pricing, and capabilities. Editing and reloading the catalogue makes a new model available across every LLM Surface without a code change.

## Provider presets

A provider preset is a first-class shortcut for an OpenAI-compatible provider, such as Groq or Fireworks. It supplies the base URL and default headers, so an operator only needs to configure the key. Presets turn an OpenAI-compatible URL into a ready-to-select provider choice.

## Custom provider

A custom provider is an OpenAI-compatible endpoint not covered by a preset. An administrator adds it once, as JSON, in the LLM Providers catalogue: a unique identifier, display name, base URL, and the label to show for its API key field. Once saved, it appears in every provider picker across the appliance exactly like a built-in provider, and any surface can select it. There is no separate base-URL or authentication-header field to fill in per surface: a custom provider authenticates through the same secret-reference pattern as every other provider.

## How Microsoft 365 Copilot grounds answers without exposing raw documents

Microsoft 365 Copilot is a specialized provider adapter, m365_copilot. Agent Stream translates an incoming OpenAI chat call into a Microsoft 365 Copilot Chat API call made as the signed-in user, forwarding a delegated Entra token through identity pass-through.

Copilot grounds its response on the user’s OneDrive, SharePoint, mail, and calendar content while respecting their Entra access control lists. It returns only the synthesized answer: the agent, editor, and Agent Stream do not receive the raw documents.

## Related

- [LLM Surface →](/products/affinidi-trust-fabric/agent-stream/concepts/surfaces.md#llm-surface): The governed provider connection that selects a provider and model.

- [Providers →](/products/affinidi-trust-fabric/agent-stream/reference/surfaces/providers.md): Field-level provider configuration and parameter override behavior.

- [Resilience and caching →](/products/affinidi-trust-fabric/agent-stream/concepts/resilience-and-caching.md): How Deciders, load balancing, and failover select or protect provider calls.

- [Pipeline and stages →](/products/affinidi-trust-fabric/agent-stream/concepts/pipeline-and-stages.md): Where the Decider selects a route in the overall stage order.

- [Surface Variants →](/products/affinidi-trust-fabric/agent-stream/concepts/variants-and-rollout.md): How a variant can override a surface’s provider or model.
