Skip to main content
The librechat.yaml file is the primary configuration file for LibreChat. It allows you to customize endpoints, interface settings, file storage, and more.

Configuration Version

version
string
required
Configuration file version
version: 1.3.4

Cache Settings

cache
boolean
default:"false"
Enable response caching
cache: true

Interface Configuration

Customize the LibreChat user interface with these settings.
interface:
  customWelcome: 'Welcome to LibreChat! Enjoy your experience.'
  fileSearch: true
  endpointsMenu: true
  modelSelect: true
  parameters: true
  sidePanel: true
  presets: true
  bookmarks: true
  multiConvo: true

Interface Options

interface.customWelcome
string
Custom welcome message displayed to users
Enable file search as a chat area selection
This does not disable the Agents File Search Capability. See Agents endpoint configuration for that.
interface.endpointsMenu
boolean
default:"true"
Show endpoints selection menu
interface.modelSelect
boolean
default:"true"
Enable model selection dropdown
interface.parameters
boolean
default:"true"
Show model parameters controls
interface.sidePanel
boolean
default:"true"
Enable side panel

Privacy Policy & Terms of Service

interface:
  privacyPolicy:
    externalUrl: 'https://librechat.ai/privacy-policy'
    openNewTab: true
  termsOfService:
    externalUrl: 'https://librechat.ai/tos'
    openNewTab: true
    modalAcceptance: true
    modalTitle: 'Terms of Service for LibreChat'
    modalContent: |
      # Terms and Conditions
      Your terms content here...
interface.privacyPolicy.externalUrl
string
URL to privacy policy page
interface.privacyPolicy.openNewTab
boolean
Open privacy policy in new tab
interface.termsOfService.modalAcceptance
boolean
Require users to accept terms via modal

Prompts Configuration

interface:
  prompts:
    use: true
    create: true
    share: false
    public: false
interface.prompts.use
boolean
default:"true"
Allow users to use prompts
interface.prompts.create
boolean
default:"true"
Allow users to create prompts
interface.prompts.share
boolean
default:"false"
Allow users to share prompts with others
interface.prompts.public
boolean
default:"false"
Allow users to make prompts public

Agents Configuration

interface:
  agents:
    use: true
    create: true
    share: false
    public: false
interface.agents.use
boolean
default:"true"
Allow users to use agents
interface.agents.create
boolean
default:"true"
Allow users to create agents
interface.agents.share
boolean
default:"false"
Allow users to share agents
interface.agents.public
boolean
default:"false"
Allow users to make agents public

People Picker

interface:
  peoplePicker:
    users: true
    groups: true
    roles: true
interface.peoplePicker.users
boolean
default:"true"
Enable user selection in people picker
interface.peoplePicker.groups
boolean
default:"true"
Enable group selection in people picker
interface.peoplePicker.roles
boolean
default:"true"
Enable role selection in people picker

Registration Settings

registration:
  socialLogins: ['github', 'google', 'discord', 'openid', 'facebook', 'apple', 'saml']
  allowedDomains:
    - "gmail.com"
    - "company.com"
registration.socialLogins
array
List of enabled social login providersAvailable options: github, google, discord, openid, facebook, apple, saml
registration.allowedDomains
array
Email domains allowed for registration
Leave empty to allow all domains

Balance & Transactions

balance:
  enabled: false
  startBalance: 20000
  autoRefillEnabled: false
  refillIntervalValue: 30
  refillIntervalUnit: 'days'
  refillAmount: 10000
balance.enabled
boolean
default:"false"
Enable token balance system
balance.startBalance
number
default:"20000"
Initial token balance for new users
balance.autoRefillEnabled
boolean
default:"false"
Enable automatic balance refill
balance.refillIntervalValue
number
Refill interval value (e.g., 30)
balance.refillIntervalUnit
string
Refill interval unit: days, hours, or minutes
transactions:
  enabled: false
transactions.enabled
boolean
default:"true"
Save transaction records to database
If balance.enabled is true, transactions are always enabled

Rate Limits

rateLimits:
  fileUploads:
    ipMax: 100
    ipWindowInMinutes: 60
    userMax: 50
    userWindowInMinutes: 60
  conversationsImport:
    ipMax: 100
    ipWindowInMinutes: 60
    userMax: 50
    userWindowInMinutes: 60
rateLimits.fileUploads.ipMax
number
default:"100"
Maximum file uploads per IP per window
rateLimits.fileUploads.userMax
number
default:"50"
Maximum file uploads per user per window

