openrag/assets/js/c8078f0a.645de39c.js
2026-01-13 18:52:56 +00:00

1 line
No EOL
27 KiB
JavaScript

"use strict";(globalThis.webpackChunkopenrag_docs=globalThis.webpackChunkopenrag_docs||[]).push([[9026],{1381:(e,n,s)=>{s.d(n,{Ay:()=>l,RM:()=>t});var r=s(4848),i=s(8453);const t=[];function d(e){const n={code:"code",pre:"pre",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="Docker"',children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="Podman"',children:"podman compose up -d\n"})})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>l});var r=s(6540);const i={},t=r.createContext(i);function d(e){const n=r.useContext(t);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),r.createElement(t.Provider,{value:n},e.children)}},9196:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"reference/configuration","title":"Environment variables","description":"OpenRAG\'s .env file is the primary configuration file for OpenRAG.","source":"@site/docs/reference/configuration.mdx","sourceDirName":"reference","slug":"/reference/configuration","permalink":"/reference/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/openrag/openrag/tree/main/docs/docs/reference/configuration.mdx","tags":[],"version":"current","frontMatter":{"title":"Environment variables","slug":"/reference/configuration"},"sidebar":"tutorialSidebar","previous":{"title":"Chat","permalink":"/chat"},"next":{"title":"APIs and SDKs","permalink":"/reference/api-sdk-overview"}}');var i=s(4848),t=s(8453);s(1381);const d={title:"Environment variables",slug:"/reference/configuration"},l=void 0,c={},o=[{value:"Edit the <code>.env</code> file",id:"set-environment-variables",level:2},{value:"Model provider settings",id:"model-provider-settings",level:2},{value:"Document processing settings",id:"document-processing-settings",level:2},{value:"Langflow settings",id:"langflow-settings",level:2},{value:"OAuth provider settings",id:"oauth-provider-settings",level:2},{value:"OpenSearch settings",id:"opensearch-settings",level:2},{value:"System settings",id:"system-settings",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["OpenRAG's ",(0,i.jsx)(n.code,{children:".env"})," file is the primary configuration file for OpenRAG.\nEnvironment variables in ",(0,i.jsx)(n.code,{children:".env"})," always take precedence over other sources."]}),"\n",(0,i.jsxs)(n.p,{children:["For deployments managed with the Terminal User Interface (TUI), this file is located at ",(0,i.jsx)(n.code,{children:"~/.openrag/tui"}),", and it can be created automatically during ",(0,i.jsx)(n.a,{href:"/install-options",children:"installation"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["For ",(0,i.jsx)(n.a,{href:"/docker",children:"self-managed deployments"}),", this file can be located at the root of your OpenRAG project directory or referenced from another location."]}),"\n",(0,i.jsxs)(n.p,{children:["For an example, see ",(0,i.jsxs)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/.env.example",children:[(0,i.jsx)(n.code,{children:".env.example"})," in the OpenRAG repository"]}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["OpenRAG's Docker Compose files are populated automatically using values from the ",(0,i.jsx)(n.code,{children:".env"})," file, so you don't need to edit the Docker Compose files manually."]})}),"\n",(0,i.jsxs)(n.p,{children:["If a variable isn't set, OpenRAG uses default or fallback values where available.\nNot all variables have default values, and errors can occur if required variables aren't set.\nDefault values can be found in the reference tables on this page and in ",(0,i.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/config/config_manager.py",children:(0,i.jsx)(n.code,{children:"config_manager.py"})}),", ",(0,i.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/config/settings.py",children:(0,i.jsx)(n.code,{children:"settings.py"})}),", and ",(0,i.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/utils/logging_config.py",children:(0,i.jsx)(n.code,{children:"logging_config.py"})}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You can ",(0,i.jsx)(n.a,{href:"/agents#modify-a-flow-at-runtime",children:"temporarily set Langflow variables at runtime"}),".\nHowever, these temporary overrides don't overlap with most OpenRAG environment variables.\nThe only exceptions are flow-level Langflow settings, such as the language model used in a flow."]}),"\n",(0,i.jsxs)(n.h2,{id:"set-environment-variables",children:["Edit the ",(0,i.jsx)(n.code,{children:".env"})," file"]}),"\n",(0,i.jsxs)(n.p,{children:["During ",(0,i.jsx)(n.a,{href:"/install-options",children:"installation"}),", an initial ",(0,i.jsx)(n.code,{children:".env"})," file is created automatically or manually.\nYou can edit this file to change OpenRAG configuration settings after installation."]}),"\n",(0,i.jsxs)(n.p,{children:["Each OpenRAG environment variable is either mutable or immutable.\nThis determines the actions you must take to apply changes after editing the ",(0,i.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Mutable environment variables"}),": You can apply changes to mutable environment variables by ",(0,i.jsx)(n.a,{href:"/manage-services",children:"stopping and restarting the OpenRAG services"})," after editing the ",(0,i.jsx)(n.code,{children:".env"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Immutable environment variables"}),": You must ",(0,i.jsx)(n.a,{href:"/reinstall",children:"redeploy OpenRAG"})," with your modified ",(0,i.jsx)(n.code,{children:".env"})," file if you change immutable environment variables."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"model-provider-settings",children:"Model provider settings"}),"\n",(0,i.jsx)(n.p,{children:"Configure which models and providers OpenRAG uses to generate text and embeddings.\nYou only need to provide credentials for the providers you are using in OpenRAG."}),"\n",(0,i.jsxs)(n.p,{children:["These variables are initially set during the ",(0,i.jsx)(n.a,{href:"/install#application-onboarding",children:"application onboarding process"}),".\nSome of these variables are immutable and can only be changed by redeploying OpenRAG, as explained in ",(0,i.jsx)(n.a,{href:"#set-environment-variables",children:"Set environment variables"}),"."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Variable"}),(0,i.jsx)(n.th,{children:"Default"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"EMBEDDING_MODEL"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"text-embedding-3-small"})}),(0,i.jsx)(n.td,{children:"Embedding model for generating vector embeddings for documents in the knowledge base and similarity search queries. Can be changed after the application onboarding process. Accepts one or more models."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LLM_MODEL"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"gpt-4o-mini"})}),(0,i.jsxs)(n.td,{children:["Language model for language processing and text generation in the ",(0,i.jsx)(n.strong,{children:"Chat"})," feature."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"MODEL_PROVIDER"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"openai"})}),(0,i.jsxs)(n.td,{children:["Model provider, as one of ",(0,i.jsx)(n.code,{children:"openai"}),", ",(0,i.jsx)(n.code,{children:"watsonx"}),", ",(0,i.jsx)(n.code,{children:"ollama"}),", or ",(0,i.jsx)(n.code,{children:"anthropic"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"ANTHROPIC_API_KEY"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsx)(n.td,{children:"API key for the Anthropic language model provider."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENAI_API_KEY"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsx)(n.td,{children:"API key for the OpenAI model provider, which is also the default model provider."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OLLAMA_ENDPOINT"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsx)(n.td,{children:"Custom provider endpoint for the Ollama model provider."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"WATSONX_API_KEY"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsx)(n.td,{children:"API key for the IBM watsonx.ai model provider."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"WATSONX_ENDPOINT"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsx)(n.td,{children:"Custom provider endpoint for the IBM watsonx.ai model provider."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"WATSONX_PROJECT_ID"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsx)(n.td,{children:"Project ID for the IBM watsonx.ai model provider."})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"document-processing-settings",children:"Document processing settings"}),"\n",(0,i.jsxs)(n.p,{children:["Control how OpenRAG ",(0,i.jsx)(n.a,{href:"/ingestion",children:"processes and ingests documents"})," into your knowledge base."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Variable"}),(0,i.jsx)(n.th,{children:"Default"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"CHUNK_OVERLAP"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"200"})}),(0,i.jsx)(n.td,{children:"Overlap between chunks."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"CHUNK_SIZE"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"1000"})}),(0,i.jsx)(n.td,{children:"Text chunk size for document processing."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"DISABLE_INGEST_WITH_LANGFLOW"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"false"})}),(0,i.jsx)(n.td,{children:"Disable Langflow ingestion pipeline."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"DOCLING_OCR_ENGINE"})}),(0,i.jsx)(n.td,{children:"Set by OS"}),(0,i.jsxs)(n.td,{children:["OCR engine for document processing. For macOS, ",(0,i.jsx)(n.code,{children:"ocrmac"}),". For any other OS, ",(0,i.jsx)(n.code,{children:"easyocr"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OCR_ENABLED"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"false"})}),(0,i.jsx)(n.td,{children:"Enable OCR for image processing."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENRAG_DOCUMENTS_PATH"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"~/.openrag/documents"})}),(0,i.jsxs)(n.td,{children:["The ",(0,i.jsx)(n.a,{href:"/knowledge#set-the-local-documents-path",children:"local documents path"})," for ingestion."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"PICTURE_DESCRIPTIONS_ENABLED"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"false"})}),(0,i.jsx)(n.td,{children:"Enable picture descriptions."})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"langflow-settings",children:"Langflow settings"}),"\n",(0,i.jsx)(n.p,{children:"Configure the OpenRAG Langflow server's authentication, contact point, and built-in flow definitions."}),"\n",(0,i.jsxs)(n.admonition,{type:"info",children:[(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set in your ",(0,i.jsx)(n.code,{children:".env"})," file, and this value determines the default values for several other Langflow authentication variables."]}),(0,i.jsxs)(n.p,{children:["If the ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," variable isn't set, then the Langflow server starts ",(0,i.jsx)(n.em,{children:"without"})," authentication enabled."]}),(0,i.jsxs)(n.p,{children:["For better security, it is recommended to set ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," so the ",(0,i.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server starts with authentication enabled"}),"."]})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Variable"}),(0,i.jsx)(n.th,{children:"Default"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),(0,i.jsxs)(n.td,{children:["Determined by ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,i.jsxs)(n.td,{children:["Whether to enable ",(0,i.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-auto-login",children:"auto-login mode"})," for the Langflow visual editor and CLI. If ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,i.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is ",(0,i.jsx)(n.code,{children:"True"})," and auto-login mode is enabled. If ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,i.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is ",(0,i.jsx)(n.code,{children:"False"})," and auto-login mode is disabled. Langflow API calls always require authentication with a Langflow API key regardless of the auto-login setting."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})}),(0,i.jsxs)(n.td,{children:["Determined by ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,i.jsxs)(n.td,{children:["Whether to enable the ",(0,i.jsxs)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-enable-superuser-cli",children:["Langflow CLI ",(0,i.jsx)(n.code,{children:"langflow superuser"})," command"]}),". If ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,i.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})," is ",(0,i.jsx)(n.code,{children:"True"})," and superuser accounts can be created with the Langflow CLI. If ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,i.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})," is ",(0,i.jsx)(n.code,{children:"False"})," and the ",(0,i.jsx)(n.code,{children:"langflow superuser"})," command is disabled."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),(0,i.jsxs)(n.td,{children:["Determined by ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,i.jsxs)(n.td,{children:["Whether new ",(0,i.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-new-user-is-active",children:"Langflow user accounts are active by default"}),". If ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,i.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})," is ",(0,i.jsx)(n.code,{children:"True"})," and new user accounts are active by default. If ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,i.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})," is ",(0,i.jsx)(n.code,{children:"False"})," and new user accounts are inactive by default."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_PUBLIC_URL"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"http://localhost:7860"})}),(0,i.jsx)(n.td,{children:"Public URL for the Langflow instance. Forms the base URL for Langflow API calls and other interfaces with your OpenRAG Langflow instance."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_KEY"})}),(0,i.jsx)(n.td,{children:"Automatically generated"}),(0,i.jsx)(n.td,{children:"A Langflow API key to run flows with Langflow API calls. Because Langflow API keys are server-specific, allow OpenRAG to generate this key initially. You can create additional Langflow API keys after deploying OpenRAG."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_SECRET_KEY"})}),(0,i.jsx)(n.td,{children:"Automatically generated"}),(0,i.jsxs)(n.td,{children:["Secret encryption key for Langflow internal operations. It is recommended to ",(0,i.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-secret-key",children:"generate your own Langflow secret key"})," for this variable. If this variable isn't set, then Langflow generates a secret key automatically."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"admin"})}),(0,i.jsx)(n.td,{children:"Username for the Langflow administrator user."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsxs)(n.td,{children:["Langflow administrator password. If this variable isn't set, then the Langflow server starts ",(0,i.jsx)(n.em,{children:"without"})," authentication enabled. It is recommended to set ",(0,i.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," so the ",(0,i.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server starts with authentication enabled"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_URL"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"http://localhost:7860"})}),(0,i.jsx)(n.td,{children:"URL for the Langflow instance."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"LANGFLOW_CHAT_FLOW_ID"}),", ",(0,i.jsx)(n.code,{children:"LANGFLOW_INGEST_FLOW_ID"}),", ",(0,i.jsx)(n.code,{children:"NUDGES_FLOW_ID"})]}),(0,i.jsx)(n.td,{children:"Built-in flow IDs"}),(0,i.jsxs)(n.td,{children:["These variables are set automatically to the IDs of the chat, ingestion, and nudges ",(0,i.jsx)(n.a,{href:"/agents",children:"flows"}),". The default values are found in ",(0,i.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/.env.example",children:(0,i.jsx)(n.code,{children:".env.example"})}),". Only change these values if you want to replace a built-in flow with your own custom flow. The flow JSON must be present in your version of the OpenRAG codebase. For example, if you ",(0,i.jsx)(n.a,{href:"/docker",children:"deploy self-managed services"}),", you can add the flow JSON to your local clone of the OpenRAG repository before deploying OpenRAG."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"SYSTEM_PROMPT"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"You are a helpful AI assistant with access to a knowledge base. Answer questions based on the provided context."})}),(0,i.jsxs)(n.td,{children:["System prompt instructions for the agent driving the ",(0,i.jsx)(n.strong,{children:"Chat"})," flow."]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"oauth-provider-settings",children:"OAuth provider settings"}),"\n",(0,i.jsxs)(n.p,{children:["Configure ",(0,i.jsx)(n.a,{href:"/ingestion#oauth-ingestion",children:"OAuth providers"})," and external service integrations."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Variable"}),(0,i.jsx)(n.th,{children:"Default"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"AWS_ACCESS_KEY_ID"}),(0,i.jsx)("br",{}),(0,i.jsx)(n.code,{children:"AWS_SECRET_ACCESS_KEY"})]}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsxs)(n.td,{children:["Enable access to AWS S3 with an ",(0,i.jsx)(n.a,{href:"https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-applications.html",children:"AWS OAuth app"})," integration."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"GOOGLE_OAUTH_CLIENT_ID"}),(0,i.jsx)("br",{}),(0,i.jsx)(n.code,{children:"GOOGLE_OAUTH_CLIENT_SECRET"})]}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsxs)(n.td,{children:["Enable the ",(0,i.jsx)(n.a,{href:"https://developers.google.com/identity/protocols/oauth2",children:"Google OAuth client"})," integration. You can generate these values in the ",(0,i.jsx)(n.a,{href:"https://console.cloud.google.com/apis/credentials",children:"Google Cloud Console"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"MICROSOFT_GRAPH_OAUTH_CLIENT_ID"}),(0,i.jsx)("br",{}),(0,i.jsx)(n.code,{children:"MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET"})]}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsxs)(n.td,{children:["Enable the ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/graph-oauth",children:"Microsoft Graph OAuth client"})," integration by providing ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/app-registration?view=odsp-graph-online",children:"Azure application registration credentials for SharePoint and OneDrive"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"WEBHOOK_BASE_URL"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsx)(n.td,{children:"Base URL for OAuth connector webhook endpoints. If this variable isn't set, a default base URL is used."})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"opensearch-settings",children:"OpenSearch settings"}),"\n",(0,i.jsx)(n.p,{children:"Configure OpenSearch database authentication."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Variable"}),(0,i.jsx)(n.th,{children:"Default"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENSEARCH_HOST"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"localhost"})}),(0,i.jsx)(n.td,{children:"OpenSearch instance host."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENSEARCH_PORT"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"9200"})}),(0,i.jsx)(n.td,{children:"OpenSearch instance port."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENSEARCH_USERNAME"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"admin"})}),(0,i.jsx)(n.td,{children:"OpenSearch administrator username."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENSEARCH_PASSWORD"})}),(0,i.jsx)(n.td,{children:"Must be set at start up"}),(0,i.jsxs)(n.td,{children:["Required. OpenSearch administrator password. Must adhere to the ",(0,i.jsx)(n.a,{href:"https://docs.opensearch.org/latest/security/configuration/demo-configuration/#setting-up-a-custom-admin-password",children:"OpenSearch password complexity requirements"}),". You must set this directly in the ",(0,i.jsx)(n.code,{children:".env"})," or in the TUI's ",(0,i.jsx)(n.a,{href:"/install#setup",children:(0,i.jsx)(n.strong,{children:"Basic/Advanced Setup"})}),"."]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"system-settings",children:"System settings"}),"\n",(0,i.jsx)(n.p,{children:"Configure general system components, session management, and logging."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Variable"}),(0,i.jsx)(n.th,{children:"Default"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_KEY_RETRIES"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"15"})}),(0,i.jsx)(n.td,{children:"Number of retries for Langflow key generation."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_KEY_RETRY_DELAY"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"2.0"})}),(0,i.jsx)(n.td,{children:"Delay between retries in seconds."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LANGFLOW_VERSION"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENRAG_VERSION"})}),(0,i.jsxs)(n.td,{children:["Langflow Docker image version. By default, OpenRAG uses the ",(0,i.jsx)(n.code,{children:"OPENRAG_VERSION"})," for the Langflow Docker image version."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LOG_FORMAT"})}),(0,i.jsx)(n.td,{children:"Not set"}),(0,i.jsxs)(n.td,{children:["Set to ",(0,i.jsx)(n.code,{children:"json"})," to enabled JSON-formatted log output. If this variable isn't set, then the default logging format is used."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"LOG_LEVEL"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"INFO"})}),(0,i.jsxs)(n.td,{children:["Logging level. Can be one of ",(0,i.jsx)(n.code,{children:"DEBUG"}),", ",(0,i.jsx)(n.code,{children:"INFO"}),", ",(0,i.jsx)(n.code,{children:"WARNING"}),", or ",(0,i.jsx)(n.code,{children:"ERROR"}),". ",(0,i.jsx)(n.code,{children:"DEBUG"})," provides the most detailed logs but can impact performance."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"MAX_WORKERS"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"1"})}),(0,i.jsx)(n.td,{children:"Maximum number of workers for document processing."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"OPENRAG_VERSION"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"latest"})}),(0,i.jsxs)(n.td,{children:["The version of the OpenRAG Docker images to run. For more information, see ",(0,i.jsx)(n.a,{href:"/upgrade",children:"Upgrade OpenRAG"})]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"SERVICE_NAME"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"openrag"})}),(0,i.jsx)(n.td,{children:"Service name for logging."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"SESSION_SECRET"})}),(0,i.jsx)(n.td,{children:"Automatically generated"}),(0,i.jsx)(n.td,{children:"Session management."})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}}}]);