1 line
No EOL
29 KiB
JavaScript
1 line
No EOL
29 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:()=>o,default:()=>x,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"reference/configuration","title":"Environment variables","description":"OpenRAG recognizes environment variables from the following sources:","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":"Troubleshoot OpenRAG","permalink":"/support/troubleshoot"}}');var i=s(4848),t=s(8453),d=s(1381);const l={title:"Environment variables",slug:"/reference/configuration"},o=void 0,c={},a=[{value:"Configure environment variables",id:"configure-environment-variables",level:2},{value:"Set environment variables",id:"set-environment-variables",level:3},...d.RM,{value:"Supported environment variables",id:"supported-environment-variables",level:2},{value:"Model provider settings",id:"model-provider-settings",level:3},{value:"Document processing settings",id:"document-processing-settings",level:3},{value:"Langflow settings",id:"langflow-settings",level:3},{value:"OAuth provider settings",id:"oauth-provider-settings",level:3},{value:"OpenSearch settings",id:"opensearch-settings",level:3},{value:"System settings",id:"system-settings",level:3},{value:"Langflow runtime overrides",id:"langflow-runtime-overrides",level:2},{value:"Default values and fallbacks",id:"default-values-and-fallbacks",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",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.jsx)(n.p,{children:"OpenRAG recognizes environment variables from the following sources:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#configure-environment-variables",children:"Environment variables"}),": Values set in the ",(0,i.jsx)(n.code,{children:".env"})," file in the OpenRAG installation directory."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#langflow-runtime-overrides",children:"Langflow runtime overrides"}),": Langflow components can set environment variables at runtime."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#default-values-and-fallbacks",children:"Default or fallback values"}),": These values are default or fallback values if OpenRAG doesn't find a value."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"configure-environment-variables",children:"Configure environment variables"}),"\n",(0,i.jsxs)(n.p,{children:["Environment variables are set in a ",(0,i.jsx)(n.code,{children:".env"})," file in the root of your OpenRAG project directory."]}),"\n",(0,i.jsxs)(n.p,{children:["For an example ",(0,i.jsx)(n.code,{children:".env"})," file, 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.jsxs)(n.p,{children:["The Docker Compose files are populated with values from your ",(0,i.jsx)(n.code,{children:".env"}),", so you don't need to edit the Docker Compose files manually."]}),"\n",(0,i.jsx)(n.p,{children:"Environment variables always take precedence over other variables."}),"\n",(0,i.jsx)(n.h3,{id:"set-environment-variables",children:"Set environment variables"}),"\n",(0,i.jsx)(n.p,{children:"Environment variables are either mutable or immutable."}),"\n",(0,i.jsxs)(n.p,{children:["If you edit mutable environment variables, you can apply the changes by stopping and restarting the OpenRAG services after editing the ",(0,i.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"/manage-services",children:"Stop the OpenRAG services"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Edit your ",(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.a,{href:"/manage-services",children:"Restart the OpenRAG services"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["If you edit 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.\nFor example, with self-managed services, do the following:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Stop the deployment:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Docker"',children:"docker compose down\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Podman"',children:"podman compose down\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Edit your ",(0,i.jsx)(n.code,{children:".env"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Redeploy OpenRAG:"}),"\n",(0,i.jsx)(d.Ay,{}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Restart the Docling service."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Launch the OpenRAG app, and then repeat the ",(0,i.jsx)(n.a,{href:"/install#application-onboarding",children:"application onboarding process"}),". The values in your ",(0,i.jsx)(n.code,{children:".env"})," file are automatically populated."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"supported-environment-variables",children:"Supported environment variables"}),"\n",(0,i.jsx)(n.p,{children:"All OpenRAG configuration can be controlled through environment variables."}),"\n",(0,i.jsx)(n.h3,{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.h3,{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_PATHS"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"./openrag-documents"})}),(0,i.jsx)(n.td,{children:"Document paths 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.h3,{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.h3,{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.h3,{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.h3,{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."})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"langflow-runtime-overrides",children:"Langflow runtime overrides"}),"\n",(0,i.jsxs)(n.p,{children:["You can modify ",(0,i.jsx)(n.a,{href:"/agents",children:"flow"})," settings at runtime without permanently changing the flow's configuration."]}),"\n",(0,i.jsxs)(n.p,{children:["Runtime overrides are implemented through ",(0,i.jsx)(n.em,{children:"tweaks"}),", which are one-time parameter modifications that are passed to specific Langflow components during flow execution."]}),"\n",(0,i.jsxs)(n.p,{children:["For more information on tweaks, see the Langflow documentation on ",(0,i.jsx)(n.a,{href:"https://docs.langflow.org/concepts-publish#input-schema",children:"Input schema (tweaks)"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"default-values-and-fallbacks",children:"Default values and fallbacks"}),"\n",(0,i.jsx)(n.p,{children:"If a variable isn't set by environment variables or a configuration file, OpenRAG can use a default value if one is defined in the codebase.\nDefault values can be found in the OpenRAG repository:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["OpenRAG configuration: ",(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"})})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["System configuration: ",(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"})})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Logging configuration: ",(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"]}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}}}]); |