openrag/assets/js/d0314b07.755813dc.js
2025-10-01 22:22:33 +00:00

1 line
No EOL
20 KiB
JavaScript

"use strict";(self.webpackChunkopenrag_docs=self.webpackChunkopenrag_docs||[]).push([[750],{1470:(e,n,r)=>{r.d(n,{A:()=>y});var s=r(6540),t=r(4164),l=r(3104),a=r(6347),o=r(205),i=r(7485),d=r(1682),c=r(679);function h(e){return s.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function u(e){const{values:n,children:r}=e;return(0,s.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:r,default:s}})=>({value:e,label:n,attributes:r,default:s}))}(r);return function(e){const n=(0,d.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function x({queryString:e=!1,groupId:n}){const r=(0,a.W6)(),t=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(t),(0,s.useCallback)(e=>{if(!t)return;const n=new URLSearchParams(r.location.search);n.set(t,e),r.replace({...r.location,search:n.toString()})},[t,r])]}function j(e){const{defaultValue:n,queryString:r=!1,groupId:t}=e,l=u(e),[a,i]=(0,s.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l})),[d,h]=x({queryString:r,groupId:t}),[j,m]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,t]=(0,c.Dv)(n);return[r,(0,s.useCallback)(e=>{n&&t.set(e)},[n,t])]}({groupId:t}),g=(()=>{const e=d??j;return p({value:e,tabValues:l})?e:null})();(0,o.A)(()=>{g&&i(g)},[g]);return{selectedValue:a,selectValue:(0,s.useCallback)(e=>{if(!p({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),h(e),m(e)},[h,m,l]),tabValues:l}}var m=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function v({className:e,block:n,selectedValue:r,selectValue:s,tabValues:a}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),d=e=>{const n=e.currentTarget,t=o.indexOf(n),l=a[t].value;l!==r&&(i(n),s(l))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":n},e),children:a.map(({value:e,label:n,attributes:s})=>(0,f.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:d,...s,className:(0,t.A)("tabs__item",g.tabItem,s?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function b({lazy:e,children:n,selectedValue:r}){const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=l.find(e=>e.props.value===r);return e?(0,s.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function w(e){const n=j(e);return(0,f.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(b,{...n,...e})]})}function y(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:h(e.children)},String(n))}},4398:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"get-started/install","title":"Install OpenRAG","description":"OpenRAG can be installed in multiple ways:","source":"@site/docs/get-started/install.mdx","sourceDirName":"get-started","slug":"/install","permalink":"/openrag/install","draft":false,"unlisted":false,"editUrl":"https://github.com/openrag/openrag/tree/main/docs/docs/get-started/install.mdx","tags":[],"version":"current","frontMatter":{"title":"Install OpenRAG","slug":"/install"},"sidebar":"tutorialSidebar","previous":{"title":"About OpenRAG","permalink":"/openrag/"},"next":{"title":"Quickstart","permalink":"/openrag/quickstart"}}');var t=r(4848),l=r(8453),a=r(1470),o=r(9365);const i={title:"Install OpenRAG",slug:"/install"},d=void 0,c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Python wheel",id:"install-python-wheel",level:2},{value:"Advanced Setup",id:"advanced-setup",level:3}];function u(e){const n={a:"a",code:"code",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,l.R)(),...e.components},{Details:r}=n;return r||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"OpenRAG can be installed in multiple ways:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"#install-python-wheel",children:(0,t.jsx)(n.strong,{children:"Python wheel"})}),": Install the OpenRAG Python wheel and use the ",(0,t.jsx)(n.a,{href:"/get-started/tui",children:"OpenRAG Terminal User Interface (TUI)"})," to install, run, and configure your OpenRAG deployment without running Docker commands."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"get-started/docker",children:(0,t.jsx)(n.strong,{children:"Docker Compose"})}),": Clone the OpenRAG repository and deploy OpenRAG with Docker Compose, including all services and dependencies."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://www.python.org/downloads/release/python-3100/",children:"Python Version 3.10 to 3.13"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://docs.astral.sh/uv/getting-started/installation/",children:"uv"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://docs.docker.com/get-docker/",children:"Docker"})," or ",(0,t.jsx)(n.a,{href:"https://podman.io/docs/installation",children:"Podman"})," installed"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://docs.docker.com/compose/install/",children:"Docker Compose"})," installed. If using Podman, use ",(0,t.jsx)(n.a,{href:"https://docs.podman.io/en/latest/markdown/podman-compose.1.html",children:"podman-compose"})," or alias Docker compose commands to Podman commands."]}),"\n",(0,t.jsx)(n.li,{children:"For GPU support: (TBD)"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"install-python-wheel",children:"Python wheel"}),"\n",(0,t.jsxs)(n.p,{children:["The Python wheel is currently available internally, but will be available on PyPI at launch.\nThe wheel installs the OpenRAG wheel, which includes the TUI for installing, running, and managing OpenRAG.\nFor more information on virtual environments, see ",(0,t.jsx)(n.a,{href:"https://docs.astral.sh/uv/pip/environments",children:"uv"}),"."]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Create a new project with a virtual environment using ",(0,t.jsx)(n.a,{href:"https://docs.astral.sh/uv/pip/environments",children:"uv"}),"."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"uv init YOUR_PROJECT_NAME\ncd YOUR_PROJECT_NAME\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add the OpenRAG wheel to your project and install it in the virtual environment.\nReplace ",(0,t.jsx)(n.code,{children:"PATH/TO/"})," and ",(0,t.jsx)(n.code,{children:"VERSION"})," with your OpenRAG wheel location and version."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"uv add PATH/TO/openrag-VERSION-py3-none-any.whl\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Ensure all dependencies are installed and updated in your virtual environment."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"uv sync\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Start the OpenRAG TUI."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"uv run openrag\n"})}),"\n",(0,t.jsx)(n.p,{children:"The OpenRAG TUI opens."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["To install OpenRAG with Basic Setup, click ",(0,t.jsx)(n.strong,{children:"Basic Setup"})," or press ",(0,t.jsx)("kbd",{children:"1"}),". Basic Setup does not set up OAuth connections for ingestion from Google Drive, OneDrive, or AWS. For OAuth setup, see ",(0,t.jsx)(n.a,{href:"#advanced-setup",children:"Advanced Setup"}),".\nThe TUI prompts you for the required startup values.\nClick ",(0,t.jsx)(n.strong,{children:"Generate Passwords"})," to autocomplete fields that contain ",(0,t.jsx)(n.strong,{children:"Auto-generated Secure Password"}),", or bring your own passwords."]}),"\n",(0,t.jsxs)(r,{closed:!0,children:[(0,t.jsx)("summary",{children:"Where do I find the required startup values?"}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Where to Find"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_PASSWORD"})}),(0,t.jsx)(n.td,{children:"Auto-generated secure password"}),(0,t.jsx)(n.td,{children:"The password for OpenSearch database access. Must be at least 8 characters and must contain at least one uppercase letter, one lowercase letter, one digit, and one special character."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENAI_API_KEY"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.a,{href:"https://platform.openai.com/api-keys",children:"OpenAI Platform"})}),(0,t.jsx)(n.td,{children:"API key from your OpenAI account."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER"})}),(0,t.jsx)(n.td,{children:"User generated"}),(0,t.jsxs)(n.td,{children:["Username for Langflow admin access. For more, see ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-superuser",children:"Langflow docs"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})}),(0,t.jsx)(n.td,{children:"Auto-generated secure password"}),(0,t.jsxs)(n.td,{children:["Password for Langflow admin access. For more, see the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-superuser",children:"Langflow docs"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SECRET_KEY"})}),(0,t.jsx)(n.td,{children:"Auto-generated secure key"}),(0,t.jsxs)(n.td,{children:["Secret key for Langflow security. For more, see the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-secret-key",children:"Langflow docs"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),(0,t.jsx)(n.td,{children:"Auto-generated or manual"}),(0,t.jsxs)(n.td,{children:["Auto-login configuration. For more, see the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-auto-login",children:"Langflow docs"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),(0,t.jsx)(n.td,{children:"Langflow"}),(0,t.jsxs)(n.td,{children:["New user activation setting. For more, see the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-new-user-is-active",children:"Langflow docs"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})}),(0,t.jsx)(n.td,{children:"Langflow server"}),(0,t.jsxs)(n.td,{children:["Superuser CLI access setting. For more, see the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-enable-superuser-cli",children:"Langflow docs"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"DOCUMENTS_PATH"})}),(0,t.jsx)(n.td,{children:"Set your local path"}),(0,t.jsx)(n.td,{children:"Path to your document storage directory."})]})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:["To complete credentials, click ",(0,t.jsx)(n.strong,{children:"Save Configuration"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["To start OpenRAG with your credentials, click ",(0,t.jsx)(n.strong,{children:"Start Container Services"}),".\nStartup pulls container images and starts them, so it can take some time.\nThe operation has completed when the ",(0,t.jsx)(n.strong,{children:"Close"})," button is available and the terminal displays:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"Services started successfully\nCommand completed successfully\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["To open the OpenRAG application, click ",(0,t.jsx)(n.strong,{children:"Open App"}),", press ",(0,t.jsx)("kbd",{children:"6"}),", or navigate to ",(0,t.jsx)(n.code,{children:"http://localhost:3000"}),".\nThe application opens."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Select your language model and embedding model provider, and complete the required fields.\n",(0,t.jsx)(n.strong,{children:"Your provider can only be selected once, and you must use the same provider for your language model and embedding model."}),"\nThe language model can be changed, but the embeddings model cannot be changed.\nTo change your provider selection, you must restart OpenRAG and delete the ",(0,t.jsx)(n.code,{children:"config.yml"})," file."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(a.A,{groupId:"Embedding provider",children:[(0,t.jsx)(o.A,{value:"OpenAI",label:"OpenAI",default:!0,children:(0,t.jsxs)(n.ol,{start:"9",children:["\n",(0,t.jsxs)(n.li,{children:["If you already entered a value for ",(0,t.jsx)(n.code,{children:"OPENAI_API_KEY"})," in the TUI in Step 5, enable ",(0,t.jsx)(n.strong,{children:"Get API key from environment variable"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Under ",(0,t.jsx)(n.strong,{children:"Advanced settings"}),", select your ",(0,t.jsx)(n.strong,{children:"Embedding Model"})," and ",(0,t.jsx)(n.strong,{children:"Language Model"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["To load 2 sample PDFs, enable ",(0,t.jsx)(n.strong,{children:"Sample dataset"}),".\nThis is recommended, but not required."]}),"\n",(0,t.jsxs)(n.li,{children:["Click ",(0,t.jsx)(n.strong,{children:"Complete"}),"."]}),"\n"]})}),(0,t.jsx)(o.A,{value:"IBM watsonx.ai",label:"IBM watsonx.ai",children:(0,t.jsxs)(n.ol,{start:"9",children:["\n",(0,t.jsxs)(n.li,{children:["Complete the fields for ",(0,t.jsx)(n.strong,{children:"watsonx.ai API Endpoint"}),", ",(0,t.jsx)(n.strong,{children:"IBM API key"}),", and ",(0,t.jsx)(n.strong,{children:"IBM Project ID"}),".\nThese values are found in your IBM watsonx deployment."]}),"\n",(0,t.jsxs)(n.li,{children:["Under ",(0,t.jsx)(n.strong,{children:"Advanced settings"}),", select your ",(0,t.jsx)(n.strong,{children:"Embedding Model"})," and ",(0,t.jsx)(n.strong,{children:"Language Model"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["To load 2 sample PDFs, enable ",(0,t.jsx)(n.strong,{children:"Sample dataset"}),".\nThis is recommended, but not required."]}),"\n",(0,t.jsxs)(n.li,{children:["Click ",(0,t.jsx)(n.strong,{children:"Complete"}),"."]}),"\n"]})}),(0,t.jsx)(o.A,{value:"Ollama",label:"Ollama",children:(0,t.jsxs)(n.ol,{start:"9",children:["\n",(0,t.jsxs)(n.li,{children:["Enter your Ollama server's base URL address.\nThe default Ollama server address is ",(0,t.jsx)(n.code,{children:"http://localhost:11434"}),".\nSince OpenRAG is running in a container, you may need to change ",(0,t.jsx)(n.code,{children:"localhost"})," to access services outside of the container. For example, change ",(0,t.jsx)(n.code,{children:"http://localhost:11434"})," to ",(0,t.jsx)(n.code,{children:"http://host.docker.internal:11434"})," to connect to Ollama.\nOpenRAG automatically sends a test connection to your Ollama server to confirm connectivity."]}),"\n",(0,t.jsxs)(n.li,{children:["Select the ",(0,t.jsx)(n.strong,{children:"Embedding Model"})," and ",(0,t.jsx)(n.strong,{children:"Language Model"})," your Ollama server is running.\nOpenRAG automatically lists the available models from your Ollama server."]}),"\n",(0,t.jsxs)(n.li,{children:["To load 2 sample PDFs, enable ",(0,t.jsx)(n.strong,{children:"Sample dataset"}),".\nThis is recommended, but not required."]}),"\n",(0,t.jsxs)(n.li,{children:["Click ",(0,t.jsx)(n.strong,{children:"Complete"}),"."]}),"\n"]})})]}),"\n",(0,t.jsxs)(n.ol,{start:"13",children:["\n",(0,t.jsxs)(n.li,{children:["Continue with the ",(0,t.jsx)(n.a,{href:"/quickstart",children:"Quickstart"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"advanced-setup",children:"Advanced Setup"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Advanced Setup"})," includes the required values from ",(0,t.jsx)(n.strong,{children:"Basic Setup"}),", with additional settings for OAuth credentials.\nIf the OpenRAG TUI detects OAuth credentials, it enforces the Advanced Setup path."]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"Add your client and secret values for Google, Azure, or AWS OAuth.\nThese values can be found in your OAuth provider."}),"\n",(0,t.jsx)(n.li,{children:"The OpenRAG TUI presents redirect URIs for your OAuth app.\nThese are the URLs your OAuth provider will redirect back to after user sign-in.\nRegister these redirect values with your OAuth provider as they are presented in the TUI."}),"\n",(0,t.jsxs)(n.li,{children:["To open the OpenRAG application, click ",(0,t.jsx)(n.strong,{children:"Open App"})," or press ",(0,t.jsx)("kbd",{children:"6"}),".\nYou will be presented with your provider's OAuth sign-in screen, and be redirected to the redirect URI after sign-in."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Two additional variables are available for Advanced Setup:"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"LANGFLOW_PUBLIC_URL"})," controls where the Langflow web interface can be accessed. This is where users interact with their flows in a browser."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"WEBHOOK_BASE_URL"})," controls where the endpoint for ",(0,t.jsx)(n.code,{children:"/connectors/CONNECTOR_TYPE/webhook"})," will be available.\nThis connection enables real-time document synchronization with external services.\nFor example, for Google Drive file synchronization the webhook URL is ",(0,t.jsx)(n.code,{children:"/connectors/google_drive/webhook"}),"."]})]})}function p(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>a,x:()=>o});var s=r(6540);const t={},l=s.createContext(t);function a(e){const n=s.useContext(l);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),s.createElement(l.Provider,{value:n},e.children)}},9365:(e,n,r)=>{r.d(n,{A:()=>a});r(6540);var s=r(4164);const t={tabItem:"tabItem_Ymn6"};var l=r(4848);function a({children:e,hidden:n,className:r}){return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(t.tabItem,r),hidden:n,children:e})}}}]);