Agent Actions Domain Restrictions

actions:
  allowedDomains:
    - 'swapi.dev'
    - 'librechat.ai'
    - 'google.com'
    - 'http://10.225.26.25:7894'  # Internal IP with protocol/port
actions.allowedDomains
array
Domains allowed for Agent Actions OpenAPI specs
If not configured, SSRF targets are blocked (localhost, private IPs, .internal/.local TLDs). To allow internal targets, you MUST explicitly add them.
Supports:
  • Wildcards: *.example.com
  • Protocol/port restrictions: https://api.example.com:8443

MCP Settings

mcpSettings:
  allowedDomains:
    - 'host.docker.internal'
    - 'localhost'
    - '*.example.com'
    - 'https://secure.api.com'
mcpSettings.allowedDomains
array
Domains allowed for MCP remote transports (SSE, WebSocket, HTTP)
Required for Docker setups to allow host.docker.internal

MCP Servers

mcpServers:
  everything:
    url: http://localhost:3001/sse
    timeout: 60000
  puppeteer:
    type: stdio
    command: npx
    args:
      - -y
      - "@modelcontextprotocol/server-puppeteer"
    timeout: 300000
  filesystem:
    command: npx
    args:
      - -y
      - "@modelcontextprotocol/server-filesystem"
      - /home/user/LibreChat/
    iconPath: /home/user/LibreChat/client/public/assets/logo.svg
mcpServers.<name>.type
string
MCP server transport type: sse, stdio, websocket, or http
Can be omitted, defaults to sse
mcpServers.<name>.url
string
Server URL (for SSE/WebSocket/HTTP transports)
mcpServers.<name>.command
string
Command to run (for stdio transport)
mcpServers.<name>.args
array
Command arguments (for stdio transport)
mcpServers.<name>.timeout
number
default:"60000"
Timeout in milliseconds
mcpServers.<name>.iconPath
string
Path to custom icon for the server

Speech Configuration

speech:
  tts:
    openai:
      url: ''
      apiKey: '${TTS_API_KEY}'
      model: ''
      voices: ['']
  stt:
    openai:
      url: ''
      apiKey: '${STT_API_KEY}'
      model: ''
speech.tts.openai
object
Text-to-Speech configuration using OpenAI
speech.stt.openai
object
Speech-to-Text configuration using OpenAI

Memory Configuration

memory:
  disabled: false
  validKeys: ["preferences", "work_info", "personal_info", "skills", "interests", "context"]
  tokenLimit: 10000
  personalize: true
  agent:
    id: "your-memory-agent-id"
    # OR define inline:
    # provider: "openai"
    # model: "gpt-4o-mini"
    # instructions: "You are a memory management assistant."
    # model_parameters:
    #   temperature: 0.1
memory.disabled
boolean
default:"false"
Disable memory functionality
memory.validKeys
array
Restrict memory keys to specific values
memory.tokenLimit
number
default:"10000"
Maximum token limit for memory storage
memory.personalize
boolean
default:"true"
Enable personalization features (Personalization tab in settings)
memory.agent
object
Memory agent configuration - use existing agent by ID or define inline

Web Search Configuration

webSearch:
  # Reranking
  jinaApiKey: '${JINA_API_KEY}'
  jinaApiUrl: '${JINA_API_URL}'
  cohereApiKey: '${COHERE_API_KEY}'
  
  # Search providers
  serperApiKey: '${SERPER_API_KEY}'
  searxngInstanceUrl: '${SEARXNG_INSTANCE_URL}'
  searxngApiKey: '${SEARXNG_API_KEY}'
  
  # Content scrapers
  firecrawlApiKey: '${FIRECRAWL_API_KEY}'
  firecrawlApiUrl: '${FIRECRAWL_API_URL}'
webSearch.jinaApiKey
string
Jina API key for reranking
webSearch.cohereApiKey
string
Cohere API key for reranking
webSearch.serperApiKey
string
Serper API key for search
webSearch.firecrawlApiKey
string
Firecrawl API key for content scraping

Cloudflare Turnstile

turnstile:
  siteKey: "your-site-key-here"
  options:
    language: "auto"
    size: "normal"
turnstile.siteKey
string
Cloudflare Turnstile site key
turnstile.options.size
string
Widget size: normal, compact, flexible, or invisible

Build docs developers (and LLMs) love