From 587d65b87a520b5b662bf3f905538616b183afdd Mon Sep 17 00:00:00 2001
From: Dustin Healy <54083382+dustinhealy@users.noreply.github.com>
Date: Wed, 26 Nov 2025 07:12:42 -0800
Subject: [PATCH] =?UTF-8?q?=F0=9F=93=96=20docs:=20Document=20config=20chan?=
=?UTF-8?q?ges=20(v0.8.0-rc1=20to=20v0.8.1-rc1)=20(#448)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat: document new charLimit in memory configuration
* feat: document peoplePicker interface configuration
* feat: document Agent Marketplace configuration
* chore: better description for peoplePicker permissions
* feat: document fileStrategies configuration
* feat: document webSearch's firecrawlVersion addition and scraperType to scraperProvider refactor
* feat: document conversation file import limit env variable CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES
* feat: document modelSpecs group field configuration
* chore: fix formatting in peoplePicker interface markdown
* feat: add missing .env.example changes
* chore: formatting
---
.../changelog/content/config_v1.3.1.mdx | 76 +++++++++++++++++++
pages/changelog/config_v1.3.1.mdx | 13 ++++
pages/docs/configuration/dotenv.mdx | 47 ++++++++----
.../object_structure/config.mdx | 58 +++++++++++++-
.../object_structure/interface.mdx | 70 +++++++++++++++++
.../object_structure/memory.mdx | 17 +++++
.../object_structure/model_specs.mdx | 46 +++++++++++
.../object_structure/web_search.mdx | 15 +++-
pages/docs/configuration/redis.mdx | 4 +-
pages/docs/features/web_search.mdx | 4 +-
10 files changed, 328 insertions(+), 22 deletions(-)
create mode 100644 components/changelog/content/config_v1.3.1.mdx
create mode 100644 pages/changelog/config_v1.3.1.mdx
diff --git a/components/changelog/content/config_v1.3.1.mdx b/components/changelog/content/config_v1.3.1.mdx
new file mode 100644
index 0000000..ac52d26
--- /dev/null
+++ b/components/changelog/content/config_v1.3.1.mdx
@@ -0,0 +1,76 @@
+- Added `charLimit` to `memory` configuration
+ - Limits the maximum character length for user-created memories
+ - Default value is `10000` characters
+ - Prevents oversized memory payloads that could impact performance
+ - See [Memory Configuration](/docs/configuration/librechat_yaml/object_structure/memory#charlimit) for details
+
+- Added `interface.peoplePicker` configuration for user/group/role selection controls
+ - Added `users` setting to control user search (default: `true`)
+ - Added `groups` setting to control group search (default: `true`)
+ - Added `roles` setting to control role search (default: `true`)
+ - Enables fine-grained control over who can search and view users/groups/roles when sharing resources (agents/prompts)
+ - People picker access control managed through permission system
+ - See [Interface Configuration](/docs/configuration/librechat_yaml/object_structure/interface#peoplepicker) for details
+
+- Added `interface.marketplace` configuration for Agent Marketplace access control
+ - Added `use` setting to enable/disable marketplace access (default: `false`)
+ - Controls visibility and access to the Agent Marketplace feature
+ - Access control managed through permission system
+ - See [Interface Configuration](/docs/configuration/librechat_yaml/object_structure/interface#marketplace) for details
+
+- Added `fileStrategies` for granular file storage configuration
+ - Allows different storage strategies for different file types
+ - Added `default` setting for fallback storage strategy
+ - Added `avatar` setting for user/agent avatar image storage
+ - Added `image` setting for uploaded images in chats
+ - Added `document` setting for document uploads (PDFs, text files, etc.)
+ - Supports mixing storage strategies (e.g., S3 for avatars, local for documents)
+ - Available strategies: `"local"`, `"s3"`, `"firebase"`, `"azure_blob"`
+ - Backwards compatible with existing `fileStrategy` (single strategy for all files)
+ - See [File Strategies Configuration](/docs/configuration/librechat_yaml/object_structure/config#filestrategies) for details
+
+- Renamed `webSearch.scraperType` to `webSearch.scraperProvider`
+ - Configuration field renamed for consistency with other provider naming conventions
+ - See [Web Search Configuration](/docs/configuration/librechat_yaml/object_structure/web_search#scraperprovider) for details
+- Added `webSearch.firecrawlVersion` to specify Firecrawl API version
+ - Allows configuration of Firecrawl API version (v0 or v1)
+ - Default: uses environment variable `${FIRECRAWL_VERSION}`
+ - See [Web Search Configuration](/docs/configuration/librechat_yaml/object_structure/web_search#firecrawlversion) for details
+
+- Added `CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES` environment variable
+ - Limits the maximum file size for conversation imports in bytes
+ - Prevents memory exhaustion from large import files
+ - Default: `0` (no limit enforced when not set)
+ - Example: `262144000` (250 MiB)
+ - See [Environment Variables](/docs/configuration/dotenv#conversation_import_max_file_size_bytes) for details
+
+- Added optional `group` field to modelSpecs configuration
+ - Organizes model specs in the UI selector with flexible grouping options
+ - Three behaviors based on `group` value:
+ - If `group` matches an endpoint name (e.g., "openAI", "groq"), the spec nests under that endpoint
+ - If `group` is a custom name (doesn't match any endpoint), creates a separate collapsible section
+ - If `group` is omitted, the spec appears as a standalone item at top level
+ - See [Model Specs](/docs/configuration/librechat_yaml/object_structure/model_specs#group) for details
+
+- Removed `SERPAPI_API_KEY` documentation
+ - SerpAPI integration is no longer supported
+ - See [Environment Variables](/docs/configuration/dotenv)
+
+- Added `MCP_SKIP_CODE_CHALLENGE_CHECK` environment variable
+ - Skip code challenge method validation for MCP OAuth flows
+ - Default: `false`
+ - See [MCP Server Configuration](/docs/configuration/dotenv#mcp-server-configuration) for details
+
+- Added Leader Election configuration for multi-instance deployments
+ - Added `LEADER_LEASE_DURATION` - Duration in seconds that the leader lease is valid (default: 25)
+ - Added `LEADER_RENEW_INTERVAL` - Interval in seconds at which the leader renews its lease (default: 10)
+ - Added `LEADER_RENEW_ATTEMPTS` - Maximum retry attempts when renewing the lease fails (default: 3)
+ - Added `LEADER_RENEW_RETRY_DELAY` - Delay in seconds between retry attempts (default: 0.5)
+ - Requires Redis to be enabled (`USE_REDIS=true`)
+ - Ensures only one instance performs operations like scheduled tasks
+ - See [Leader Election Configuration](/docs/configuration/dotenv#leader-election) for details
+
+- Updated `FORCED_IN_MEMORY_CACHE_NAMESPACES` examples
+ - Removed `STATIC_CONFIG` from example values (deprecated cache key)
+ - Updated examples to use `ROLES,MESSAGES` as recommended defaults
+ - See [Redis Configuration](/docs/configuration/redis#forced-in-memory-cache) for details
diff --git a/pages/changelog/config_v1.3.1.mdx b/pages/changelog/config_v1.3.1.mdx
new file mode 100644
index 0000000..7d703c4
--- /dev/null
+++ b/pages/changelog/config_v1.3.1.mdx
@@ -0,0 +1,13 @@
+---
+date: 2025/11/24
+title: ⚙️ Config v1.3.1
+---
+
+import { ChangelogHeader } from '@/components/changelog/ChangelogHeader'
+import Content from '@/components/changelog/content/config_v1.3.1.mdx'
+
+
+
+---
+
+
diff --git a/pages/docs/configuration/dotenv.mdx b/pages/docs/configuration/dotenv.mdx
index 4b8f889..b487776 100644
--- a/pages/docs/configuration/dotenv.mdx
+++ b/pages/docs/configuration/dotenv.mdx
@@ -286,6 +286,7 @@ For detailed configuration and customization options, see: [Web Search Configura
['SERPER_API_KEY', 'string', 'API key for Serper search provider. Get your key from https://serper.dev/api-key', '# SERPER_API_KEY='],
['FIRECRAWL_API_KEY', 'string', 'API key for Firecrawl scraper service. Get your key from https://docs.firecrawl.dev/introduction#api-key', '# FIRECRAWL_API_KEY='],
['FIRECRAWL_API_URL', 'string', 'Custom Firecrawl API URL (optional). Only needed for custom Firecrawl instances.', '# FIRECRAWL_API_URL='],
+ ['FIRECRAWL_VERSION', 'string', 'Firecrawl API version (v0 or v1).', '# FIRECRAWL_VERSION=v1'],
['JINA_API_KEY', 'string', 'API key for Jina reranker service. Get your key from https://jina.ai/api-dashboard/', '# JINA_API_KEY='],
['JINA_API_URL', 'string', 'Custom Jina API URL (optional). Only needed for custom Jina instances.', '# JINA_API_URL='],
['COHERE_API_KEY', 'string', 'API key for Cohere reranker service. Get your key from https://dashboard.cohere.com/welcome/login', '# COHERE_API_KEY='],
@@ -629,18 +630,6 @@ See detailed instructions here: **[Google Search](/docs/configuration/tools/goog
]}
/>
-#### SerpAPI
-
-**Description:** SerpApi is a real-time API to access Google search results (not as performant)
-
-**Environment Variables:**
-
-
-
#### Stable Diffusion (Automatic1111)
See detailed instructions here: **[Stable Diffusion](/docs/configuration/tools/stable_diffusion)**
@@ -1393,6 +1382,16 @@ LibreChat supports Google Tag Manager for analytics. You will need a Google Tag
]}
/>
+#### Conversation Import
+
+Configure limits for conversation file imports to prevent memory issues.
+
+
+
### MCP (Model Context Protocol)
Configure Model Context Protocol settings for enhanced server management and OAuth support.
@@ -1404,6 +1403,7 @@ Configure Model Context Protocol settings for enhanced server management and OAu
['MCP_OAUTH_ON_AUTH_ERROR', 'boolean', 'Treat 401/403 responses as OAuth requirement when no oauth metadata found.', 'MCP_OAUTH_ON_AUTH_ERROR=true'],
['MCP_OAUTH_DETECTION_TIMEOUT', 'number', 'Timeout for OAuth detection requests in milliseconds.', 'MCP_OAUTH_DETECTION_TIMEOUT=5000'],
['MCP_CONNECTION_CHECK_TTL', 'number', 'Cache connection status checks for this many milliseconds to avoid expensive verification.', 'MCP_CONNECTION_CHECK_TTL=30000'],
+ ['MCP_SKIP_CODE_CHALLENGE_CHECK', 'boolean', 'Skip code challenge method validation. When set to true, forces S256 code challenge even if not advertised in .well-known/openid-configuration', 'MCP_SKIP_CODE_CHALLENGE_CHECK=false'],
]}
/>
@@ -1431,7 +1431,7 @@ For detailed configuration and examples, see: **[Redis Configuration Guide](/doc
['REDIS_KEY_PREFIX_VAR', 'string', 'Environment variable name containing dynamic prefix (e.g., K_REVISION for Cloud Run). Cannot be used with REDIS_KEY_PREFIX.', '# REDIS_KEY_PREFIX_VAR=K_REVISION'],
['REDIS_MAX_LISTENERS', 'number', 'Maximum event listeners per Redis client. Prevents memory leaks. Default: 40.', '# REDIS_MAX_LISTENERS=40'],
['REDIS_PING_INTERVAL', 'number', 'Ping interval in seconds to maintain connections. Default: 0 (disabled). Only set if experiencing timeouts.', '# REDIS_PING_INTERVAL=300'],
- ['FORCED_IN_MEMORY_CACHE_NAMESPACES', 'string', 'Comma-separated cache keys to force in-memory storage even when Redis is enabled.', '# FORCED_IN_MEMORY_CACHE_NAMESPACES=STATIC_CONFIG,ROLES'],
+ ['FORCED_IN_MEMORY_CACHE_NAMESPACES', 'string', 'Comma-separated cache keys to force in-memory storage even when Redis is enabled.', '# FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES'],
['REDIS_USE_ALTERNATIVE_DNS_LOOKUP', 'boolean', 'Enable alternate dnsLookup for TLS connections with AWS Elasticache. Required for Elasticache clusters with TLS.', '# REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true'],
]}
/>
@@ -1441,4 +1441,23 @@ Notes:
- For Redis Cluster mode, provide multiple URIs: `redis://node1:7001,redis://node2:7002,redis://node3:7003` (cluster mode is auto-detected).
- Use `rediss://` protocol for TLS connections and set `REDIS_CA` if your CA is not publicly trusted.
- `REDIS_KEY_PREFIX_VAR` and `REDIS_KEY_PREFIX` are mutually exclusive.
-- **AWS Elasticache with TLS**: Elasticache may need to use an alternate dnsLookup for TLS connections. Set `REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true` if using Elasticache with TLS. See [ioredis documentation](https://www.npmjs.com/package/ioredis) for more details.
\ No newline at end of file
+- **AWS Elasticache with TLS**: Elasticache may need to use an alternate dnsLookup for TLS connections. Set `REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true` if using Elasticache with TLS. See [ioredis documentation](https://www.npmjs.com/package/ioredis) for more details.
+
+#### Leader Election
+
+Configure distributed leader election for multi-instance deployments with Redis. Leader election ensures only one instance performs certain operations like scheduled tasks.
+
+
+
+Notes:
+- Leader election requires Redis to be enabled (`USE_REDIS=true`).
+- These settings are only relevant for multi-instance deployments.
+- The leader lease must be renewed before expiration to maintain leadership.
+- If lease renewal fails after max attempts, the instance will relinquish leadership.
\ No newline at end of file
diff --git a/pages/docs/configuration/librechat_yaml/object_structure/config.mdx b/pages/docs/configuration/librechat_yaml/object_structure/config.mdx
index 51635aa..c95b456 100644
--- a/pages/docs/configuration/librechat_yaml/object_structure/config.mdx
+++ b/pages/docs/configuration/librechat_yaml/object_structure/config.mdx
@@ -33,6 +33,56 @@
- 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"
+
+
+
+**Sub-keys:**
+
+
+
+- **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
-
+
see: [Interface Object Structure](/docs/configuration/librechat_yaml/object_structure/interface)
## temporaryChatRetention
diff --git a/pages/docs/configuration/librechat_yaml/object_structure/interface.mdx b/pages/docs/configuration/librechat_yaml/object_structure/interface.mdx
index 0acf5d8..2228560 100644
--- a/pages/docs/configuration/librechat_yaml/object_structure/interface.mdx
+++ b/pages/docs/configuration/librechat_yaml/object_structure/interface.mdx
@@ -363,3 +363,73 @@ Controls the global availability of file citations functionality. When disabled,
interface:
fileCitations: true
```
+
+## peoplePicker
+
+Controls which principal types (users, groups, roles) are available for selection in the people picker interface, typically used when sharing agents or managing access controls.
+
+**Key:**
+
+
+**Sub-keys:**
+
+
+
+**Default:**
+```yaml
+peoplePicker:
+ users: true
+ groups: true
+ roles: true
+```
+
+**Example:**
+```yaml filename="interface / peoplePicker"
+interface:
+ peoplePicker:
+ users: true
+ groups: true
+ roles: false # Disable role selection in people picker
+```
+
+## marketplace
+
+Enables/disables access to the Agent Marketplace.
+
+**Key:**
+
+
+**Sub-keys:**
+
+
+
+**Default:**
+```yaml
+marketplace:
+ use: false
+```
+
+**Example:**
+```yaml filename="interface / marketplace"
+interface:
+ marketplace:
+ use: true # Enable marketplace access
+```
diff --git a/pages/docs/configuration/librechat_yaml/object_structure/memory.mdx b/pages/docs/configuration/librechat_yaml/object_structure/memory.mdx
index 025ae0c..1b054e6 100644
--- a/pages/docs/configuration/librechat_yaml/object_structure/memory.mdx
+++ b/pages/docs/configuration/librechat_yaml/object_structure/memory.mdx
@@ -11,6 +11,7 @@ memory:
disabled: false
validKeys: ["user_preferences", "conversation_context", "personal_info"]
tokenLimit: 2000
+ charLimit: 10000
personalize: true
messageWindowSize: 5
agent:
@@ -71,6 +72,21 @@ memory:
tokenLimit: 2000
```
+## charLimit
+
+
+
+**Default:** `10000`
+
+```yaml filename="memory / charLimit"
+memory:
+ charLimit: 10000
+```
+
## personalize
+
+**Description:**
+Optional group name for organizing specs in the UI selector. The behavior depends on the `group` value:
+
+- **Endpoint name** (e.g., "openAI", "groq"): If `group` matches an existing endpoint name, the spec appears nested under that endpoint in the UI
+- **Custom name**: If `group` is a custom string that doesn't match any endpoint, it creates a separate collapsible section with that name
+- **Omitted**: If `group` is not specified, the spec appears as a standalone item at the top level
+
+**Example:**
+```yaml filename="modelSpecs / group"
+modelSpecs:
+ list:
+ # Nested under openAI endpoint
+ - name: "gpt-4o-custom"
+ label: "GPT-4 Optimized"
+ group: "openAI" # Matches endpoint name
+ preset:
+ endpoint: "openAI"
+ model: "gpt-4o"
+
+ # Custom group section
+ - name: "coding-assistant"
+ label: "Coding Assistant"
+ group: "my-assistants" # Custom group
+ preset:
+ endpoint: "openAI"
+ model: "gpt-4o"
+
+ # Standalone at top level
+ - name: "general-assistant"
+ label: "General Assistant"
+ # No group field - appears at top level
+ preset:
+ endpoint: "openAI"
+ model: "gpt-4o-mini"
+```
+
+---
+
### showIconInMenu
+
+### scraperProviderider
+
+
diff --git a/pages/docs/configuration/redis.mdx b/pages/docs/configuration/redis.mdx
index da04c4e..af76e75 100644
--- a/pages/docs/configuration/redis.mdx
+++ b/pages/docs/configuration/redis.mdx
@@ -194,7 +194,7 @@ Force specific cache namespaces to use in-memory storage even when Redis is enab
```bash
# Comma-separated list of cache keys
-FORCED_IN_MEMORY_CACHE_NAMESPACES=STATIC_CONFIG,ROLES,MESSAGES
+FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES
```
Valid cache keys are defined in the `CacheKeys` enum from `librechat-data-provider`.
@@ -240,7 +240,7 @@ REDIS_CA=/etc/ssl/redis-ca.pem
REDIS_KEY_PREFIX_VAR=DEPLOYMENT_ID
REDIS_MAX_LISTENERS=100
REDIS_PING_INTERVAL=300
-FORCED_IN_MEMORY_CACHE_NAMESPACES=STATIC_CONFIG,ROLES
+FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES
```
### Cluster Setup
diff --git a/pages/docs/features/web_search.mdx b/pages/docs/features/web_search.mdx
index 1a2a3f4..45957c1 100644
--- a/pages/docs/features/web_search.mdx
+++ b/pages/docs/features/web_search.mdx
@@ -18,6 +18,8 @@ To get started with web search, you'll need to configure API keys for all three
FIRECRAWL_API_KEY=your_firecrawl_api_key
# Optional: Custom Firecrawl API URL
FIRECRAWL_API_URL=your_firecrawl_api_url
+ # Optional: Firecrawl API version (v0 or v1)
+ # FIRECRAWL_VERSION=v1
# Reranker (Required)
JINA_API_KEY=your_jina_api_key
@@ -164,7 +166,7 @@ webSearch:
# ... variable configurations ...
searchProvider: "serper" # Only use Serper for search
# searchProvider: "searxng" # Only use SearXNG for search
- scraperType: "firecrawl" # Only use Firecrawl for scraping
+ scraperProvider: "firecrawl" # Only use Firecrawl for scraping
rerankerType: "jina" # Only use Jina for reranking
```