Files
librechat.ai/content/docs/configuration/librechat_yaml/object_structure/config.mdx
Danny Avila 9e1a0db393 rel/v0.8.3-rc1-v2 (#504)
* chore: update GitHub Actions workflow to use latest action version for improved stability

* chore: update roadmap references and enhance documentation for AWS Bedrock inference profiles

- Updated footer menu and card icons to reflect the 2026 roadmap.
- Adjusted default values in changelog and configuration documentation for `maxRecursionLimit`.
- Added comprehensive documentation for AWS Bedrock inference profiles, including setup, configuration, and examples.
- Introduced Agents API documentation for programmatic access to LibreChat agents.
- Enhanced existing documentation for clarity and consistency across various sections.

* feat: release Config v1.3.4 with new features and updates

- Introduced `create` field in `interface.prompts` and `interface.agents` for enhanced user control.
- Added `interface.remoteAgents` configuration for managing remote agent permissions.
- Updated `endpoints.bedrock` with `models` and `inferenceProfiles` for better customization.
- Included Moonshot as a known endpoint for AI integration.
- Introduced new agent capabilities: `deferred_tools` and `programmatic_tools`.
- Removed deprecated `forcePrompt` setting from configurations.
- Updated default model lists and added support for new models.
- Enhanced `modelSpecs` with `artifacts` field and `effort` parameter for Anthropic models.

* refactor: update BlogHeader to use usePathname for route handling

- Replaced useRouter with usePathname for improved routing in BlogHeader component.
- Simplified page retrieval logic by directly using pathname for matching routes.

* feat: add changelog for v0.8.3-rc1 release with new features and fixes

- Introduced several enhancements including event-driven lazy tool loading, token usage tracking, and programmatic tool calling UI.
- Added support for new models and providers, including Claude Opus 4.6 and Moonshot.
- Implemented various bug fixes and improvements for better user experience and performance.

* chore: nextjs artifact

* first draft roadmap

* feat: enhance BlogPage with Open Graph image support and layout improvements

- Added support for Open Graph images in blog entries to improve visual presentation.
- Refactored article layout for better structure and readability, including adjustments to the display of metadata and content.
- Updated styles for improved user experience during hover interactions.

* feat: enhance BlogPage with date formatting and layout adjustments

- Added a new dateFormatted field to entries for improved date display.
- Implemented a date formatter for consistent date presentation.
- Refactored article layout to use a grid system for better responsiveness.
- Updated styles for article links and metadata for enhanced user experience.

* feat: add responsive image sizes to BlogPage for improved layout

- Included sizes attribute for Open Graph images to enhance responsiveness on different screen sizes.

* feat: update feature titles and descriptions for clarity

- Changed titles for "Forking Messages and Conversations" to "Forking Chats" and "Memory" to "User Memory" for better alignment with functionality.
- Updated descriptions for "Message Search" and "Upload as Text" to enhance understanding of features.

* chore: update configuration version to 1.3.4 across multiple documentation files

- Updated the version number in `librechat.yaml` examples to reflect the latest release (1.3.4) in various configuration and feature documentation files.

* feat: enhance User Memory documentation for clarity and detail

- Updated the description to clarify that User Memory is a key/value store that operates on every chat request.
- Added a callout to distinguish between key/value storage and conversation memory.
- Expanded on the functionality of the memory agent, including its execution process and user control features.
- Introduced a section on future improvements for the memory agent's efficiency and relevance.

* feat: update title and description for NGINX documentation

- Changed the title from "Secure Deployment with Nginx" to "NGINX" for brevity.
- Updated the description to provide a clearer overview of the guide's purpose in securing LibreChat deployment with Nginx as a reverse proxy and HTTPS.

* feat: update 2026 roadmap with key accomplishments and future plans

- Celebrated LibreChat's 3rd anniversary with a summary of achievements from 2025, including growth in GitHub stars and community engagement.
- Clarified the timeline for open-sourcing the Code Interpreter API by the end of Q1.
- Revised notes on the v1 Admin Panel's core capabilities and community-driven items for better clarity and detail.

* feat: enhance blog and author components with Open Graph image support

- Added optional `ogImagePosition` field to blog entries for better image placement control.
- Updated BlogPage and individual post pages to utilize the new `ogImagePosition` for responsive image styling.
- Improved Author component to conditionally render author images based on availability.
- Updated 2026 roadmap blog post with a new Open Graph image and position for enhanced visual appeal.

* feat: enhance CardComponent with icon support and layout improvements

- Added optional `icon` prop to CardComponent for better visual representation.
- Updated CardComponent layout to include icon alongside title and children.
- Improved styling for CardComponent and CardsBase for enhanced responsiveness and user experience.

* feat: update 2026 roadmap with detailed focus areas and community-driven items

- Added sections for Q1 and Q2 focus areas, outlining major initiatives like Dynamic Context and Admin Panel.
- Enhanced clarity on community-driven items and their prioritization based on GitHub reactions.
- Included hiring information to attract full-stack developers for ongoing project support.
- Improved overall structure and readability of the roadmap content.

* fix: improve icon styling in CardCompat component for better responsiveness

- Updated icon container styling to ensure consistent height and width for SVG icons.
- Enhanced layout of CardCompat to maintain visual integrity across different screen sizes.

* chore: update .gitignore to include next-env.d.ts for TypeScript support

* fix: correct import statement formatting in next-env.d.ts for consistency

* fix: refine wording in 2026 roadmap for clarity

- Updated the description of agentic workflows to emphasize a lean approach to context pulling.
- Enhanced overall readability of the section on Dynamic Context.

* feat: expand Admin Panel section in 2026 roadmap with detailed capabilities

- Added comprehensive descriptions of the Admin Panel's core functionalities, including GUI for configuration, configuration profiles, group and role management, and access controls.
- Clarified the development approach for the Admin Panel, emphasizing ongoing iteration and community involvement.
- Updated note on the Admin Panel's prioritization and requirements following the ClickHouse acquisition.

* feat: add TrackedLink component for enhanced analytics tracking

- Introduced a new TrackedLink component that integrates Vercel analytics to track user interactions with links.
- The component allows for customizable link properties while ensuring tracking of clicks with relevant metadata.
- Updated CardCompat to utilize the new TrackedLink for improved user engagement tracking.

* feat: enhance blog post layout and introduce TrackedAnchor component for link tracking

- Wrapped the InlineTOC component in a div for improved spacing in blog posts.
- Added a new TrackedAnchor component to facilitate link tracking with Vercel analytics, allowing for customizable anchor elements.
- Updated mdx-components to utilize TrackedAnchor for enhanced link interaction tracking.

* feat: update TrackedLink and TrackedAnchor components for external link handling

- Enhanced the TrackedLink component to differentiate between internal and external links, using Next.js Link for internal navigation.
- Introduced a utility function to determine if a link is external, improving tracking accuracy.
- Updated TrackedAnchor to utilize the same external link handling logic for consistency in link tracking.

* feat: add uncaught exception handling section to dotenv configuration documentation

- Introduced a new section on uncaught exception handling, explaining how to override the default behavior to keep the app running after exceptions.
- Added an option table detailing the `CONTINUE_ON_UNCAUGHT_EXCEPTION` configuration.
- Included a warning callout advising against using this feature in production environments.

* feat: add ESLint rule for unused variables in TypeScript

- Introduced a new ESLint rule to enforce the handling of unused variables, allowing for specific patterns to be ignored.
- This enhancement aims to improve code quality by ensuring that developers are alerted to potentially unnecessary variables while maintaining flexibility in naming conventions.

* fix: update copyright year in LICENSE file to 2026

* feat: update footer menu link and add 2026 roadmap blog post

- Changed the roadmap link in the FooterMenu component to point to the new blog post.
- Introduced a new blog post detailing the 2026 roadmap for LibreChat, outlining key features and focus areas for the upcoming year.
- Updated the import statement in next-env.d.ts for consistency with the new types directory.

* fix: update import path in next-env.d.ts and add comment block in agents.mdx

- Changed the import statement in next-env.d.ts to reference the new development types directory.
- Added a comment block in agents.mdx to indicate that the Programmatic Tool Calling feature is in private beta.

* fix: remove unused ESLint disable comment in context.tsx

* chore: update blog
2026-02-18 21:46:20 -05:00

694 lines
28 KiB
Plaintext

---
title: "Config Structure"
icon: Settings
---
**Note:** Fields not specifically mentioned as required are optional.
## version
- **required**
<OptionTable
options={[
['version', 'String', 'Specifies the version of the configuration file.', 'version: 1.3.4' ],
]}
/>
## cache
<OptionTable
options={[
['cache', 'Boolean', 'Toggles caching on or off. Set to `true` to enable caching (default).', 'cache: true' ],
]}
/>
## fileStrategy
- **Options**: "local" | "firebase" | "s3" | "azure_blob"
<OptionTable
options={[
['fileStrategy', 'String', 'Determines where to save user uploaded/generated files. Defaults to `"local"` if omitted.', 'fileStrategy: "firebase"' ],
]}
/>
- **Notes**:
- You can choose from several different CDNs to store files.
- Please refer to the [CDN documentation](/docs/configuration/cdn) for more details
## fileStrategies
Allows granular control over file storage strategies for different file types.
- **Available Strategies**: "local" | "firebase" | "s3" | "azure_blob"
<OptionTable
options={[
['fileStrategies', 'Object', 'Configures different storage strategies for different file types. More flexible than the single fileStrategy option.', ''],
]}
/>
**Sub-keys:**
<OptionTable
options={[
['default', 'String', 'Fallback storage strategy when specific type is not defined. Defaults to "local".', ''],
['avatar', 'String', 'Storage strategy for user and agent avatar images.', ''],
['image', 'String', 'Storage strategy for images uploaded in chats.', ''],
['document', 'String', 'Storage strategy for document uploads (PDFs, text files, etc.).', ''],
]}
/>
- **Notes**:
- This setting takes precedence over the single `fileStrategy` option
- If a specific file type is not configured, it falls back to `default`, then to `fileStrategy`, and finally to `"local"`
- You can mix strategies based on your needs (e.g., S3 for avatars, local for documents)
- Please refer to the [CDN documentation](/docs/configuration/cdn) for setup details for each storage provider
**Examples:**
```yaml filename="fileStrategies - All in one place"
# Use a single strategy for all file types
fileStrategies:
default: "s3"
```
```yaml filename="fileStrategies - Mixed strategies"
# Mix storage strategies based on file type
fileStrategies:
avatar: "s3" # Fast global access for avatars
image: "firebase" # Automatic image optimization
document: "local" # Keep documents on-premise for compliance
```
```yaml filename="fileStrategies - Partial configuration"
# Only configure specific types, others use default
fileStrategies:
default: "local"
avatar: "s3" # Only avatars use S3, everything else is local
```
## filteredTools
<OptionTable
options={[
['filteredTools', 'Array of Strings', 'Filters out specific tools from both Plugins and OpenAI Assistants endpoints.', 'filteredTools: ["scholarai", "calculator"]' ],
]}
/>
- **Notes**:
- If `includedTools` and `filteredTools` are both specified, only `includedTools` will be recognized.
- Affects both `gptPlugins` and `assistants` endpoints
- You can find the names of the tools to filter in [`api/app/clients/tools/manifest.json`](https://github.com/danny-avila/LibreChat/blob/main/api/app/clients/tools/manifest.json)
- Use the `pluginKey` value
- Also, any listed under the ".well-known" directory [`api/app/clients/tools/.well-known`](https://github.com/danny-avila/LibreChat/blob/main/api/app/clients/tools/.well-known)
- Use the `name_for_model` value
## includedTools
<OptionTable
options={[
['includedTools', 'Array of Strings', 'Includes specific tools from both Plugins and OpenAI Assistants endpoints.', 'includedTools: ["calculator"]' ],
]}
/>
- **Notes**:
- If `includedTools` and `filteredTools` are both specified, only `includedTools` will be recognized.
- Affects both `gptPlugins` and `assistants` endpoints
- You can find the names of the tools to filter in [`api/app/clients/tools/manifest.json`](https://github.com/danny-avila/LibreChat/blob/main/api/app/clients/tools/manifest.json)
- Use the `pluginKey` value
- Also, any listed under the ".well-known" directory [`api/app/clients/tools/.well-known`](https://github.com/danny-avila/LibreChat/blob/main/api/app/clients/tools/.well-known)
- Use the `name_for_model` value
## secureImageLinks
<OptionTable
options={[
['secureImageLinks', 'Boolean', 'Whether or not to secure access to image links that are hosted locally by the app. Default: false.', 'secureImageLinks: true' ],
]}
/>
## imageOutputType
- **Note**: Case-sensitive. Google endpoint only supports "jpeg" and "png" output types.
- **Options**: "png" | "webp" | "jpeg"
<OptionTable
options={[
['imageOutputType', 'String', 'The image output type for image responses. Defaults to "png" if omitted.', 'imageOutputType: "webp"' ],
]}
/>
## ocr
**Key:**
<OptionTable
options={[
['ocr', 'Object', 'Configures Optical Character Recognition (OCR) settings for extracting text from images.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['apiKey', 'String', 'The API key for the OCR service.', ''],
['baseURL', 'String', 'The base URL for the OCR service API.', ''],
['strategy', 'String', 'The OCR strategy to use. Options are "mistral_ocr" or "custom_ocr".', ''],
['mistralModel', 'String', 'The Mistral model to use for OCR processing.', ''],
]}
/>
see: [OCR Config Object Structure](/docs/configuration/librechat_yaml/object_structure/ocr)
## webSearch
**Key:**
<OptionTable
options={[
['webSearch', 'Object', 'Configures web search functionality, including search providers, content scrapers, and result rerankers.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['serperApiKey', 'String', 'Environment variable name for the Serper API key. If not set in .env, users will be prompted to provide it via UI.', ''],
['searxngInstanceUrl', 'String', 'Environment variable name for the SearXNG instance URL. If not set in .env, users will be prompted to provide it via UI.', ''],
['searxngApiKey', 'String', 'Environment variable name for the SearXNG API key. If not set in .env, users will be prompted to provide it via UI.', ''],
['firecrawlApiKey', 'String', 'Environment variable name for the Firecrawl API key. If not set in .env, users will be prompted to provide it via UI.', ''],
['firecrawlApiUrl', 'String', 'Environment variable name for the Firecrawl API URL. If not set in .env, users will be prompted to provide it via UI.', ''],
['jinaApiKey', 'String', 'Environment variable name for the Jina API key. If not set in .env, users will be prompted to provide it via UI.', ''],
['cohereApiKey', 'String', 'Environment variable name for the Cohere API key. If not set in .env, users will be prompted to provide it via UI.', ''],
['searchProvider', 'String', 'Specifies which search provider to use. Options: "serper", "searxng".', ''],
['scraperProvider', 'String', 'Specifies which scraper service to use. Options: "firecrawl", "serper".', ''],
['firecrawlVersion', 'String', 'Specifies Firecrawl API version (v0 or v1).', ''],
['rerankerType', 'String', 'Specifies which reranker service to use. Options: "jina", "cohere".', ''],
['scraperTimeout', 'Number', 'Timeout in milliseconds for scraper requests.', ''],
['safeSearch', 'Boolean', 'Enables safe search mode to filter out inappropriate content.', ''],
]}
/>
see: [Web Search Object Structure](/docs/configuration/librechat_yaml/object_structure/web_search)
## fileConfig
**Key:**
<OptionTable
options={[
['fileConfig', 'Object', 'Configures file handling settings for the application, including size limits and MIME type restrictions.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['endpoints', 'Record/Object', 'Specifies file handling configurations for individual endpoints, allowing customization per endpoint basis.', ''],
['serverFileSizeLimit', 'Number', 'The maximum file size (in MB) that the server will accept. Applies globally across all endpoints unless overridden by endpoint-specific settings.', ''],
['avatarSizeLimit', 'Number', 'Maximum size (in MB) for user avatar images.', ''],
['clientImageResize', 'Object', 'Configures client-side image resizing to optimize file uploads and prevent upload errors due to large image sizes.', ''],
['ocr', 'Object', 'Settings for Optical Character Recognition (OCR) file processing.', ''],
['text', 'Object', 'Settings for direct text file parsing.', ''],
['stt', 'Object', 'Settings for Speech-to-Text (STT) audio file processing.', ''],
['fileTokenLimit', 'Number', 'Maximum number of tokens from text files to include in prompts before truncation.', 'fileTokenLimit: 100000'],
]}
/>
## clientImageResize
**Key:**
<OptionTable
options={[
['clientImageResize', 'Object', 'Configures client-side image resizing to optimize file uploads and prevent upload errors due to large image sizes.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['enabled', 'Boolean', 'Enables or disables client-side image resizing functionality. Default: false.', 'enabled: true'],
['maxWidth', 'Number', 'Maximum width in pixels for resized images. Images wider than this will be resized. Default: 1920.', 'maxWidth: 1024'],
['maxHeight', 'Number', 'Maximum height in pixels for resized images. Images taller than this will be resized. Default: 1080.', 'maxHeight: 768'],
['quality', 'Number', 'JPEG compression quality (0.1 to 1.0). Higher values mean better quality but larger file sizes. Default: 0.8.', 'quality: 0.9'],
['compressFormat', 'String', 'Output format for compressed images. Options: "jpeg", "webp". Default: "jpeg".', 'compressFormat: "webp"'],
]}
/>
**Description:**
The `clientImageResize` configuration enables automatic client-side image resizing before upload. This feature helps:
- **Prevent upload failures** due to large image files exceeding server limits
- **Reduce bandwidth usage** by compressing images before transmission
- **Improve upload performance** with smaller file sizes
- **Maintain image quality** while optimizing file size
When enabled, images that exceed the specified `maxWidth` or `maxHeight` dimensions are automatically resized on the client side before being uploaded to the server. The resizing maintains the original aspect ratio while ensuring the image fits within the specified bounds.
**Example:**
```yaml filename="clientImageResize"
fileConfig:
clientImageResize:
enabled: true
maxWidth: 1920
maxHeight: 1080
quality: 0.8
compressFormat: "jpeg"
```
**Notes:**
- Only applies to image files (JPEG, PNG, WebP, etc.)
- Resizing occurs automatically when images exceed the specified dimensions
- Original aspect ratio is preserved during resizing
- The feature works with all supported image upload endpoints
- Quality setting only applies to JPEG and WebP formats
- Setting quality too low (< 0.5) may result in noticeable image degradation
see: [File Config Object Structure](/docs/configuration/librechat_yaml/object_structure/file_config)
## rateLimits
**Key:**
<OptionTable
options={[
['rateLimits', 'Object', 'Defines rate limiting policies to prevent abuse by limiting the number of requests.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['fileUploads', 'Object', 'Configures rate limits specifically for file upload operations.', ''],
['conversationsImport', 'Object', 'Configures rate limits specifically for conversation import operations.', ''],
['stt', 'Object', 'Configures rate limits specifically for speech-to-text (stt) requests', ''],
['tts', 'Object', 'Configures rate limits specifically for text-to-speech (tts) requests', ''],
]}
/>
**fileUploads Subkeys:**
<OptionTable
options={[
['ipMax', 'Number', 'Maximum number of uploads allowed per IP address per window.', ''],
['ipWindowInMinutes', 'Number', 'Time window in minutes for the IP-based upload limit.', ''],
['userMax', 'Number', 'Maximum number of uploads allowed per user per window.', ''],
['userWindowInMinutes', 'Number', 'Time window in minutes for the user-based upload limit.', ''],
]}
/>
**conversationsImport Subkeys:**
<OptionTable
options={[
['ipMax', 'Number', 'Maximum number of imports allowed per IP address per window.', ''],
['ipWindowInMinutes', 'Number', 'Time window in minutes for the IP-based imports limit.', ''],
['userMax', 'Number', 'Maximum number of imports per user per window.', ''],
['userWindowInMinutes', 'Number', 'Time window in minutes for the user-based imports limit.', ''],
]}
/>
**tts Subkeys:**
<OptionTable
options={[
['ipMax', 'Number', 'Maximum number of requests allowed per IP address per window.', ''],
['ipWindowInMinutes', 'Number', 'Time window in minutes for the IP-based requests limit.', ''],
['userMax', 'Number', 'Maximum number of requests per user per window.', ''],
['userWindowInMinutes', 'Number', 'Time window in minutes for the user-based requests limit.', ''],
]}
/>
**stt Subkeys:**
<OptionTable
options={[
['ipMax', 'Number', 'Maximum number of requests allowed per IP address per window.', ''],
['ipWindowInMinutes', 'Number', 'Time window in minutes for the IP-based requests limit.', ''],
['userMax', 'Number', 'Maximum number of requests per user per window.', ''],
['userWindowInMinutes', 'Number', 'Time window in minutes for the user-based requests limit.', ''],
]}
/>
- **Example**:
```yaml filename="rateLimits"
rateLimits:
fileUploads:
ipMax: 100
ipWindowInMinutes: 60
userMax: 50
userWindowInMinutes: 60
conversationsImport:
ipMax: 100
ipWindowInMinutes: 60
userMax: 50
userWindowInMinutes: 60
stt:
ipMax: 100
ipWindowInMinutes: 1
userMax: 50
userWindowInMinutes: 1
tts:
ipMax: 100
ipWindowInMinutes: 1
userMax: 50
userWindowInMinutes: 1
```
## registration
**Key:**
<OptionTable
options={[
['registration', 'Object', 'Configures registration-related settings for the application.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['socialLogins', '', 'Social login configurations.', ''],
['allowedDomains', '', 'Specifies allowed domains for registration.', ''],
]}
/>
see also:
- [socialLogins](/docs/configuration/librechat_yaml/object_structure/registration#sociallogins),
- [alloweddomains](/docs/configuration/librechat_yaml/object_structure/registration#alloweddomains),
- [Registration Object Structure](/docs/configuration/librechat_yaml/object_structure/registration)
## memory
**Key:**
<OptionTable
options={[
['memory', 'Object', 'Configures conversation memory and personalization features for the application.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['disabled', 'Boolean', 'Disables memory functionality when set to true.', ''],
['validKeys', 'Array of Strings', 'Specifies which keys are valid for memory storage.', ''],
['tokenLimit', 'Number', 'Sets the maximum number of tokens for memory storage and processing.', ''],
['charLimit', 'Number', 'Sets the maximum number of characters for memory storage. Default: 10000.', ''],
['personalize', 'Boolean', 'Enables or disables personalization features.', ''],
['messageWindowSize', 'Number', 'Specifies the number of recent messages to include in memory context.', ''],
['agent', 'Object | Union', 'Configures the agent responsible for memory processing.', ''],
]}
/>
see: [Memory Object Structure](/docs/configuration/librechat_yaml/object_structure/memory)
## actions
**Key:**
<OptionTable
options={[
['actions', 'Object', 'Configures actions-related settings, used by Agents and Assistants', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['allowedDomains', '', 'Specifies allowed domains for actions.', ''],
]}
/>
see also:
- [alloweddomains](/docs/configuration/librechat_yaml/object_structure/actions#alloweddomains),
- [Actions Object Structure](/docs/configuration/librechat_yaml/object_structure/actions)
## interface
**Key:**
<OptionTable
options={[
['interface', 'Object', 'Configures user interface elements within the application, allowing for customization of visibility and behavior of various components.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['endpointsMenu', 'Boolean', 'Controls the visibility of the endpoints menu dropdown in the UI.', ''],
['privacyPolicy', 'Object', 'Contains settings related to the privacy policy link provided.', ''],
['termsOfService', 'Object', 'Contains settings related to the terms of service link provided.', ''],
['modelSelect', 'Boolean', 'Determines whether the model selection feature is available.', ''],
['parameters', 'Boolean', 'Toggles the visibility of parameter configuration options AKA conversation settings.', ''],
['sidePanel', 'Boolean', 'Controls the visibility of the right-most side panel.', ''],
['presets', 'Boolean', 'Enables or disables the presets menu', ''],
['prompts', 'Boolean or Object', 'Enables or disables all prompt-related features for all users', ''],
['bookmarks', 'Boolean', 'Enables or disables all bookmarks-related features for all users', ''],
['memories', 'Boolean', 'Enables or disables the memories feature for all users', ''],
['multiConvo', 'Boolean', 'Enables or disables all "multi convo", AKA multiple response streaming, related features for all users', ''],
['agents', 'Boolean or Object', 'Enables or disables all agents features for all users', ''],
['temporaryChat', 'Boolean', 'Enables or disables the temporary chat feature', ''],
['temporaryChatRetention', 'Number', 'Configures the retention period for temporary chats in hours. Min: 1, Max: 8760. Default: 720 (30 days).', ''],
['mcpServers', 'Object', 'Contains settings related to MCP server selection and access control.', ''],
['customWelcome', 'String', 'Custom welcome message displayed in the chat interface.', ''],
['runCode', 'Boolean', 'Enables or disables the "Run Code" button for Markdown Code Blocks', ''],
['webSearch', 'Boolean', 'Enables or disables the web search button in the chat interface', ''],
['fileSearch', 'Boolean', 'Enables or disables the file search button in the chat interface', ''],
['fileCitations', 'Boolean', 'Globally enables or disables file citations for all users', ''],
['peoplePicker', 'Object', 'Configures which principal types are available controls in the people picker interface', ''],
['marketplace', 'Object', 'Enables or disables access to the Agent Marketplace', ''],
]}
/>
see: [Interface Object Structure](/docs/configuration/librechat_yaml/object_structure/interface)
## modelSpecs
**Key:**
<OptionTable
options={[
['modelSpecs', 'Object', 'Configures model specifications, allowing for detailed setup and customization of AI models and their behaviors within the application.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['enforce', 'Boolean', 'Determines whether the model specifications should strictly override other configuration settings.', ''],
['prioritize', 'Boolean', 'Specifies if model specifications should take priority over the default configuration when both are applicable.', ''],
['list', 'Array of Objects', 'Contains a list of individual model specifications detailing various configurations and behaviors.', ''],
]}
/>
see: [Model Specs Object Structure](/docs/configuration/librechat_yaml/object_structure/model_specs)
## endpoints
**Key:**
<OptionTable
options={[
['endpoints', 'Object', 'Defines custom API endpoints for the application.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['custom', 'Array of Objects', 'Each object in the array represents a unique endpoint configuration.', ''],
['azureOpenAI', 'Object', 'Azure OpenAI endpoint-specific configuration', ''],
['assistants', 'Object', 'Assistants endpoint-specific configuration.', ''],
['azureAssistants', 'Object', 'Azure Assistants endpoint-specific configuration.', ''],
['agents', 'Object', 'Agents endpoint-specific configuration.', ''],
['all', 'Object', 'Global endpoint settings that apply to all endpoints. See Shared Endpoint Settings.', ''],
]}
/>
> **Note:** All endpoints support [Shared Endpoint Settings](/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings) which include `streamRate`, `titleModel`, `titleMethod`, `titlePrompt`, `titlePromptTemplate`, and `titleEndpoint`. These can be configured individually per endpoint or globally using the `all` key.
## mcpSettings
**Key:**
<OptionTable
options={[
['mcpSettings', 'Object', 'Defines global settings for Model Context Protocol (MCP) servers', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['allowedDomains', 'Array of Strings', 'A list specifying allowed domains for MCP server connections. Required for internal/local addresses.', ''],
]}
/>
- **Notes**:
- This is a security feature to protect against abuse / misuse of internal addresses via MCP servers
- By default, LibreChat restricts MCP servers from connecting to internal, local, or private network addresses
- MCP servers using local IP addresses or domains must be **explicitly** allowed
- As with all yaml configuration changes, a LibreChat restart is required to take effect
- Supports domains, wildcard subdomains (`*.example.com`), docker domains, and IP addresses
**Example:**
```yaml filename="mcpSettings"
mcpSettings:
allowedDomains:
- "example.com" # Specific domain
- "*.example.com" # All subdomains
- "mcp-server" # Local Docker domain
- "172.24.1.165" # Internal network IP
```
see: [MCP Settings Object Structure](/docs/configuration/librechat_yaml/object_structure/mcp_settings)
## mcpServers
**Key:**
<OptionTable
options={[
['mcpServers', 'Object', 'Defines the configuration for Model Context Protocol (MCP) servers, allowing dynamic integration of MCP servers within the application.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['<serverName>', 'Object', 'Each key under `mcpServers` represents an individual MCP server configuration, identified by a unique name.', ''],
]}
/>
- **Notes**:
- Initialization happens at startup, and the app must be restarted for changes to take effect.
- The `<serverName>` is a unique identifier for each MCP server configuration.
- Each MCP server can be configured using one of four connection types:
- `stdio`
- `websocket`
- `sse`
- `streamable-http`
- The `type` field specifies the connection type to the MCP server.
- If `type` is omitted, it defaults based on the presence and format of `url` or `command`:
- If `url` is specified and starts with `http` or `https`, `type` defaults to `sse`.
- If `url` is specified and starts with `ws` or `wss`, `type` defaults to `websocket`.
- If `command` is specified, `type` defaults to `stdio`.
- Additional configuration options include:
- `timeout`: Timeout in milliseconds for MCP server requests. Determines how long to wait for a response for tool requests.
- `initTimeout`: Timeout in milliseconds for MCP server initialization. Determines how long to wait for the server to initialize.
- `serverInstructions`: Controls whether server instructions are included in agent context. Can be `true` (use server-provided), `false` (disabled), or a custom string (overrides server-provided).
- `customUserVars`: (Optional) Defines custom variables (e.g., API keys, URLs) that individual users can set for an MCP server. These per-user values, provided through the UI, can then be referenced in the server's `headers` or `env` configurations using `{{VARIABLE_NAME}}` syntax. This allows for per-user authentication or customization for MCP tools.
- see: [MCP Servers Object Structure](/docs/configuration/librechat_yaml/object_structure/mcp_servers)
**Example:**
```yaml filename="mcpServers"
mcpServers:
everything:
# type: sse # type can optionally be omitted
url: http://localhost:3001/sse
timeout: 30000
initTimeout: 10000
serverInstructions: true # Use server-provided instructions
puppeteer:
type: stdio
command: npx
args:
- -y
- "@modelcontextprotocol/server-puppeteer"
timeout: 30000
initTimeout: 10000
serverInstructions: "Do not access any local files or local/internal IP addresses"
filesystem:
# type: stdio
command: npx
args:
- -y
- "@modelcontextprotocol/server-filesystem"
- /home/user/LibreChat/
iconPath: /home/user/LibreChat/client/public/assets/logo.svg
mcp-obsidian:
command: npx
args:
- -y
- "mcp-obsidian"
- /path/to/obsidian/vault
streamable-http-example:
type: streamable-http
url: https://example.com/mcp
headers:
Authorization: "Bearer ${API_TOKEN}"
timeout: 30000
per-user-crendentials-example:
type: sse
url: "https//some.mcp/sse"
headers:
X-Custom-Auth-Token: "{{USER_API_KEY}}" # Placeholder for the user-provided API key, defined in `customUserVars` below.
customUserVars:
USER_API_KEY:
title: "Service API Key"
description: "Your personal API key for this service. You can get it <a href='https://example.com/api-keys' target='_blank'>here</a>."
serverInstructions: true
```
see: [MCP Servers Object Structure](/docs/configuration/librechat_yaml/object_structure/mcp_servers)
## speech
**Key:**
<OptionTable
options={[
['speech', 'Object', 'Configures Text-to-Speech (TTS) and Speech-to-Text (STT) providers for the application.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['tts', 'Object', 'Text-to-Speech provider configurations (OpenAI, Azure OpenAI, ElevenLabs, LocalAI).', ''],
['stt', 'Object', 'Speech-to-Text provider configurations (OpenAI, Azure OpenAI).', ''],
['speechTab', 'Object', 'Default UI settings for speech features.', ''],
]}
/>
see: [Speech Object Structure](/docs/configuration/librechat_yaml/object_structure/speech)
## turnstile
**Key:**
<OptionTable
options={[
['turnstile', 'Object', 'Configures Cloudflare Turnstile for bot protection on registration and login forms.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['siteKey', 'String', 'Your Cloudflare Turnstile site key (required).', ''],
['options', 'Object', 'Additional Turnstile widget options (optional).', ''],
]}
/>
see: [Turnstile Object Structure](/docs/configuration/librechat_yaml/object_structure/turnstile)
## transactions
**Key:**
<OptionTable
options={[
['transactions', 'Object', 'Controls transaction logging and visibility features.', ''],
]}
/>
**Subkeys:**
<OptionTable
options={[
['enabled', 'Boolean', 'Enables or disables transaction logging. Default: true.', ''],
]}
/>
see: [Transactions Object Structure](/docs/configuration/librechat_yaml/object_structure/transactions)
## Additional links
- [AWS Bedrock Object Structure](/docs/configuration/librechat_yaml/object_structure/aws_bedrock)
- [Custom Endpoint Object Structure](/docs/configuration/librechat_yaml/object_structure/custom_endpoint)
- [Azure OpenAI Endpoint Object Structure](/docs/configuration/librechat_yaml/object_structure/azure_openai)
- [Assistants Endpoint Object Structure](/docs/configuration/librechat_yaml/object_structure/assistants_endpoint)
- [Agents](/docs/configuration/librechat_yaml/object_structure/agents)
- [OCR Config Object Structure](/docs/configuration/librechat_yaml/object_structure/ocr)
- [Speech Object Structure](/docs/configuration/librechat_yaml/object_structure/speech)
- [Turnstile Object Structure](/docs/configuration/librechat_yaml/object_structure/turnstile)
- [Transactions Object Structure](/docs/configuration/librechat_yaml/object_structure/transactions)
- [Balance Object Structure](/docs/configuration/librechat_yaml/object_structure/balance)
- [Web Search Object Structure](/docs/configuration/librechat_yaml/object_structure/web_search)
- [Memory Object Structure](/docs/configuration/librechat_yaml/object_structure/memory)