mirror of
https://github.com/LibreChat-AI/librechat.ai.git
synced 2026-03-27 10:48:32 +07:00
* 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
694 lines
28 KiB
Plaintext
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)
|