Shared Endpoint Settings
This page describes the shared configuration settings for all endpoints. The settings highlighted here are available to all configurations under the "Endpoints" field unless noted otherwise.
Example Configuration
endpoints:
# Individual endpoint configurations
openAI:
streamRate: 25
titleModel: 'gpt-4o-mini'
titleMethod: 'completion'
titleTiming: 'immediate'
titlePrompt: "Create a concise title for this conversation:\n\n{convo}"
headers:
X-Gateway-Metadata: '{"user_email":"{{LIBRECHAT_USER_EMAIL}}"}'
azureOpenAI:
streamRate: 35
titleModel: 'grok-3'
titleMethod: 'structured'
titlePrompt: |
Analyze this conversation and provide:
1. A concise title in the detected language (5 words or less, no punctuation or quotation)
2. Always provide a relevant emoji at the start of the title
{convo}
titleConvo: true
anthropic:
streamRate: 25
titleModel: 'claude-3-5-haiku-20241022'
titleMethod: 'completion'
headers:
X-Conversation-Id: '{{LIBRECHAT_BODY_CONVERSATIONID}}'
bedrock:
streamRate: 25
titleModel: 'us.amazon.nova-lite-v1:0'
titleEndpoint: 'anthropic'
google:
streamRate: 1
titleModel: 'gemini-2.0-flash-lite'
titlePromptTemplate: "Human: {input}\nAssistant: {output}"
headers:
X-Gateway-Metadata: '{"user_id":"{{LIBRECHAT_USER_ID}}"}'
assistants:
streamRate: 30
azureAssistants:
streamRate: 30
# Global configuration using 'all' - this applies shared settings across endpoints.
# Most defined values override endpoint defaults; headers are merged and endpoint values win on collisions.
all:
headers:
X-App: 'librechat'
titleConvo: true
titleModel: 'gpt-4.1-nano'
titleTiming: 'immediate'
titlePrompt: |
Analyze this conversation and provide:
1. The detected language of the conversation
2. A concise title in the detected language (5 words or less, no punctuation or quotation)
3. Always provide a relevant emoji at the start of the title
{convo}Important: When using the
allconfiguration, most shared properties you define apply across endpoints. In the example above, theallconfiguration would applytitleConvo,titleModel, andtitlePromptto all endpoints, while individualstreamRatesettings would be preserved since it's not defined inall.headersare merged separately: values fromendpoints.all.headersapply globally, and endpoint-level headers win on key collisions.
streamRate
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| streamRate | Number | The rate at which data is streamed from the endpoint. Useful for controlling the pace of streaming data. | streamRate: 25 |
Default: 1
Allows for streaming data at the fastest rate possible while allowing the system to wait for the next tick
titleConvo
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| titleConvo | Boolean | Enables automatic conversation title generation for this endpoint. | titleConvo: true |
Default: false
Notes:
- When enabled, titles will be generated automatically using the configured title settings
- Must be used in conjunction with
titleModelor the endpoint must have a default model available
Example:
titleConvo: truetitleTiming
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| titleTiming | String | Controls when conversation titles are generated. Valid values: "immediate" or "final". | titleTiming: "immediate" |
Default: "immediate"
Available Values:
"immediate"- Generates the title as soon as the request starts, in parallel with the model response, using the user's first message. Titles usually appear within a second or two."final"- Defers title generation until the full response completes. This preserves the legacy behavior.
Example:
endpoints:
all:
titleTiming: 'immediate'titleModel
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| titleModel | String | Specifies the model to use for titles. | Defaults to system default for the current endpoint if omitted. May cause issues if the system default model is not available. You can also dynamically use the current conversation model by setting it to "current_model". |
Default: System default for the current endpoint
titleMethod
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMethod | String | Controls the method used for generating conversation titles. | Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured") |
Default: "completion"
Available Methods:
"completion"- Uses standard completion API without tools/functions. Compatible with most LLMs."structured"- Uses structured output for title generation. Requires provider/model support."functions"- Legacy alias for "structured". Functionally identical.
Example:
titleMethod: 'completion'titlePrompt
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePrompt | String | Custom prompt for title generation. Must include {convo} placeholder. | Allows full control over how titles are generated. |
Default:
Analyze this conversation and provide:
1. The detected language of the conversation
2. A concise title in the detected language (5 words or less, no punctuation or quotation)
{convo}Notes:
- Must always include the
{convo}placeholder - The
{convo}placeholder will be replaced with the formatted conversation - Can be placed anywhere in the prompt
Example:
titlePrompt: "Create a brief, descriptive title for the following conversation:\n\n{convo}\n\nTitle:"titlePromptTemplate
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePromptTemplate | String | Template for formatting the conversation content that replaces {convo} in titlePrompt. | Must include {input} and {output} placeholders. |
Default: "User: {input}\nAI: {output}"
Notes:
- Must include both
{input}and{output}placeholders {input}is replaced with the user's initial message{output}is replaced with the AI's response- The formatted result replaces
{convo}in the titlePrompt
Example:
titlePromptTemplate: "Human: {input}\n\nAssistant: {output}"titleEndpoint
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| titleEndpoint | String | Specifies an alternative endpoint to use for title generation. | Allows using a different, potentially cheaper model/endpoint for titles. |
Default: Uses the current conversation's endpoint
Accepted Values:
openAIazureOpenAIgoogleanthropicbedrock- For custom endpoints: use the exact custom endpoint name
Example:
# Use Anthropic for titles even when chatting with OpenAI
endpoints:
openAI:
titleEndpoint: 'anthropic'
# Will use anthropic's configuration for title generationmaxToolResultChars
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| maxToolResultChars | Number | Limits the maximum number of characters in tool call results sent to the model. Must be a positive number. | maxToolResultChars: 50000 |
Default: No limit
Notes:
- Helps prevent excessively large tool outputs from consuming too many tokens
- Applies to all tool call results for the endpoint
Example:
endpoints:
all:
maxToolResultChars: 50000headers
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object/Dictionary | Custom request headers forwarded to supported built-in provider endpoints. | Useful for AI gateways and reverse proxies that consume metadata headers while LibreChat keeps provider-native request formatting. |
Supported endpoints: openAI, anthropic, google, and all.
Example:
endpoints:
all:
headers:
X-App: 'librechat'
anthropic:
headers:
X-Conversation-Id: '{{LIBRECHAT_BODY_CONVERSATIONID}}'Notes:
- Values support
${ENV_VAR},{{LIBRECHAT_USER_*}}, and request-body placeholders such as{{LIBRECHAT_BODY_CONVERSATIONID}}. - Endpoint-level headers override
endpoints.all.headerson key collisions. - Provider-managed auth and required beta/protocol headers remain authoritative. Anthropic beta values are merged so custom beta flags do not clobber required provider flags.
- Headers are also forwarded for supported provider model-list requests.
- Use metadata headers behind a gateway or reverse proxy that consumes them. Native provider APIs typically ignore unknown headers.
Notes:
- All settings shown on this page can be configured individually per endpoint or globally using the
allkey - When using the
allconfiguration, it will override the corresponding settings in ALL individual endpoints - The
allkey does not acceptbaseURL - Settings not defined in
allwill preserve their individual endpoint values - For
streamRate: Recommended values are between 25-40 for a smooth streaming experience - Using a higher stream rate is a must when serving the app to many users at scale
Example of Override Behavior:
endpoints:
openAI:
streamRate: 25 # This will be preserved
titleModel: 'gpt-4' # This will be overridden
titleConvo: false # This will be overridden
all:
titleConvo: true
titleModel: 'gpt-3.5-turbo'
# streamRate not defined here, so individual values are keptEndpoint Settings
How is this guide?