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:** - - + ### 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 ```