diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/anyscale.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/anyscale.mdx index 870bc5236..c88d1aed6 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/anyscale.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/anyscale.mdx @@ -31,8 +31,6 @@ endpoints: fetch: true titleConvo: true titleModel: "meta-llama/Llama-2-7b-chat-hf" - summarize: false - summaryModel: "meta-llama/Llama-2-7b-chat-hf" modelDisplayLabel: "Anyscale" ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/apipie.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/apipie.mdx index 4d415ecaf..665aad41e 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/apipie.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/apipie.mdx @@ -45,8 +45,6 @@ endpoints: fetch: false titleConvo: true titleModel: "claude-3-haiku" - summarize: false - summaryModel: "claude-3-haiku" dropParams: ["stream"] modelDisplayLabel: "APIpie" ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/azure.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/azure.mdx index 63b127a5f..d45e77776 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/azure.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/azure.mdx @@ -17,7 +17,6 @@ endpoints: azureOpenAI: # Endpoint-level configuration titleModel: "llama-70b-chat" - plugins: true assistants: true groups: # Group-level configuration @@ -94,15 +93,11 @@ To integrate Azure OpenAI with LibreChat, specific fields must be configured in @@ -113,25 +108,13 @@ To integrate Azure OpenAI with LibreChat, specific fields must be configured in ]} /> -**Custom Order (Optional):** - - -The `customOrder` option is commented out, as it is optional. - Example of these endpoint-level settings in your `librechat.yaml` file: ```yaml filename="librechat.yaml" endpoints: azureOpenAI: titleModel: "gpt-3.5-turbo-1106" - plugins: true assistants: true - summarize: true - summaryModel: "gpt-3.5-turbo-1106" titleConvo: true titleMethod: "functions" groups: @@ -358,8 +341,7 @@ endpoints: - For this reason, it's recommended you use only one region or resource group for Azure OpenAI Assistants, or you will experience an error. - Uploading to "OpenAI" is the default behavior for official `code_interpreter` and `retrieval` capabilities. - Downloading files that assistants generate will soon be supported. -- As of May 19th 2024, retrieval and streaming are not yet supported through Azure OpenAI. - - To avoid any errors with retrieval while it's not supported, it's recommended to disable the capability altogether through the `azureAssistants` endpoint config: +- The default `azureAssistants` capabilities include `retrieval`. To turn it off, list the capabilities you want explicitly and omit it: ```yaml filename="librechat.yaml" endpoints: @@ -371,27 +353,6 @@ endpoints: capabilities: ["code_interpreter", "actions", "tools"] ``` - - By default, all capabilities, except retrieval, are enabled. - -### Using Plugins with Azure - -To use the Plugins endpoint with Azure OpenAI, you need a deployment supporting **[function calling](https://techcommunity.microsoft.com/t5/azure-ai-services-blog/function-calling-is-now-available-in-azure-openai-service/ba-p/3879241)**. Otherwise, set "Functions" off in the Agent settings. When you are not using "functions" mode, it's recommended to have "skip completion" off as well, which is a review step of what the agent generated. - -To use Azure with the Plugins endpoint, make sure the field `plugins` is set to `true` in your Azure OpenAI endpoint config: - -```yaml filename="librechat.yaml" -# Example Azure OpenAI Object Structure -endpoints: - azureOpenAI: - plugins: true # <------- Set this - groups: - # omitted for brevity -``` - -Configuring the `plugins` field will configure Plugins to use Azure models. - -**NOTE**: The current configuration through `librechat.yaml` uses the primary model you select from the frontend for Plugin use, which is not usually how it works without Azure, where instead the "Agent" model is used. The Agent model setting can be ignored when using Plugins through Azure. - ### Using a Specified Base URL with Azure The base URL for Azure OpenAI API requests can be dynamically configured. This is useful for proxying services such as [Cloudflare AI Gateway](https://developers.cloudflare.com/ai-gateway/providers/azureopenai/), or if you wish to explicitly override the baseURL handling of the app. diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/fireworks.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/fireworks.mdx index 845d60733..8e54446d0 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/fireworks.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/fireworks.mdx @@ -31,8 +31,6 @@ endpoints: fetch: true titleConvo: true titleModel: "accounts/fireworks/models/llama-v2-7b-chat" - summarize: false - summaryModel: "accounts/fireworks/models/llama-v2-7b-chat" modelDisplayLabel: "Fireworks" dropParams: ["user"] ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/huggingface.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/huggingface.mdx index 04bd2c5b2..91472f594 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/huggingface.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/huggingface.mdx @@ -38,7 +38,7 @@ endpoints: "mistralai/Mixtral-8x7B-Instruct-v0.1", "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO", ] - fetch: true + fetch: false titleConvo: true titleModel: "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO" dropParams: ["top_p"] diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/litellm.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/litellm.mdx index 19b13a71d..ea6def3a4 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/litellm.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/litellm.mdx @@ -22,8 +22,6 @@ endpoints: fetch: true titleConvo: true titleModel: "gpt-3.5-turbo" - summarize: false - summaryModel: "gpt-3.5-turbo" modelDisplayLabel: "LiteLLM" ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/mlx.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/mlx.mdx index 8e1861ae1..ba7ce6712 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/mlx.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/mlx.mdx @@ -23,8 +23,6 @@ endpoints: fetch: false # fetching list of models is not supported titleConvo: true titleModel: "current_model" - summarize: false - summaryModel: "current_model" modelDisplayLabel: "Apple MLX" addParams: max_tokens: 2000 diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/neurochain.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/neurochain.mdx index 275fffdb6..512d4ddc0 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/neurochain.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/neurochain.mdx @@ -23,8 +23,6 @@ endpoints: fetch: true titleConvo: true titleModel: "current_model" - summarize: false - summaryModel: "current_model" modelDisplayLabel: "NeurochainAI" iconURL: "https://raw.githubusercontent.com/LibreChat-AI/librechat-config-yaml/refs/heads/main/icons/NeurochainAI.png" ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/ollama.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/ollama.mdx index 54dfea065..7e6ab5772 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/ollama.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/ollama.mdx @@ -30,8 +30,6 @@ endpoints: fetch: true titleConvo: true titleModel: "current_model" - summarize: false - summaryModel: "current_model" modelDisplayLabel: "Ollama" ``` @@ -59,8 +57,6 @@ endpoints: fetch: false # pinned to the list above; set true to discover models from the server titleConvo: true titleModel: "current_model" - summarize: false - summaryModel: "current_model" modelDisplayLabel: "Ollama" addParams: "stop": [ diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/perplexity.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/perplexity.mdx index 91b3ba649..39211199b 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/perplexity.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/perplexity.mdx @@ -36,8 +36,6 @@ endpoints: fetch: false titleConvo: true titleModel: "llama-3-sonar-small-32k-chat" - summarize: false - summaryModel: "llama-3-sonar-small-32k-chat" dropParams: ["stop", "frequency_penalty"] modelDisplayLabel: "Perplexity" ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/portkey.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/portkey.mdx index d1fe79799..306a1a93d 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/portkey.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/portkey.mdx @@ -35,8 +35,6 @@ endpoints: fetch: true titleConvo: true titleModel: "current_model" - summarize: false - summaryModel: "current_model" modelDisplayLabel: "Portkey:OpenAI" iconURL: https://images.crunchbase.com/image/upload/c_pad,f_auto,q_auto:eco,dpr_1/rjqy7ghvjoiu4cd1xjbf ``` @@ -57,8 +55,6 @@ endpoints: fetch: true titleConvo: true titleModel: "current_model" - summarize: false - summaryModel: "current_model" modelDisplayLabel: "Portkey:Llama" iconURL: https://images.crunchbase.com/image/upload/c_pad,f_auto,q_auto:eco,dpr_1/rjqy7ghvjoiu4cd1xjbf ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/shuttleai.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/shuttleai.mdx index 9abcff4c8..2dc5a1a5e 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/shuttleai.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/shuttleai.mdx @@ -31,8 +31,6 @@ endpoints: fetch: true titleConvo: true titleModel: "shuttle-2.5-mini" - summarize: false - summaryModel: "shuttle-2.5-mini" modelDisplayLabel: "ShuttleAI" dropParams: ["user", "stop"] ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/togetherai.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/togetherai.mdx index 19dd4c7ce..707f9698c 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/togetherai.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/togetherai.mdx @@ -132,8 +132,6 @@ endpoints: fetch: false # fetching list of models is not supported titleConvo: true titleModel: "togethercomputer/llama-2-7b-chat" - summarize: false - summaryModel: "togethercomputer/llama-2-7b-chat" modelDisplayLabel: "together.ai" ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/truefoundry.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/truefoundry.mdx index 9d640bda2..0fd49e5e4 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/truefoundry.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/truefoundry.mdx @@ -32,8 +32,6 @@ endpoints: fetch: true titleConvo: true titleModel: "current_model" - summarize: false - summaryModel: "current_model" modelDisplayLabel: "TrueFoundry:OpenAI" ``` diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/vllm.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/vllm.mdx index 9773d8350..683f1a65c 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/vllm.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/vllm.mdx @@ -22,8 +22,6 @@ endpoints: titleConvo: true titleModel: "current_model" titleMessageRole: "user" - summarize: false - summaryModel: "current_model" ``` ## Notes diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/vultrcloudinference.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/vultrcloudinference.mdx index 606bf209a..d49f6d053 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/vultrcloudinference.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/vultrcloudinference.mdx @@ -23,7 +23,7 @@ endpoints: custom: - name: 'Vultr Cloud Inference' apiKey: '${VULTRINFERENCE_TOKEN}' - baseURL: 'https://api.vultrinference.com/v1/chat/completions' + baseURL: 'https://api.vultrinference.com/v1' models: default: [ "llama2-7b-chat-Q5_K_M.gguf", diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/xai.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/xai.mdx index 1267e6104..01989ccf2 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/xai.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/xai.mdx @@ -30,8 +30,6 @@ endpoints: titleConvo: true titleMethod: "completion" titleModel: "grok-beta" - summarize: false - summaryModel: "grok-beta" modelDisplayLabel: "Grok" ``` diff --git a/content/docs/configuration/librechat_yaml/object_structure/agents.mdx b/content/docs/configuration/librechat_yaml/object_structure/agents.mdx index d7345b777..b02c74e5b 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/agents.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/agents.mdx @@ -24,7 +24,7 @@ endpoints: disableBuilder: false # (optional) Agent Capabilities available to all users. Omit the ones you wish to exclude. Defaults to list below. # Opt-in capabilities: "programmatic_tools", "stateful_code_sessions", "run_in_background", and "tool_intents". - # capabilities: ["deferred_tools", "execute_code", "file_search", "web_search", "artifacts", "subagents", "actions", "context", "skills", "memory", "ask_user_question", "tools", "chain", "ocr"] + # capabilities: ["deferred_tools", "execute_code", "file_search", "web_search", "artifacts", "subagents", "actions", "context", "skills", "memory", "ask_user_question", "tools", "ocr"] # (optional) File citation configuration for file_search capability maxCitations: 30 # Maximum total citations in responses (1-50) maxCitationsPerFile: 7 # Maximum citations from each file (1-10) @@ -108,7 +108,7 @@ endpoints: ]} /> -**Default:** `25` +**Default:** `50` **Example:** @@ -131,7 +131,7 @@ For more information about agent steps, see [Max Agent Steps](/docs/features/age ]} /> -**Default:** If omitted, defaults to the value of recursionLimit or 50 if recursionLimit is also omitted. +**Default:** None. When omitted, no cap is applied to the limit a run resolves to (the `recursionLimit` default, or a per-agent override). **Example:** @@ -332,7 +332,7 @@ allowedProviders: ]} /> -**Default:** `["deferred_tools", "execute_code", "file_search", "web_search", "artifacts", "subagents", "actions", "context", "skills", "memory", "ask_user_question", "tools", "chain", "ocr"]` +**Default:** `["deferred_tools", "execute_code", "file_search", "web_search", "artifacts", "subagents", "actions", "context", "skills", "memory", "ask_user_question", "tools", "ocr"]` `programmatic_tools`, `stateful_code_sessions`, `run_in_background`, and `tool_intents` are opt-in and must be added explicitly. Programmatic tools and stateful sessions also require `execute_code` and a compatible Code Interpreter deployment. The Agent Builder disables Programmatic MCP selections without Code Interpreter, and the server strips stale programmatic caller options when code execution is unavailable. `run_in_background` makes Code Interpreter tools eligible by default and allows per-tool opt-in for eligible MCP, Plugin, and Action tools; background code execution also requires `execute_code` and Code Interpreter. @@ -357,7 +357,6 @@ capabilities: - 'memory' - 'ask_user_question' - 'tools' - - 'chain' - 'ocr' # Optional and highly experimental: reuse a user-, agent-and-user-, or # conversation-scoped workspace. Requires LIBRECHAT_CODE_BASEURL_STATEFUL @@ -371,6 +370,8 @@ capabilities: **Note:** This field is optional. If omitted, the default behavior is to include all the capabilities listed in the default. +`chain`, `hide_sequential_outputs`, and `end_after_tools` are legacy values. They are still accepted so older configurations validate, but they are not part of the default list. `chain` is deprecated: chain authoring is retired and the value has no effect. + ## statefulCodeSessions Configures the sharing scopes and optional execution backends for highly experimental stateful Code Interpreter workspaces. @@ -395,10 +396,22 @@ Configures the sharing scopes and optional execution backends for highly experim 'Optional named managed or attached Code API environments shown in the Agent Builder.', 'Unset; LIBRECHAT_CODE_BASEURL_STATEFUL remains the stateful endpoint', ], + [ + 'allowEnvironmentSelection', + 'Boolean', + "Lets a new chat pick a machine from its agent's saved allowlist instead of the agent's default. Omission allows it; false keeps every agent on its fixed machine.", + 'Allowed', + ], + [ + 'maxEnvironmentChoices', + 'Integer', + 'Maximum additional machine choices saved on one agent (1-128).', + '32', + ], [ 'principalWorkers', 'Object', - 'Optional deployment ceiling for personal worker enrollment. `enabled` defaults to true and `maxPerUser` defaults to 5.', + 'Optional deployment ceiling for personal worker enrollment. enabled defaults to true and maxPerUser defaults to 5. browserSetup is described below.', '{ enabled: true, maxPerUser: 5 }', ], [ @@ -410,11 +423,43 @@ Configures the sharing scopes and optional execution backends for highly experim ]} /> +`principalWorkers.browserSetup` configures browser-based worker setup. It requires `instance`, the canonical public instance URL including any deployment prefix. All other keys are optional. + + + Attached environments accept `environments[].configSchema.limits.maxQueueWaitMs`, which controls how long a request may retry waiting for workspace capacity. The default and maximum are `300000` milliseconds (5 minutes). Set it to `0` to disable client retries after the initial admission attempt; it does not cancel work that is already admitted or running. These fields belong under `configSchema.limits`, **not** `userConfig.bash`. `environments[].configSchema.limits.maxRequestTimeoutMs` optionally bounds the **total HTTP time for one workspace tool call**, including admission, execution, settlement, and delivery. It accepts `1` through `610000` ms, but the config rejects budgets too small to leave any command execution time after admission and the 10-second settlement/delivery reserve. Without it, admission still has a 30-second budget per attempt; `maxQueueWaitMs` remains a separate retry horizon. **Do not enable longer admission** until every LibreChat API replica understands this field, the Code API route honors per-request queue allowances, and the shortest timeout across the live proxy/ingress path has been measured. An expired mutation may have completed on the worker, so LibreChat does not retry an ambiguous timeout. -With a total request budget, `environments[].configSchema.limits.minCommandAdmissionMs` reserves time for a command to enter the worker before execution starts. The default is `10000` ms; set `1000`–`300000` ms. The request budget must **exceed** this allowance plus 10000 ms of settlement/delivery grace; without a total budget, the setting has no effect. The Bash execution limit advertised to an Agent is the smaller of its configured or upstream ceiling and the time left after those reserves. For example, a 90000 ms request budget with an 80000 ms command ceiling and the default reserve advertises at most a 70000 ms command. +With a total request budget, `environments[].configSchema.limits.minCommandAdmissionMs` reserves time for a command to enter the worker before execution starts. The default is `10000` ms; set `1000` to `300000` ms. The request budget must **exceed** this allowance plus 10000 ms of settlement/delivery grace; without a total budget, the setting has no effect. The Bash execution limit advertised to an Agent is the smaller of its configured or upstream ceiling and the time left after those reserves. For example, a 90000 ms request budget with an 80000 ms command ceiling and the default reserve advertises at most a 70000 ms command. + +`environments[].configSchema.admission` controls how an attached environment waits for workspace capacity. It is strict, so unknown keys fail validation. + + ```yaml filename="endpoints / agents / statefulCodeSessions" statefulCodeSessions: @@ -451,9 +496,9 @@ statefulCodeSessions: # maxRequestTimeoutMs: 160000 # minCommandAdmissionMs: 10000 # maxQueueWaitMs: 300000 - # After upgrading Code API and opting in the worker with --linked-worktree-lanes: + # Linked-worktree lanes are on by default. To keep every request in its checkout's lane: # workspaces: - # linkedWorktrees: true + # linkedWorktrees: false # Optional: require exact matching even on workers supporting tolerant edits. # edits: # tolerantMatching: false @@ -471,7 +516,7 @@ statefulCodeSessions: `allowedEnvironments` is required whenever the block is present and must include at least one workspace scope. Omit the entire block to allow all three scopes and continue routing stateful work through [`LIBRECHAT_CODE_BASEURL_STATEFUL`](/docs/configuration/dotenv#stateful-code-interpreter-endpoint). The personal default and Agent Builder only permit allowed values. If an administrator tightens the policy, a saved personal default remains visible but disabled, and new Agents use the first allowed scope. Existing enabled Agents retain their saved scope, but a now-disallowed scope fails closed at runtime until the Agent is reconfigured. -`conversationMoves.enabled: true` lets the conversation owner explicitly move a sealed attached workspace to a compatible environment and recover a missing workspace without replacing chat history or restoring old workspace files. To additionally allow a saved chat to **attach** a workspace or **leave** one for normal chat, set `conversationMoves.allowAttachDetach: true`. Both switches are off by default; enabling moves alone retains move-only behavior. Upgrade **all** API replicas, then enable [`CODE_ENVIRONMENT_DECISION_VERSION=1`](/docs/configuration/dotenv#code-interpreter) before opting in. Ownership, target access, active work, and current policy are rechecked at the transition; a running generation cannot be moved. +`conversationMoves.enabled: true` lets the conversation owner explicitly move a sealed attached workspace to a compatible environment and recover a missing workspace without replacing chat history or restoring old workspace files. To additionally allow a saved chat to **attach** a workspace or **leave** one for normal chat, set `conversationMoves.allowAttachDetach: true`. Both switches are off by default; enabling moves alone retains move-only behavior. Decision protocol version 1 is advertised by default. In a rolling upgrade from a release without it, set [`CODE_ENVIRONMENT_DECISION_VERSION=0`](/docs/configuration/dotenv#code-interpreter) before the first upgraded replica starts, upgrade **all** API replicas, then remove the variable (or set it to `1`) and refresh clients before opting in. Ownership, target access, active work, and current policy are rechecked at the transition; a running generation cannot be moved. ```yaml filename="endpoints / agents / statefulCodeSessions / conversationMoves" statefulCodeSessions: @@ -495,7 +540,12 @@ When `environments` is non-empty, every entry requires a unique `id`, a display - `pairing.tokenEnv` names the environment variable containing the bridge administrator token; it never contains the token itself. Pairing requires HTTPS except for loopback development. - `configSchema.permissions` optionally lets authorized owners choose `fileWrite` and `commandExecution` policy for personal environments under **Settings > Code environments**. Each field requires a non-empty `allowed` list containing `allow`, `ask`, and/or `deny`; `default` is `ask` when omitted and must appear in `allowed`. LibreChat rejects stored values outside the administrator's list. - `configSchema.limits.maxCommandTimeoutMs` sets the largest Bash timeout the model may request for that environment. It accepts `1` through `300000` ms; omission preserves the 30-second default. With a total request budget, the advertised command timeout also fits the remaining time after command admission, settlement, and delivery. This is a deployment ceiling and is not user-configurable. -- `configSchema.workspaces.linkedWorktrees: true` enables per-worktree scheduling only for attached workspaces advertising `git_linked_worktree`; omission keeps all requests in the checkout's root lane. Upgrade LibreChat **before** a worker advertises this scope, deploy a Code API supporting linked-worktree lanes, then start the worker with `--linked-worktree-lanes` before enabling the YAML setting. File operations targeting a path inside `.worktrees/` and Bash commands with a `cwd` there use that lane and return checkout-relative paths. Commands that `cd` inside their command text, checkout-root operations, conversation workspace instances, and environment actions stay root-scoped. +- `configSchema.workspaces.linkedWorktrees` controls per-worktree scheduling for attached workspaces advertising `git_linked_worktree`. Omission allows it; `false` keeps every request scoped to its checkout's root lane. It has no effect unless the worker advertises that scope, which requires a Code API supporting linked-worktree lanes and a worker started with `--linked-worktree-lanes`. Upgrade LibreChat **before** a worker advertises this scope. File operations targeting a path inside `.worktrees/` and Bash commands with a `cwd` there use that lane and return checkout-relative paths. Commands that `cd` inside their command text, checkout-root operations, conversation workspace instances, and environment actions stay root-scoped. +- `configSchema.workspaces.allowCheckoutSelection: true` permits explicit per-conversation checkout choices once every API replica supports them. Omission (`false`) preserves automatic worker isolation and hides the selector. +- `configSchema.limits.defaultCommandTimeoutMs` sets the foreground Bash timeout used when a call omits `timeoutMs`. It accepts `1` through `300000` ms; omission keeps 30 seconds, and the effective command ceiling may lower it. +- `configSchema.limits.defaultReadFileLines` sets the attached `read_file` line window when `max_lines` is omitted. It accepts `1` through `500`; omission keeps 200 lines, and the byte budget can truncate the result sooner. +- `configSchema.limits.maxRunTimeoutMs` sets a separate overall call deadline across credentials, backoff, and HTTP attempts. It accepts `1` through `610000` ms; when omitted, `maxRequestTimeoutMs` remains the total budget. The same reserve rules as `maxRequestTimeoutMs` apply. +- `configSchema.admission` tunes how attached environments wait for capacity; see the table below. - `configSchema.edits.tolerantMatching` permits whitespace-tolerant fallback by default on attached workers advertising `tolerant_match`; set it to `false` to require exact matching, including protected edit previews. Matching must remain unique unless the edit explicitly sets `replace_all`. Older workers receive no new matching fields; attached `replace_all` is refused before dispatch unless the worker advertises it. These capabilities require compatible Code API and worker builds implementing [Code Interpreter #271](https://github.com/LibreChat-AI/code-interpreter/pull/271). - Do not configure `settings` in deployment YAML. LibreChat supplies that request-scoped field from the authenticated owner's server-validated preferences. - Only file-write and command-execution policy is user-configurable. Isolation, networking, mounts, privileged execution, ingress, egress, and secrets remain administrator-controlled. @@ -517,6 +567,12 @@ Configures the trusted internal origin used by Agent event delivery. Most deploy 'Overrides the current process bound listener for trusted internal trigger admission. Use only when delivery must traverse another trusted HTTP origin.', '', ], + [ + 'deadLetterRetentionDays', + 'Integer', + 'Days a dead-lettered trigger delivery stays available for operator review and requeue before it is removed with its event payload (1-3650).', + 'Unset; dead letters are kept until an operator acts', + ], [ 'idlePolling', 'Object', @@ -537,7 +593,7 @@ Bound child continuations are automatic. Older `childTurns`, `completionWakeups` Leave `selfUrl` unset for the normal bound-listener path. Set it only when trusted internal trigger admission must traverse another HTTP(S) origin, such as a TLS front door. `AGENT_TRIGGERS_SELF_URL` remains a compatibility fallback when this field is omitted. See [Agents API events](/docs/features/agents_api#agent-events) and [Automatic Parent Continuation](/docs/features/subagents#automatic-parent-continuation). -`eventDriven.idlePolling` caps per-replica recovery polling when nothing is ready: `deliveryMaxIntervalMs` defaults to `15000` (valid `1000`–`300000`), `queuedTurnMaxIntervalMs` and `maintenanceMaxIntervalMs` each default to `120000` (valid `30000`–`300000`), and `completionWaitMaxIntervalMs` defaults to `60000` (valid `5000`–`300000`). The latter bounds rechecks while a background or Subagent result is pending or its parent turn is busy. Readiness events expedite delivery; these caps retain cross-replica and crash-recovery fallbacks rather than defining normal completion latency. +`eventDriven.idlePolling` caps per-replica recovery polling when nothing is ready: `deliveryMaxIntervalMs` defaults to `15000` (valid `1000` to `300000`), `queuedTurnMaxIntervalMs` and `maintenanceMaxIntervalMs` each default to `120000` (valid `30000` to `300000`), and `completionWaitMaxIntervalMs` defaults to `60000` (valid `5000` to `300000`). The latter bounds rechecks while a background or Subagent result is pending or its parent turn is busy. Readiness events expedite delivery; these caps retain cross-replica and crash-recovery fallbacks rather than defining normal completion latency. ```yaml filename="endpoints / agents / eventDriven / idlePolling" eventDriven: @@ -792,6 +848,12 @@ Controls whether supported completed background tools and detached Subagents aut 'Maximum characters retained from each background completion result before delivery.', '24576', ], + [ + 'completionReceiptBatching', + 'Boolean', + 'Batch compatible completions into one continuation receipt. Set to false while replicas that predate receipt batching still serve traffic, because they cannot read batched receipts.', + 'true', + ], [ 'completionResultBatchSize', 'Integer', @@ -840,6 +902,18 @@ Controls human review for Agent tool calls. The deployment-wide policy is disabl 'Sets unmatched-call behavior: `default` asks, `dontAsk` denies, and `bypass` approves unless denied.', 'default', ], + [ + 'agentModes', + 'Boolean', + 'Enables agent-scoped approval modes and grants. Enable only after every replica supports them.', + 'Omitted', + ], + [ + 'grantLookupTimeoutMs', + 'Integer', + 'Bound on stored grant lookups (100-5000 ms). A lookup that times out falls back to manual review, never to automatic approval.', + 'Omitted', + ], ['allow', 'Array of strings', 'Glob patterns for calls that can run without prompting.', ''], ['deny', 'Array of strings', 'Glob patterns for calls that are always denied. Deny rules win.', ''], ['ask', 'Array of strings', 'Glob patterns for calls that always require review.', ''], @@ -849,6 +923,24 @@ Controls human review for Agent tool calls. The deployment-wide policy is disabl 'Optional explanation shown in the approval prompt. Use `{tool}` to insert the tool name.', '', ], + [ + 'allowAlways', + 'Boolean', + 'Offers "Always allow" on the approval card. The choice auto-approves that exact tool for the rest of the conversation. deny and ask rules and hooks still win, and stored choices are ignored under dontAsk or once this is turned off. Enable only after every replica supports it.', + 'false', + ], + [ + 'allowAlwaysMaxTools', + 'Integer', + 'Most tools one conversation may remember with "Always allow" (1-1024). Once reached, the card stops offering the choice for new tools.', + '64', + ], + [ + 'allowAlwaysMaxToolNameLength', + 'Integer', + 'Longest tool name that may be remembered (1-1024).', + '256', + ], [ 'hooks', 'Array of objects', @@ -980,7 +1072,7 @@ Raise this when a deployment runs orchestration-heavy agents that need to delega - Model spec `subagents.agent_ids` allowlists, validated in the same configuration pass - The Agent Builder panel, which stops accepting new subagent entries at the configured value -Model specs accept only `enabled`, `allowSelf`, and `agent_ids` under `subagents`. Subagent `graphs` are an agent-level feature: a `graphs` key on a model spec is dropped when the config is parsed, without an error. +Model specs accept only `enabled`, `allowSelf`, `shareFiles`, and `agent_ids` under `subagents`. Subagent `graphs` are an agent-level feature: a `graphs` key on a model spec is dropped when the config is parsed, without an error. `maxSubagents` must be a whole number between 1 and 50. A value outside that range fails @@ -1020,6 +1112,129 @@ endpoints: from `1` to `1000`; `maxPrivateBytes` bounds retained private output snapshots; and `ttlMs` is the active manifest lifetime, capped at 24 hours. Omitting this block leaves sharing disabled. +## streamKeepaliveIntervalMs + +Interval between SSE comment frames on an otherwise silent chat stream, so proxies with an idle timeout keep the connection open. Set `0` to disable the keepalive; otherwise use `1000` through `3600000` ms. The default is `25000`, below the idle cutoff of common proxies. + +```yaml filename="endpoints / agents / streamKeepaliveIntervalMs" +streamKeepaliveIntervalMs: 25000 +``` + +## hostFileEdits + +Host-side budgets for skill and sandbox file edits. Attached workers keep their own limits. Every key is optional. + + + +```yaml filename="endpoints / agents / hostFileEdits" +hostFileEdits: + maxEdits: 100 + timeoutMs: 2000 +``` + +## linkedInstructions + +Budget and cache settings for resolving an agent's linked prompt-group instructions. Omitting the block applies the defaults. + + + +```yaml filename="endpoints / agents / linkedInstructions" +linkedInstructions: + timeoutMs: 2000 + native: + cacheTtlMs: 300000 +``` + +## maxRetainedToolCountChars + + + +Raise it for deployments whose tools legitimately return more output, or lower it on slow hardware. + +## subagentActivity + +Server-side resource and recovery policy for live child activity. Every key is optional. + + + +## avatarRefresh + +Controls S3 avatar re-signing for agent list responses. + + + +```yaml filename="endpoints / agents / avatarRefresh" +avatarRefresh: + coverageLimit: 1000 +``` + +## askUserQuestion + +Controls the `ask_user_question` tool. `retainedAnswers` quotes every answer a user gave to an agent's question in the run's user context, so the answers survive after the messages that carried them are summarized, pruned, or dropped from the context window. It is on by default. + + + +```yaml filename="endpoints / agents / askUserQuestion" +askUserQuestion: + retainedAnswers: + enabled: true + maxTokens: 4096 +``` + ## Code API upload recovery These settings bound concurrent uploads and retry waiting when Code API responds with rate limiting. They apply per Code API route and authenticated principal, preventing one throttled user or deployment from blocking unrelated upload recovery. @@ -1175,7 +1390,7 @@ The `capabilities` field allows you to enable or disable specific functionalitie - **memory**: Lets agents use `set_memory` and `delete_memory` when memory is configured and the user has access. Enabled by default; removed at runtime when memory is disabled. - **ask_user_question**: Lets agents pause to ask one to four related questions in a single form and resume with the answers. Enabled by default. - **tools**: Grants the agent access to various tools. -- **chain**: Enables Beta feature for agent chaining, also known as Mixture-of-Agents (MoA) workflows. +- **chain**: Deprecated. Retained for legacy configuration only; chain authoring is retired and the value has no effect. - **ocr**: Optionally enhances "Upload as Text" in chat, and "File Context" for agents, allowing files to be uploaded and processed with OCR. **Requires an OCR service to be configured.** - **run_in_background**: Makes Code Interpreter execution and shell tools background-eligible by default and enables per-tool background opt-in for eligible MCP, Plugin, and Action tools. An Action-level switch opts in every eligible operation; OAuth Actions and operations that already define a `run_in_background` parameter are excluded. An agent can explicitly opt Code Interpreter out. The setting permits background execution; the model decides per call whether to use it. Requires `execute_code` and a configured Code Interpreter deployment for code. This capability is not enabled by default. - **tool_intents**: Adds live model-written intent labels to eligible tool calls. Native tools, including Code Interpreter tools, opt in automatically; MCP tools can be enabled individually or in bulk in the Agent Builder. Model specs use `describeIntent`. This capability is not enabled by default. @@ -1409,6 +1624,12 @@ The `subagents` field controls which isolated child agents a parent agent can sp 'Allows the agent to spawn itself in a fresh isolated context. Default: true.', 'allowSelf: true', ], + [ + 'shareFiles', + 'Boolean', + 'Opts this agent into run-scoped file sharing with its subagents. Requires fileSharing.enabled on the endpoint.', + 'shareFiles: true', + ], [ 'agent_ids', 'Array/List of Strings', diff --git a/content/docs/configuration/librechat_yaml/object_structure/anthropic_vertex.mdx b/content/docs/configuration/librechat_yaml/object_structure/anthropic_vertex.mdx index 67a7693cf..b81406e47 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/anthropic_vertex.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/anthropic_vertex.mdx @@ -60,6 +60,22 @@ endpoints: The `vertex` object contains all Vertex AI-specific configuration options. +### enabled + +**Key:** + + +**Default:** `true` when the `vertex` block is present + +**Example:** +```yaml filename="endpoints / anthropic / vertex / enabled" +enabled: false +``` + ### region **Key:** @@ -82,6 +98,8 @@ The `vertex` object contains all Vertex AI-specific configuration options. - `europe-west4` - `asia-southeast1` +The `region` value is not validated against this list. Any string passes configuration validation and is sent to Google Cloud as written, so an unsupported value surfaces as a request error from Vertex AI. + > **Important:** Claude Opus 4.7 and newer, Opus 5, Sonnet 5, and Fable/Mythos 5 or 5.1 require `global`, `us`, or `eu`. Specific regions such as `us-east5` serve Claude Sonnet 4.6 and earlier and return a model-not-found response for newer models. Use `global` for the broadest availability and no regional pricing premium, or `us`/`eu` when you need multi-region data residency. **Example:** @@ -105,6 +123,25 @@ region: "global" projectId: "${GOOGLE_PROJECT_ID}" ``` +### deploymentName + +**Key:** + + +**Default:** Not specified + +**Example:** +```yaml filename="endpoints / anthropic / vertex / deploymentName" +vertex: + deploymentName: claude-sonnet-4-20250514 + models: + claude-sonnet-4: true +``` + ### serviceKeyFile **Key:** @@ -168,11 +205,12 @@ models: Set a default deployment name and use boolean values for models that inherit it: ```yaml filename="Mixed format" -deploymentName: claude-sonnet-4-20250514 # Default deployment -models: - claude-sonnet-4: true # Uses default deploymentName - claude-3.5-haiku: - deploymentName: claude-3-5-haiku@20241022 # Override for this model +vertex: + deploymentName: claude-sonnet-4-20250514 # Default deployment + models: + claude-sonnet-4: true # Uses default deploymentName + claude-3.5-haiku: + deploymentName: claude-3-5-haiku@20241022 # Override for this model ``` ### Model Object Properties @@ -286,7 +324,7 @@ You can only configure one region per deployment. For multi-region needs, consid ### Region Issues **"Invalid region" or "Region not supported"** -- Use one of the supported regions listed above +- Check the `region` value: it is not validated by LibreChat, so a typo or unsupported region fails at the Vertex AI request - Try using `global` region which provides automatic routing - Check [Google Cloud's documentation](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude#regions) for the latest list of regions where Claude is available @@ -326,7 +364,7 @@ You can only configure one region per deployment. For multi-region needs, consid ## Notes -- Vertex AI and direct Anthropic API are mutually exclusive. When a `vertex` configuration section is present, the `ANTHROPIC_API_KEY` environment variable is ignored. +- Vertex AI and direct Anthropic API are mutually exclusive. When a `vertex` configuration section is present and `enabled` is not `false`, the `ANTHROPIC_API_KEY` environment variable is ignored. - Web search functionality is fully supported with Vertex AI. - Prompt caching is supported via automatic header filtering for Vertex AI compatibility. - Function calling and tool use work the same as with the direct Anthropic API. diff --git a/content/docs/configuration/librechat_yaml/object_structure/assistants_endpoint.mdx b/content/docs/configuration/librechat_yaml/object_structure/assistants_endpoint.mdx index 7fe9aaa1a..730a67a31 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/assistants_endpoint.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/assistants_endpoint.mdx @@ -31,7 +31,7 @@ endpoints: # (optional) Assistant Capabilities available to all users. Omit the ones you wish to exclude. Defaults to list below. # capabilities: ["code_interpreter", "retrieval", "actions", "tools", "image_vision"] ``` -> This configuration enables the builder interface for assistants, sets a polling interval of 500ms to check for run updates, and establishes a timeout of 10 seconds for assistant run operations. +> This configuration enables the builder interface for assistants and limits the endpoint to two supported assistant IDs. The commented `azureAssistants` block shows how to set a 500ms polling interval and a 10 second run timeout. ## disableBuilder @@ -64,7 +64,7 @@ disableBuilder: false ```yaml filename="endpoints / assistants / pollIntervalMs" pollIntervalMs: 2500 ``` -**Note:** Currently, this is only used by Azure Assistants. Higher values are recommended for Azure Assistants to avoid rate limiting errors. +**Note:** The value is read from the configuration of the endpoint that serves the run, so it applies to both `assistants` and `azureAssistants`. Higher values are recommended for Azure Assistants to avoid rate limiting errors. ## timeoutMs @@ -83,6 +83,48 @@ timeoutMs: 10000 ``` **Note:** Defaults to 3 minutes (180,000 ms). Run operation times can range between 50 seconds to 2 minutes but also exceed this. If the `timeoutMs` value is exceeded, the run will be cancelled. +## version + +**Key:** + + +**Default:** `2`; `azureAssistants` defaults to `1` when `endpoints.azureOpenAI.assistants` is enabled + +**Example:** +```yaml filename="endpoints / azureAssistants / version" +version: 1 +``` + +## models + +**Key:** + + +**Sub-keys:** + + + +**Example:** +```yaml filename="endpoints / assistants / models" +models: + default: ["gpt-4o"] + fetch: false +``` + ## supportedIds **Key:** diff --git a/content/docs/configuration/librechat_yaml/object_structure/aws_bedrock.mdx b/content/docs/configuration/librechat_yaml/object_structure/aws_bedrock.mdx index 5fc2a84c7..6717687b0 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/aws_bedrock.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/aws_bedrock.mdx @@ -193,26 +193,26 @@ endpoints: [ 'guardrailIdentifier', 'String', - 'The unique identifier of the guardrail to apply.', + 'The unique identifier of the guardrail to apply. Supports ${ENV_VAR} references.', 'Required when using guardrails.', ], [ 'guardrailVersion', 'String', - 'The version of the guardrail to use.', + 'The version of the guardrail to use. Supports ${ENV_VAR} references.', 'Required when using guardrails.', ], [ 'trace', 'String', 'Controls guardrail trace output for debugging. Options: "enabled", "enabled_full", or "disabled".', - 'Optional. Default: "disabled"', + 'Optional.', ], [ 'streamProcessingMode', 'String', 'Controls guardrail stream processing mode. Options: "sync" or "async".', - 'Optional. Default: "sync"', + 'Optional.', ], ]} /> diff --git a/content/docs/configuration/librechat_yaml/object_structure/azure_openai.mdx b/content/docs/configuration/librechat_yaml/object_structure/azure_openai.mdx index 2655b1226..48d4d0250 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/azure_openai.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/azure_openai.mdx @@ -45,7 +45,7 @@ endpoints: gpt-4-turbo: true ``` -> **Note:** Azure OpenAI endpoint supports all [Shared Endpoint Settings](/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings), including `streamRate`, `titleModel`, `titleMethod`, `titlePrompt`, `titlePromptTemplate`, and `titleEndpoint`. +> **Note:** The Azure OpenAI endpoint supports a subset of the [Shared Endpoint Settings](/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings), including `streamRate`, `titleConvo`, `titleModel`, `titleMethod`, `titlePrompt`, `titlePromptTemplate`, `titleTiming`, and the activity and reasoning label settings. `titleEndpoint`, `headers`, and `maxToolResultChars` are not available on this endpoint; use `additionalHeaders` on a group instead of `headers`. ## assistants @@ -72,7 +72,7 @@ assistants: true ]} /> -**Default:** Not specified +**Required:** yes. The list must contain at least one group. **Note:** [See example above.](#example-configuration) @@ -122,7 +122,7 @@ apiKey: "${WESTUS_API_KEY}" ]} /> -**Required:** yes +**Required:** yes, unless the group sets `serverless: true`. Setting `baseURL` does not remove this requirement. **Example:** ```yaml filename="endpoints / azureOpenAI / groups / {group_item} / instanceName" @@ -133,12 +133,44 @@ instanceName: "my-westus.cognitiveservices.azure.com" ``` +### deploymentName + +**Key:** + + +**Default:** Not specified + +**Example:** +```yaml filename="endpoints / azureOpenAI / groups / {group_item} / deploymentName" +deploymentName: gpt-4-turbo +``` + +### assistants + +**Key:** + + +**Default:** Not specified + +**Example:** +```yaml filename="endpoints / azureOpenAI / groups / {group_item} / assistants" +assistants: true +``` + ### version **Key:** diff --git a/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx b/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx index 6bdcec286..7e89d35b1 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx @@ -3,7 +3,7 @@ title: 'Custom Endpoint Object Structure' icon: Plug --- -Each endpoint in the `custom` array should have the following structure: +Each endpoint in the `custom` array should have the following structure. Settings shared with the other endpoints, such as `streamRate`, the `title*` settings, `activity*` settings, and `maxToolResultChars`, are described in [Shared Endpoint Settings](/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings). ## Example @@ -275,6 +275,7 @@ iconURL: openAI - "groq" - "Helicone" - "Huggingface" + - "Lemonade" - "Mistral" - "MLX" - "Moonshot" @@ -285,6 +286,7 @@ iconURL: openAI - "ShuttleAI" - "together.ai" - "Unify" + - "Vercel" - "xai" ## models @@ -374,10 +376,17 @@ userIdQuery: true **Key:** -**Default:** `false` +**Default:** Titles are generated unless this is set to `false` (or the `TITLE_CONVO` environment variable is disabled). **Example:** @@ -452,12 +461,12 @@ titleMethod: 'completion' 'titleModel', 'String', 'Specifies the model to use for titles.', - 'Defaults to "gpt-3.5-turbo" if omitted. May cause issues if "gpt-3.5-turbo" is not available. You can also dynamically use the current conversation model by setting it to "current_model".', + 'When omitted, the conversation\'s model is used. Setting it to "current_model" selects the conversation model explicitly.', ], ]} /> -**Default:** `"gpt-3.5-turbo"` +**Default:** The conversation's model **Example:** @@ -710,9 +719,33 @@ dropParams: [ 'paramDefinitions', 'Array/List', - 'Custom setting definitions for this endpoint.', + 'Custom setting definitions for this endpoint. See [Custom Params](/docs/configuration/librechat_yaml/object_structure/custom_params).', 'See default parameter definitions.', ], + [ + 'reasoningCatalogTimeoutMs', + 'Integer', + "Milliseconds to wait for each request when reading an OpenRouter endpoint's per-model reasoning efforts (500-30000).", + 'reasoningCatalogTimeoutMs: 5000', + ], + [ + 'reasoningCatalogMaxPages', + 'Integer', + "Most pages of an OpenRouter endpoint's model catalog to read before treating it as unavailable (1-200).", + 'reasoningCatalogMaxPages: 20', + ], + [ + 'reasoningCatalogFailureTtlMs', + 'Integer', + 'Milliseconds a failed or unreadable OpenRouter catalog is remembered before it is requested again (0-600000). 0 retries on every request.', + 'reasoningCatalogFailureTtlMs: 30000', + ], + [ + 'reasoningCatalogTtlMs', + 'Integer', + 'Milliseconds a successfully read OpenRouter catalog is kept before it is read again (60000-86400000).', + 'reasoningCatalogTtlMs: 3600000', + ], ]} /> @@ -764,6 +797,12 @@ Each key is a model name. Each model entry supports: ['context', 'Number', 'Maximum context window for the model.', 'Required'], ['cacheRead', 'Number', 'Cached input read rate per million tokens.', 'Optional'], ['cacheWrite', 'Number', 'Cached input write rate per million tokens.', 'Optional'], + [ + 'cacheWrite1h', + 'Number', + 'One-hour cached input write rate per million tokens.', + 'Optional; twice prompt', + ], ]} /> diff --git a/content/docs/configuration/librechat_yaml/object_structure/custom_params.mdx b/content/docs/configuration/librechat_yaml/object_structure/custom_params.mdx index e3250f6ff..6547c512e 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/custom_params.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/custom_params.mdx @@ -73,6 +73,43 @@ endpoints: As a result, the `Temperature` slider will be limited to the range of `0.0` and `0.7` with step of `0.1`, and a default of `0.5`. The rest of the parameters will be set to their default values. +#### Parameter definition fields + +Each entry in `paramDefinitions` accepts the following fields. Only `key` is required by the schema. When `key` matches a parameter in the selected default set, omitted fields keep that parameter's built-in values; a new `key` needs enough fields (such as `type` and `component`) to render. + + + #### Sentinel ranges Use `range.positiveMin` when `range.min` is a special sentinel value but regular values have a higher lower bound. For example, a thinking budget can use `-1` for automatic behavior while accepting explicit budgets only from `128` through `32768`: diff --git a/content/docs/configuration/librechat_yaml/object_structure/model_config.mdx b/content/docs/configuration/librechat_yaml/object_structure/model_config.mdx index 55b03311e..b2cc3974f 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/model_config.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/model_config.mdx @@ -7,7 +7,7 @@ Each item under `models` is part of a list of records, either a boolean value or **When specifying a model as an object:** -An object allows for detailed configuration of the model, including its `deploymentName` and/or `version`. This mode is used for more granular control over the models, especially when working with multiple versions or deployments under one instance or resource group. +An object allows for detailed configuration of the model, including its `deploymentName`, `version`, and/or `assistants` flag. This mode is used for more granular control over the models, especially when working with multiple versions or deployments under one instance or resource group. **Example**: ```yaml filename="endpoints / azureOpenAI / groups / {group_item} / models / {model_item=Object}" @@ -30,7 +30,7 @@ models: ]} /> -**Required:** yes +**Required:** no. When omitted, the group's `deploymentName` is used. For non-serverless groups, it must be set on the model or on the group. **Example:** ```yaml filename="endpoints / azureOpenAI / groups / {group_item} / models / {model_item=Object} / deploymentName" @@ -46,13 +46,29 @@ deploymentName: "gpt-4-vision-preview" ]} /> -**Required:** yes +**Required:** no. When omitted, the group's `version` is used. For non-serverless groups, it must be set on the model or on the group. **Example:** ```yaml filename="endpoints / azureOpenAI / groups / {group_item} / models / {model_item=Object} / version" version: "2024-02-15-preview" ``` +## assistants + +**Key:** + + +**Required:** no + +**Example** (set on the group, where it takes effect): +```yaml filename="endpoints / azureOpenAI / groups / {group_item} / assistants" +assistants: true +``` + **Enabling a Model with Default Group Configuration** **Key:** diff --git a/content/docs/configuration/librechat_yaml/object_structure/model_specs.mdx b/content/docs/configuration/librechat_yaml/object_structure/model_specs.mdx index d74b0a793..42172ae48 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/model_specs.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/model_specs.mdx @@ -7,7 +7,7 @@ icon: ListChecks The `modelSpecs` object helps you provide a simpler UI experience for AI models within your application. -There are 3 main fields under `modelSpecs`: +There are 4 main fields under `modelSpecs`: - `enforce` (optional; default: false) - `prioritize` (optional; default: true) @@ -25,7 +25,7 @@ There are 3 main fields under `modelSpecs`: - If you would like to enable these interface elements along with model specs, you can set them to `true` in the `interface` object. - When Model Specs disable `modelSelect`, the endpoints dropdown — and the gear icon that opens the **Set API Key** dialog — is hidden. Users can still set or rotate keys for any endpoint configured with `apiKey: "user_provided"` from **Settings → Data controls → API keys**. + When Model Specs disable `modelSelect`, the endpoints dropdown and the gear icon that opens the **Set API Key** dialog are hidden. Users can still set or rotate keys for any endpoint configured with `apiKey: "user_provided"` from **Settings → Data controls → API keys**. That list is scoped to the endpoints a user can actually reach: the endpoints referenced by your model specs, plus any [`addedEndpoints`](#addedendpoints). When the `agents` endpoint is reachable, it also includes the agent [`allowedProviders`](/docs/configuration/librechat_yaml/object_structure/agents#allowedproviders) (or every configured provider when `allowedProviders` is left unset). @@ -147,7 +147,7 @@ modelSpecs: **Default:** `[]` (empty list) -**Note:** Must be one of the following: +**Note:** Use one of the following, or the name of a [custom endpoint](/docs/configuration/librechat_yaml/object_structure/custom_endpoint#name). Any string is accepted: - `openAI, azureOpenAI, google, anthropic, assistants, azureAssistants, bedrock, agents` @@ -205,7 +205,7 @@ Unique identifier for the model. 'label', 'String', 'A user-friendly name or label for the model, shown in the header dropdown.', - 'No default. Optional.', + 'No default. Must be specified.', ], ]} /> @@ -880,6 +880,12 @@ modelSpecs: 'Allows the ephemeral agent to spawn an isolated copy of itself for focused work.', 'allowSelf: true', ], + [ + 'subagents.shareFiles', + 'Boolean', + 'Opts this model spec into run-scoped file sharing with its subagents.', + 'shareFiles: true', + ], [ 'subagents.agent_ids', 'Array of Strings', @@ -895,6 +901,7 @@ Controls Subagents for ephemeral agents created from this model spec. Use this w - `enabled`: adds the subagent spawn tool for this model spec. - `allowSelf`: lets the ephemeral agent spawn a fresh isolated copy of itself. +- `shareFiles`: opts this spec into run-scoped file sharing with its subagents. Sharing also needs [`endpoints.agents.fileSharing`](/docs/configuration/librechat_yaml/object_structure/agents#filesharing) to be enabled. - `agent_ids`: allows specific persisted agents as additional subagents. This list is capped by the effective subagents limit, which defaults to 10 and is configurable with [`endpoints.agents.maxSubagents`](/docs/configuration/librechat_yaml/object_structure/agents#maxsubagents). The list remains server-side; startup config sent to clients only includes public `enabled` and `allowSelf` flags. When model specs are enforced, the model spec's `subagents` settings are authoritative over request payload values. @@ -974,7 +981,7 @@ The `preset` field for a `modelSpecs.list` item is made up of a comprehensive co #### endpoint -**Required** +**Required**, unless the preset has a non-empty `agent_id`. In that case the `agents` endpoint is inferred and `endpoint` can be omitted. **Accepted Values:** @@ -1101,6 +1108,30 @@ preset: --- +#### fileTokenLimit + + + +**Default:** The [`fileConfig.fileTokenLimit`](/docs/configuration/librechat_yaml/object_structure/file_config#filetokenlimit) value. + +**Example:** + +```yaml filename="modelSpecs / list / {spec_item} / preset / fileTokenLimit" +preset: + fileTokenLimit: 50000 +``` + +--- + #### resendFiles + + +When a preset has a non-empty `agent_id` and no `endpoint`, LibreChat infers the `agents` endpoint. **Example:** @@ -1582,7 +1615,7 @@ preset: **Accepted Values:** -- `""` (empty string — unset, uses API default) +- `""` (empty string: unset, uses API default) - `"none"` - `"minimal"` - `"low"` @@ -1619,7 +1652,7 @@ preset: **Accepted Values:** -- `""` (empty string — disables reasoning summaries) +- `""` (empty string: disables reasoning summaries) - `"auto"` - `"concise"` - `"detailed"` @@ -1724,7 +1757,7 @@ preset: **Accepted Values:** -- `""` (empty string — unset, uses API default) +- `""` (empty string: unset, uses API default) - `"low"` - `"medium"` - `"high"` @@ -1865,7 +1898,7 @@ preset: - `"medium"` - `"high"` -**Default:** `""` (unset — model decides) +**Default:** `""` (unset, model decides) **Example:** @@ -1893,7 +1926,7 @@ preset: **Options:** `""` (unset/auto), `"low"`, `"medium"`, `"high"`, `"xhigh"`, `"max"` -**Default:** `""` (unset — model decides) +**Default:** `""` (unset, model decides) **Example:** @@ -1919,11 +1952,12 @@ preset: ]} /> -**Options:** `"auto"` (default), `"summarized"`, `"omitted"` +**Options:** `"auto"` (default), `"summarized"`, `"omitted"`, `"updates"` -- `"auto"` — LibreChat decides: opts in to `"summarized"` for models that omit thinking by default (Opus 4.7+ and Fable/Mythos-class), leaves the field off for older models -- `"summarized"` — always request a post-hoc summary of the reasoning -- `"omitted"` — always suppress reasoning content (slightly lower latency) +- `"auto"`: LibreChat decides. It opts in to `"summarized"` for models that omit thinking by default (Opus 4.7+ and Fable/Mythos-class) and leaves the field off for older models. +- `"summarized"`: always request a post-hoc summary of the reasoning. +- `"omitted"`: always suppress reasoning content (slightly lower latency). +- `"updates"`: return only the progress notes Claude writes between tool calls (mid-thinking display updates); reasoning blocks stay empty. This needs the `thinking-display-updates-2026-08-18` beta header. **Default:** `"auto"` diff --git a/content/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings.mdx b/content/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings.mdx index 169472939..0884f2286 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/shared_endpoint_settings.mdx @@ -113,18 +113,18 @@ An endpoint-specific value is preserved when `endpoints.all` exists without `str [ 'titleConvo', 'Boolean', - 'Enables automatic conversation title generation for this endpoint.', + 'Controls automatic conversation title generation for this endpoint. Set to false to disable it.', 'titleConvo: true', ], ]} /> -**Default:** `false` +**Default:** Titles are generated unless this is set to `false`. **Notes:** -- When enabled, titles will be generated automatically using the configured title settings -- Must be used in conjunction with `titleModel` or the endpoint must have a default model available +- Titles use the configured title settings. When `titleModel` is omitted, the conversation's model is used. +- Title generation is also turned off globally when the `TITLE_CONVO` environment variable is disabled. **Example:** @@ -172,12 +172,12 @@ endpoints: 'titleModel', 'String', 'Specifies the model to use for titles.', - 'Defaults to system default for the current endpoint if omitted. May cause issues if the system default model is not available. You can also dynamically use the current conversation model by setting it to "current_model".', + 'When omitted, the conversation\'s model is used. Setting it to "current_model" selects the conversation model explicitly.', ], ]} /> -**Default:** System default for the current endpoint +**Default:** The conversation's model ## titleMethod @@ -557,6 +557,7 @@ endpoints: - All settings shown on this page can be configured individually per endpoint or globally using the `all` key - When using the `all` configuration, it will override the corresponding settings in ALL individual endpoints - The `all` key does not accept `baseURL` +- The `azureOpenAI` endpoint accepts only a subset of these settings. It does not accept `titleEndpoint`, `headers`, or `maxToolResultChars`. See [Azure OpenAI](/docs/configuration/librechat_yaml/object_structure/azure_openai). - Settings not defined in `all` will preserve their individual endpoint values - For `streamRate`: Values between 25-40 are recommended where endpoint-specific smoothing is desired - Using a higher stream rate is a must when serving the app to many users at scale diff --git a/content/docs/configuration/librechat_yaml/object_structure/summarization.mdx b/content/docs/configuration/librechat_yaml/object_structure/summarization.mdx index 34e7ed5b4..1f795d092 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/summarization.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/summarization.mdx @@ -37,15 +37,23 @@ summarization: softTrimRatio: 0.3 hardClearRatio: 0.5 minPrunableToolChars: 50000 - softTrim: - maxChars: 4000 - headChars: 1500 - tailChars: 1500 - hardClear: - enabled: true - placeholder: '[Old tool result content cleared]' ``` +## enabled + + + +**Default:** summarization is enabled unless this is set to `false`. + ## provider - -**Defaults:** - -| Field | Default | -| ---------------------- | ------- | -| `enabled` | `false` | -| `keepLastAssistants` | `3` | -| `softTrimRatio` | `0.3` | -| `hardClearRatio` | `0.5` | -| `minPrunableToolChars` | `50000` | - -### softTrim Sub-keys - - - -**Defaults:** `maxChars: 4000`, `headChars: 1500`, `tailChars: 1500` - -### hardClear Sub-keys - - -**Defaults:** `enabled: true`, `placeholder: "[Old tool result content cleared]"` +`contextPruning` is disabled unless `enabled: true` is set. When other fields are omitted, the Agents SDK defaults apply. Only the keys listed above are accepted; other keys, such as `softTrim` or `hardClear` sub-objects, are ignored. **Example:** @@ -351,13 +301,6 @@ summarization: softTrimRatio: 0.25 hardClearRatio: 0.6 minPrunableToolChars: 30000 - softTrim: - maxChars: 6000 - headChars: 2500 - tailChars: 2500 - hardClear: - enabled: true - placeholder: '[Content removed for context management]' ``` ## Complete Configuration Example @@ -383,13 +326,6 @@ summarization: softTrimRatio: 0.3 hardClearRatio: 0.5 minPrunableToolChars: 50000 - softTrim: - maxChars: 4000 - headChars: 1500 - tailChars: 1500 - hardClear: - enabled: true - placeholder: '[Old tool result content cleared]' ``` ## Migration from Per-Endpoint Settings @@ -418,7 +354,7 @@ summarization: - When `provider` and `model` are omitted, the agent's own provider and model are used for summarization - `retainRecent` keeps a recent verbatim tail outside the summary; `turns` accepts `0-20` and `tokens` must be positive - Context pruning is disabled by default and must be explicitly enabled with `contextPruning.enabled: true` -- Context pruning only affects tool call results that exceed `minPrunableToolChars` — smaller results are never pruned +- Context pruning only affects tool call results that exceed `minPrunableToolChars` (smaller results are never pruned) - The `keepLastAssistants` setting protects recent turns from pruning regardless of the trim/clear ratios -- Custom `prompt` and `updatePrompt` values fully replace the built-in prompts — use with care +- Custom `prompt` and `updatePrompt` values fully replace the built-in prompts, so use with care - Set `AGENT_DEBUG_LOGGING=true` in your `.env` file to enable verbose logging of token counts and context pruning diagnostics