# Config Structure

**Note:** Fields not specifically mentioned as required are optional.

## version
- **required** 

<OptionTable
  options={[
    ['version', 'String', 'Specifies the version of the configuration file.', 'version: 1.0.8' ],
  ]}
/>

## cache

<OptionTable
  options={[
    ['cache', 'Boolean', 'Toggles caching on or off. Set to `true` to enable caching (default).', 'cache: true' ],
  ]}
/>

## fileStrategy

<OptionTable
  options={[
    ['fileStrategy', 'String', 'Determines where to save user uploaded/generated files. Defaults to `"local"` if omitted.', 'fileStrategy: "firebase"' ],
  ]}
/>

## filteredTools

<OptionTable
  options={[
    ['filteredTools', 'Array of Strings', 'Filters out specific tools from both Plugins and OpenAI Assistants endpoints.', 'filteredTools: ["scholarai", "calculator"]' ],
  ]}
/>

- **Notes**:
    - Affects both `gptPlugins` and `assistants` endpoints
    - You can find the names of the tools to filter in [`api/app/clients/tools/manifest.json`](https://github.com/danny-avila/LibreChat/blob/main/api/app/clients/tools/manifest.json)
        - Use the `pluginKey` value
    - Also, any listed under the ".well-known" directory [`api/app/clients/tools/.well-known`](https://github.com/danny-avila/LibreChat/blob/main/api/app/clients/tools/.well-known)
        - Use the `name_for_model` value

## secureImageLinks

<OptionTable
  options={[
    ['secureImageLinks', 'Boolean', 'Whether or not to secure access to image links that are hosted locally by the app. Default: false.', 'secureImageLinks: true' ],
  ]}
/>

## imageOutputType

- **Note**: Case-sensitive. Google endpoint only supports "jpeg" and "png" output types.
- **Options**: "png" | "webp" | "jpeg"

<OptionTable
  options={[
    ['imageOutputType', 'String', 'The image output type for image responses. Defaults to "png" if omitted.', 'imageOutputType: "webp"' ],
  ]}
/>

## fileConfig

**Key:**
<OptionTable
  options={[
    ['fileConfig', 'Object', 'Configures file handling settings for the application, including size limits and MIME type restrictions.', ''],
  ]}
/>

**Subkeys:**
<OptionTable
  options={[
    ['endpoints', 'Record/Object', 'Specifies file handling configurations for individual endpoints, allowing customization per endpoint basis.', ''],
    ['serverFileSizeLimit', 'Number', 'The maximum file size (in MB) that the server will accept. Applies globally across all endpoints unless overridden by endpoint-specific settings.', ''],
    ['avatarSizeLimit', 'Number', 'Maximum size (in MB) for user avatar images.', ''],
  ]}
/>

see: [File Config Object Structure](/docs/configuration/librechat_yaml/object_structure/file_config)

## rateLimits

**Key:**
<OptionTable
  options={[
    ['rateLimits', 'Object', 'Defines rate limiting policies to prevent abuse by limiting the number of requests.', ''],
  ]}
/>

**Subkeys:**
<OptionTable
  options={[
    ['fileUploads', 'Object', 'Configures rate limits specifically for file upload operations.', ''],
    ['conversationsImport', 'Object', 'Configures rate limits specifically for conversation import operations.', ''],
  ]}
/>

**fileUploads Subkeys:**
<OptionTable
  options={[
    ['ipMax', 'Number', 'Maximum number of uploads allowed per IP address per window.', ''],
    ['ipWindowInMinutes', 'Number', 'Time window in minutes for the IP-based upload limit.', ''],
    ['userMax', 'Number', 'Maximum number of uploads allowed per user per window.', ''],
    ['userWindowInMinutes', 'Number', 'Time window in minutes for the user-based upload limit.', ''],
  ]}
/>

**conversationsImport Subkeys:**
<OptionTable
  options={[
    ['ipMax', 'Number', 'Maximum number of imports allowed per IP address per window.', ''],
    ['ipWindowInMinutes', 'Number', 'Time window in minutes for the IP-based imports limit.', ''],
    ['userMax', 'Number', 'Maximum number of imports per user per window.', ''],
    ['userWindowInMinutes', 'Number', 'Time window in minutes for the user-based imports limit.', ''],
  ]}
/>

    - **Example**:
    ```yaml filename="rateLimits"
    rateLimits:
      fileUploads:
        ipMax: 100
        ipWindowInMinutes: 60
        userMax: 50
        userWindowInMinutes: 60
      conversationsImport:
        ipMax: 100
        ipWindowInMinutes: 60
        userMax: 50
        userWindowInMinutes: 60
    ```

## registration

**Key:**
<OptionTable
  options={[
    ['registration', 'Object', 'Configures registration-related settings for the application.', ''],
  ]}
/>

**Subkeys:**
<OptionTable
  options={[
    ['socialLogins', '', 'Social login configurations.', ''],
    ['allowedDomains', '', 'Specifies allowed domains for registration.', ''],
  ]}
/>

see also: 
- [socialLogins](/docs/configuration/librechat_yaml/object_structure/registration#sociallogins),
- [alloweddomains](/docs/configuration/librechat_yaml/object_structure/registration#alloweddomains),
- [Registration Object Structure](/docs/configuration/librechat_yaml/object_structure/registration)

## interface

**Key:**
<OptionTable
  options={[
    ['interface', 'Object', 'Configures user interface elements within the application, allowing for customization of visibility and behavior of various components.', ''],
  ]}
/>

**Subkeys:**
<OptionTable
  options={[
    ['privacyPolicy', 'Object', 'Contains settings related to the privacy policy link provided in the user interface.', ''],
    ['termsOfService', 'Object', 'Contains settings related to the terms of service link provided in the user interface.', ''],
    ['endpointsMenu', 'Boolean', 'Controls the visibility of the endpoints dropdown menu in the interface.', ''],
    ['modelSelect', 'Boolean', 'Determines whether the model selection feature is available in the UI.', ''],
    ['parameters', 'Boolean', 'Toggles the visibility of parameter configuration options AKA conversation settings.', ''],
    ['sidePanel', 'Boolean', 'Controls the visibility of the right-most side panel in the application\'s interface.', ''],
    ['presets', 'Boolean', 'Enables or disables the presets menu in the application\'s UI.', ''],
  ]}
/>

see: [Interface Object Structure](/docs/configuration/librechat_yaml/object_structure/interface)

## modelSpecs

**Key:**
<OptionTable
  options={[
    ['modelSpecs', 'Object', 'Configures model specifications, allowing for detailed setup and customization of AI models and their behaviors within the application.', ''],
  ]}
/>

**Subkeys:**
<OptionTable
  options={[
    ['enforce', 'Boolean', 'Determines whether the model specifications should strictly override other configuration settings.', ''],
    ['prioritize', 'Boolean', 'Specifies if model specifications should take priority over the default configuration when both are applicable.', ''],
    ['list', 'Array of Objects', 'Contains a list of individual model specifications detailing various configurations and behaviors.', ''],
  ]}
/>

see: [Model Specs Object Structure](/docs/configuration/librechat_yaml/object_structure/model_specs)

## endpoints

**Key:**
<OptionTable
  options={[
    ['endpoints', 'Object', 'Defines custom API endpoints for the application.', ''],
  ]}
/>

**Subkeys:**
<OptionTable
  options={[
    ['custom', 'Array of Objects', 'Each object in the array represents a unique endpoint configuration.', ''],
    ['azureOpenAI', 'Object', 'Azure OpenAI endpoint-specific configuration', ''],
    ['assistants', 'Object', 'Assistants endpoint-specific configuration.', ''],
  ]}
/>

see: [Full Custom Endpoint Object Structure](/docs/configuration/librechat_yaml/object_structure/custom_endpoint)
see: [Full Azure OpenAI Endpoint Object Structure](/docs/configuration/librechat_yaml/object_structure/azure_openai)
see: [Full Assistants Endpoint Object Structure](/docs/configuration/librechat_yaml/object_structure/assistants_endpoint)