diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py
index 1515e4ae2..6c4d151b0 100644
--- a/backend/open_webui/env.py
+++ b/backend/open_webui/env.py
@@ -448,3 +448,10 @@ OTEL_RESOURCE_ATTRIBUTES = os.environ.get(
 OTEL_TRACES_SAMPLER = os.environ.get(
     "OTEL_TRACES_SAMPLER", "parentbased_always_on"
 ).lower()
+
+####################################
+# TOOLS/FUNCTIONS PIP OPTIONS
+####################################
+
+PIP_OPTIONS = os.getenv("PIP_OPTIONS", "").split()
+PIP_PACKAGE_INDEX_OPTIONS = os.getenv("PIP_PACKAGE_INDEX_OPTIONS", "").split()
diff --git a/backend/open_webui/utils/plugin.py b/backend/open_webui/utils/plugin.py
index 35cddb208..685746b19 100644
--- a/backend/open_webui/utils/plugin.py
+++ b/backend/open_webui/utils/plugin.py
@@ -7,7 +7,7 @@ import types
 import tempfile
 import logging
 
-from open_webui.env import SRC_LOG_LEVELS
+from open_webui.env import SRC_LOG_LEVELS, PIP_OPTIONS, PIP_PACKAGE_INDEX_OPTIONS
 from open_webui.models.functions import Functions
 from open_webui.models.tools import Tools
 
@@ -170,7 +170,7 @@ def install_frontmatter_requirements(requirements: str):
         try:
             req_list = [req.strip() for req in requirements.split(",")]
             log.info(f"Installing requirements: {' '.join(req_list)}")
-            subprocess.check_call([sys.executable, "-m", "pip", "install"] + req_list)
+            subprocess.check_call([sys.executable, "-m", "pip", "install"] + PIP_OPTIONS + req_list + PIP_PACKAGE_INDEX_OPTIONS)
         except Exception as e:
             log.error(f"Error installing packages: {' '.join(req_list)}")
             raise e