From 0afb740a8e87e7b9dacb77a7715fe9ce3cf2e7d4 Mon Sep 17 00:00:00 2001
From: "github-merge-queue[bot]"
Date: Fri, 12 Sep 2025 17:25:56 +0000
Subject: [PATCH] deploy: e8a23195271ccd908bf748ff44690d5ed1ec9f13
---
404.html | 4 +-
agent-tutorial.html | 4 +-
agents-tools.html | 4 +-
agents.html | 4 +-
api-build.html | 4 +-
api-files.html | 4 +-
api-flows-run.html | 4 +-
api-flows.html | 4 +-
api-keys-and-authentication.html | 4 +-
api-logs.html | 4 +-
api-monitor.html | 4 +-
api-projects.html | 4 +-
api-reference-api-examples.html | 4 +-
api-users.html | 4 +-
api.html | 4 +-
api/add-server.html | 4 +-
api/add-user.html | 4 +-
api/auto-login.html | 4 +-
api/build-flow.html | 4 +-
api/build-public-tmp.html | 4 +-
api/build-vertex-stream.html | 4 +-
api/build-vertex.html | 4 +-
api/cancel-build.html | 4 +-
api/check-if-store-has-api-key.html | 4 +-
api/check-if-store-is-enabled.html | 4 +-
api/check-installed-mcp-servers.html | 4 +-
api/create-api-key-route.html | 4 +-
api/create-flow.html | 4 +-
api/create-flows.html | 4 +-
api/create-folder-redirect.html | 4 +-
api/create-project.html | 4 +-
api/create-upload-file.html | 4 +-
api/create-variable.html | 4 +-
api/custom-component-update.html | 4 +-
api/custom-component.html | 4 +-
api/delete-all-files-1.html | 4 +-
api/delete-all-files.html | 4 +-
api/delete-api-key-route.html | 4 +-
api/delete-file-1.html | 4 +-
api/delete-file.html | 4 +-
api/delete-files-batch.html | 4 +-
api/delete-flow.html | 4 +-
api/delete-folder-redirect.html | 4 +-
api/delete-messages-session.html | 4 +-
api/delete-messages.html | 4 +-
api/delete-multiple-flows.html | 4 +-
api/delete-project.html | 4 +-
api/delete-server.html | 4 +-
api/delete-user.html | 4 +-
api/delete-variable.html | 4 +-
api/delete-vertex-builds.html | 4 +-
api/download-component.html | 4 +-
api/download-file-1.html | 4 +-
api/download-file-2.html | 4 +-
api/download-file-redirect.html | 4 +-
api/download-file.html | 4 +-
api/download-files-batch.html | 4 +-
api/download-image.html | 4 +-
api/download-multiple-file.html | 4 +-
api/download-profile-picture.html | 4 +-
api/edit-file-name.html | 4 +-
api/experimental-run-flow.html | 4 +-
api/get-all.html | 4 +-
api/get-api-keys-route.html | 4 +-
api/get-build-events.html | 4 +-
api/get-components.html | 4 +-
api/get-config.html | 4 +-
api/get-elevenlabs-voice-ids.html | 4 +-
api/get-list-of-components-liked-by-user.html | 4 +-
api/get-message-sessions.html | 4 +-
api/get-messages.html | 4 +-
api/get-server-endpoint.html | 4 +-
api/get-servers.html | 4 +-
api/get-starter-projects.html | 4 +-
api/get-tags.html | 4 +-
api/get-task-status.html | 4 +-
api/get-transactions.html | 4 +-
api/get-version.html | 4 +-
api/get-vertex-builds.html | 4 +-
api/handle-messages-1.html | 4 +-
api/handle-messages.html | 4 +-
api/handle-project-messages-with-slash.html | 4 +-
api/handle-project-messages.html | 4 +-
api/handle-project-sse.html | 4 +-
api/handle-sse-1.html | 4 +-
api/handle-sse.html | 4 +-
api/health-check.html | 4 +-
api/health.html | 4 +-
api/install-mcp-config.html | 4 +-
api/like-component.html | 4 +-
api/list-files-1.html | 4 +-
api/list-files-2.html | 4 +-
api/list-files.html | 4 +-
api/list-profile-pictures.html | 4 +-
api/list-project-tools.html | 4 +-
api/login-to-get-access-token.html | 4 +-
api/logout.html | 4 +-
api/logs.html | 4 +-
api/patch-user.html | 4 +-
api/post-validate-code.html | 4 +-
api/post-validate-prompt.html | 4 +-
api/process-1.html | 4 +-
api/process.html | 4 +-
api/read-all-users.html | 4 +-
api/read-basic-examples.html | 4 +-
api/read-current-user.html | 4 +-
api/read-flow.html | 4 +-
api/read-flows.html | 4 +-
api/read-folder-redirect.html | 4 +-
api/read-folders-redirect.html | 4 +-
api/read-project.html | 4 +-
api/read-projects.html | 4 +-
api/read-public-flow.html | 4 +-
api/read-variables.html | 4 +-
api/refresh-token.html | 4 +-
api/reset-password.html | 4 +-
api/retrieve-vertices-order.html | 4 +-
api/save-store-api-key.html | 4 +-
api/share-component.html | 4 +-
api/simplified-run-flow.html | 4 +-
api/stream-logs.html | 4 +-
api/update-flow.html | 4 +-
api/update-folder-redirect.html | 4 +-
api/update-message.html | 4 +-
api/update-project-mcp-settings.html | 4 +-
api/update-project.html | 4 +-
api/update-server-endpoint.html | 4 +-
api/update-session-id.html | 4 +-
api/update-shared-component.html | 4 +-
api/update-variable.html | 4 +-
api/upload-file-1.html | 4 +-
api/upload-file-2.html | 4 +-
api/upload-file-redirect.html | 4 +-
api/upload-file.html | 4 +-
api/upload-user-file-1.html | 4 +-
api/upload-user-file.html | 4 +-
api/webhook-run-flow.html | 4 +-
assets/css/styles.79069821.css | 1 +
assets/css/styles.9488e50d.css | 1 -
assets/js/16ceb5d2.5dc54cce.js | 1 -
assets/js/16ceb5d2.5e136772.js | 1 +
...0d4f5.10c9b2f6.js => 2ab0d4f5.4e475696.js} | 2 +-
assets/js/56350599.2c78f81a.js | 1 -
assets/js/56350599.359d82ad.js | 1 +
assets/js/6d20d6ec.09a7e86e.js | 1 +
assets/js/6d20d6ec.cc0ea13d.js | 1 -
...30154.126cbc92.js => e3230154.93237aca.js} | 2 +-
...6a4d2.aa87f68a.js => e6c6a4d2.f15453c7.js} | 2 +-
assets/js/f735f5f3.82190a3e.js | 1 -
assets/js/f735f5f3.88533d24.js | 1 +
...n.299616b1.js => runtime~main.e77c9791.js} | 2 +-
bundles-aiml.html | 4 +-
bundles-amazon.html | 4 +-
bundles-anthropic.html | 4 +-
bundles-arxiv.html | 4 +-
bundles-azure.html | 4 +-
bundles-baidu.html | 4 +-
bundles-bing.html | 4 +-
bundles-cloudflare.html | 4 +-
bundles-cohere.html | 4 +-
bundles-datastax.html | 4 +-
bundles-deepseek.html | 4 +-
bundles-duckduckgo.html | 4 +-
bundles-exa.html | 4 +-
bundles-glean.html | 4 +-
bundles-google.html | 4 +-
bundles-groq.html | 4 +-
bundles-huggingface.html | 4 +-
bundles-ibm.html | 4 +-
bundles-icosacomputing.html | 4 +-
bundles-langchain.html | 4 +-
bundles-lmstudio.html | 4 +-
bundles-maritalk.html | 4 +-
bundles-mem0.html | 4 +-
bundles-mistralai.html | 4 +-
bundles-novita.html | 4 +-
bundles-nvidia.html | 4 +-
bundles-ollama.html | 4 +-
bundles-openai.html | 4 +-
bundles-openrouter.html | 4 +-
bundles-perplexity.html | 4 +-
bundles-redis.html | 4 +-
bundles-sambanova.html | 4 +-
bundles-searchapi.html | 4 +-
bundles-vertexai.html | 4 +-
bundles-wikipedia.html | 4 +-
bundles-xai.html | 4 +-
chat-with-files.html | 4 +-
chat-with-rag.html | 4 +-
components-agents.html | 4 +-
components-bundle-components.html | 4 +-
components-custom-components.html | 4 +-
components-data.html | 4 +-
components-embedding-models.html | 4 +-
components-helpers.html | 4 +-
components-io.html | 4 +-
components-logic.html | 4 +-
components-memories.html | 4 +-
components-models.html | 4 +-
components-processing.html | 4 +-
components-prompts.html | 4 +-
components-tools.html | 4 +-
components-vector-stores.html | 4 +-
concepts-components.html | 4 +-
concepts-file-management.html | 11 ++-
concepts-flows-import.html | 4 +-
concepts-flows.html | 4 +-
concepts-overview.html | 4 +-
concepts-playground.html | 4 +-
concepts-publish.html | 4 +-
concepts-voice-mode.html | 4 +-
configuration-cli.html | 4 +-
configuration-custom-database.html | 4 +-
configuration-global-variables.html | 75 +++++++------------
contributing-bundles.html | 4 +-
contributing-community.html | 4 +-
contributing-component-tests.html | 4 +-
contributing-components.html | 4 +-
contributing-github-issues.html | 4 +-
contributing-how-to-contribute.html | 4 +-
contributing-telemetry.html | 4 +-
contributing-templates.html | 4 +-
data-types.html | 4 +-
deployment-architecture.html | 4 +-
deployment-caddyfile.html | 4 +-
deployment-docker.html | 4 +-
deployment-gcp.html | 4 +-
deployment-hugging-face-spaces.html | 4 +-
deployment-kubernetes-dev.html | 4 +-
deployment-kubernetes-prod.html | 4 +-
deployment-overview.html | 4 +-
deployment-prod-best-practices.html | 4 +-
deployment-public-server.html | 4 +-
deployment-railway.html | 4 +-
deployment-render.html | 4 +-
develop-application.html | 4 +-
enterprise-database-guide.html | 4 +-
environment-variables.html | 50 +++++++++++--
get-started-installation.html | 4 +-
get-started-quickstart.html | 4 +-
index.html | 4 +-
install-custom-dependencies.html | 4 +-
integrations-apify.html | 4 +-
integrations-arize.html | 4 +-
integrations-assemblyai.html | 4 +-
integrations-cleanlab.html | 4 +-
integrations-composio.html | 4 +-
integrations-docling.html | 4 +-
integrations-google-big-query.html | 4 +-
integrations-langfuse.html | 4 +-
integrations-langsmith.html | 4 +-
integrations-langwatch.html | 4 +-
integrations-nvidia-g-assist.html | 4 +-
integrations-nvidia-ingest-wsl2.html | 4 +-
integrations-nvidia-ingest.html | 4 +-
integrations-opik.html | 4 +-
.../notion/notion-agent-conversational.html | 4 +-
.../notion/notion-agent-meeting-notes.html | 4 +-
integrations/notion/setup.html | 4 +-
logging.html | 33 ++------
luna-for-langflow.html | 4 +-
mcp-client.html | 4 +-
mcp-component-astra.html | 4 +-
mcp-server.html | 5 +-
mcp-tutorial.html | 4 +-
memory.html | 4 +-
release-notes.html | 4 +-
search.html | 4 +-
session-id.html | 4 +-
sitemap.xml | 2 +-
troubleshoot.html | 4 +-
typescript-client.html | 4 +-
webhook.html | 4 +-
273 files changed, 601 insertions(+), 605 deletions(-)
create mode 100644 assets/css/styles.79069821.css
delete mode 100644 assets/css/styles.9488e50d.css
delete mode 100644 assets/js/16ceb5d2.5dc54cce.js
create mode 100644 assets/js/16ceb5d2.5e136772.js
rename assets/js/{2ab0d4f5.10c9b2f6.js => 2ab0d4f5.4e475696.js} (50%)
delete mode 100644 assets/js/56350599.2c78f81a.js
create mode 100644 assets/js/56350599.359d82ad.js
create mode 100644 assets/js/6d20d6ec.09a7e86e.js
delete mode 100644 assets/js/6d20d6ec.cc0ea13d.js
rename assets/js/{e3230154.126cbc92.js => e3230154.93237aca.js} (98%)
rename assets/js/{e6c6a4d2.aa87f68a.js => e6c6a4d2.f15453c7.js} (56%)
delete mode 100644 assets/js/f735f5f3.82190a3e.js
create mode 100644 assets/js/f735f5f3.88533d24.js
rename assets/js/{runtime~main.299616b1.js => runtime~main.e77c9791.js} (97%)
diff --git a/404.html b/404.html
index f2a38e70c8..7182c37251 100644
--- a/404.html
+++ b/404.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/agent-tutorial.html b/agent-tutorial.html
index 03a7fa415b..03c8f18654 100644
--- a/agent-tutorial.html
+++ b/agent-tutorial.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/agents-tools.html b/agents-tools.html
index 89298945eb..8558be67b0 100644
--- a/agents-tools.html
+++ b/agents-tools.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/agents.html b/agents.html
index 11e7c30022..1e46ba0df8 100644
--- a/agents.html
+++ b/agents.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-build.html b/api-build.html
index 1db5641851..13cecfa851 100644
--- a/api-build.html
+++ b/api-build.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-files.html b/api-files.html
index 9265f555e7..3d72789148 100644
--- a/api-files.html
+++ b/api-files.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-flows-run.html b/api-flows-run.html
index 20855731d0..3be9aa19b5 100644
--- a/api-flows-run.html
+++ b/api-flows-run.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-flows.html b/api-flows.html
index 893aacf85c..a38060f014 100644
--- a/api-flows.html
+++ b/api-flows.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-keys-and-authentication.html b/api-keys-and-authentication.html
index 771046e85f..ff1285c3b7 100644
--- a/api-keys-and-authentication.html
+++ b/api-keys-and-authentication.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-logs.html b/api-logs.html
index 5469bb0483..d58b01770e 100644
--- a/api-logs.html
+++ b/api-logs.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-monitor.html b/api-monitor.html
index 5a22750373..b4eb9637f5 100644
--- a/api-monitor.html
+++ b/api-monitor.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-projects.html b/api-projects.html
index 774babdae8..9629116693 100644
--- a/api-projects.html
+++ b/api-projects.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html
index 92827db6c6..746da18c43 100644
--- a/api-reference-api-examples.html
+++ b/api-reference-api-examples.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api-users.html b/api-users.html
index eb83ae3b4f..85c0e42903 100644
--- a/api-users.html
+++ b/api-users.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api.html b/api.html
index ff7d53e1f5..f674aa9e8c 100644
--- a/api.html
+++ b/api.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/add-server.html b/api/add-server.html
index 829695c6b6..1548abd5a9 100644
--- a/api/add-server.html
+++ b/api/add-server.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/add-user.html b/api/add-user.html
index 392dbf9760..6b562185c7 100644
--- a/api/add-user.html
+++ b/api/add-user.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/auto-login.html b/api/auto-login.html
index 22af0e99f0..cf99e0c983 100644
--- a/api/auto-login.html
+++ b/api/auto-login.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/build-flow.html b/api/build-flow.html
index 651bfb8d01..3d4d167e7d 100644
--- a/api/build-flow.html
+++ b/api/build-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/build-public-tmp.html b/api/build-public-tmp.html
index cfc03f2e6f..d3db8a0ad3 100644
--- a/api/build-public-tmp.html
+++ b/api/build-public-tmp.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/build-vertex-stream.html b/api/build-vertex-stream.html
index 61fb601956..52446f1c30 100644
--- a/api/build-vertex-stream.html
+++ b/api/build-vertex-stream.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/build-vertex.html b/api/build-vertex.html
index 73dd84cab6..ead1f32676 100644
--- a/api/build-vertex.html
+++ b/api/build-vertex.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/cancel-build.html b/api/cancel-build.html
index dd61de004c..3d4206a90e 100644
--- a/api/cancel-build.html
+++ b/api/cancel-build.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/check-if-store-has-api-key.html b/api/check-if-store-has-api-key.html
index f637275583..c8c46cde97 100644
--- a/api/check-if-store-has-api-key.html
+++ b/api/check-if-store-has-api-key.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/check-if-store-is-enabled.html b/api/check-if-store-is-enabled.html
index cc1d3f655b..b1762da321 100644
--- a/api/check-if-store-is-enabled.html
+++ b/api/check-if-store-is-enabled.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/check-installed-mcp-servers.html b/api/check-installed-mcp-servers.html
index ab0ac5f290..5a75a679b6 100644
--- a/api/check-installed-mcp-servers.html
+++ b/api/check-installed-mcp-servers.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/create-api-key-route.html b/api/create-api-key-route.html
index 4ecc1cb874..603dbc884c 100644
--- a/api/create-api-key-route.html
+++ b/api/create-api-key-route.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/create-flow.html b/api/create-flow.html
index 442187a4f2..97f9b265c4 100644
--- a/api/create-flow.html
+++ b/api/create-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/create-flows.html b/api/create-flows.html
index e8234a8245..42ea2bf452 100644
--- a/api/create-flows.html
+++ b/api/create-flows.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/create-folder-redirect.html b/api/create-folder-redirect.html
index 01e0f3877f..ad60b0d220 100644
--- a/api/create-folder-redirect.html
+++ b/api/create-folder-redirect.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/create-project.html b/api/create-project.html
index d56d47fa29..dccfca5ca7 100644
--- a/api/create-project.html
+++ b/api/create-project.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/create-upload-file.html b/api/create-upload-file.html
index d1ea2e2311..58b91df1f9 100644
--- a/api/create-upload-file.html
+++ b/api/create-upload-file.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/create-variable.html b/api/create-variable.html
index 72395ff724..9b43e1ccfe 100644
--- a/api/create-variable.html
+++ b/api/create-variable.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/custom-component-update.html b/api/custom-component-update.html
index e95d30130b..172c34454b 100644
--- a/api/custom-component-update.html
+++ b/api/custom-component-update.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/custom-component.html b/api/custom-component.html
index 8c6103fe1a..1313948c9f 100644
--- a/api/custom-component.html
+++ b/api/custom-component.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-all-files-1.html b/api/delete-all-files-1.html
index 35cf15a8fb..50c0dd01fd 100644
--- a/api/delete-all-files-1.html
+++ b/api/delete-all-files-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-all-files.html b/api/delete-all-files.html
index 0e2edac7eb..2df5294ee5 100644
--- a/api/delete-all-files.html
+++ b/api/delete-all-files.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-api-key-route.html b/api/delete-api-key-route.html
index b91a40fe85..1e3c916150 100644
--- a/api/delete-api-key-route.html
+++ b/api/delete-api-key-route.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-file-1.html b/api/delete-file-1.html
index 508b6b6dac..cb54334c06 100644
--- a/api/delete-file-1.html
+++ b/api/delete-file-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-file.html b/api/delete-file.html
index 77d834af94..ce236fe1cc 100644
--- a/api/delete-file.html
+++ b/api/delete-file.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-files-batch.html b/api/delete-files-batch.html
index e11565a360..e5101325a8 100644
--- a/api/delete-files-batch.html
+++ b/api/delete-files-batch.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-flow.html b/api/delete-flow.html
index b94d2768a3..f53c2e7442 100644
--- a/api/delete-flow.html
+++ b/api/delete-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-folder-redirect.html b/api/delete-folder-redirect.html
index 48e775f9c2..671d9ed0a9 100644
--- a/api/delete-folder-redirect.html
+++ b/api/delete-folder-redirect.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-messages-session.html b/api/delete-messages-session.html
index 8d9d66e92d..efd4c03dee 100644
--- a/api/delete-messages-session.html
+++ b/api/delete-messages-session.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-messages.html b/api/delete-messages.html
index 7a821b5a7c..38346e4fcd 100644
--- a/api/delete-messages.html
+++ b/api/delete-messages.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-multiple-flows.html b/api/delete-multiple-flows.html
index 819d22145d..a9eb5d8f11 100644
--- a/api/delete-multiple-flows.html
+++ b/api/delete-multiple-flows.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-project.html b/api/delete-project.html
index b78addc03a..aaad471f86 100644
--- a/api/delete-project.html
+++ b/api/delete-project.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-server.html b/api/delete-server.html
index 7e1bd3c30b..d2435f3581 100644
--- a/api/delete-server.html
+++ b/api/delete-server.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-user.html b/api/delete-user.html
index d9dbf2a93d..c16ceee9e8 100644
--- a/api/delete-user.html
+++ b/api/delete-user.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-variable.html b/api/delete-variable.html
index 2c022b32c5..13b2115154 100644
--- a/api/delete-variable.html
+++ b/api/delete-variable.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/delete-vertex-builds.html b/api/delete-vertex-builds.html
index 55a54a32a5..bc72034d8f 100644
--- a/api/delete-vertex-builds.html
+++ b/api/delete-vertex-builds.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-component.html b/api/download-component.html
index 9ac37bc183..2baf761dc8 100644
--- a/api/download-component.html
+++ b/api/download-component.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-file-1.html b/api/download-file-1.html
index 8edb0757b5..f6b2b9088f 100644
--- a/api/download-file-1.html
+++ b/api/download-file-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-file-2.html b/api/download-file-2.html
index fba887d956..8949198858 100644
--- a/api/download-file-2.html
+++ b/api/download-file-2.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-file-redirect.html b/api/download-file-redirect.html
index 78f9e22756..e1dd68b882 100644
--- a/api/download-file-redirect.html
+++ b/api/download-file-redirect.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-file.html b/api/download-file.html
index 269ff89055..2a0ab8787e 100644
--- a/api/download-file.html
+++ b/api/download-file.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-files-batch.html b/api/download-files-batch.html
index cf65c099ee..2fc364fcbe 100644
--- a/api/download-files-batch.html
+++ b/api/download-files-batch.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-image.html b/api/download-image.html
index 0d6e993c9d..8ec86a7524 100644
--- a/api/download-image.html
+++ b/api/download-image.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-multiple-file.html b/api/download-multiple-file.html
index db1a9cfda1..b4e5460986 100644
--- a/api/download-multiple-file.html
+++ b/api/download-multiple-file.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/download-profile-picture.html b/api/download-profile-picture.html
index 89c557d254..cad8f71acf 100644
--- a/api/download-profile-picture.html
+++ b/api/download-profile-picture.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/edit-file-name.html b/api/edit-file-name.html
index 1f6a4b4d60..5927a142ce 100644
--- a/api/edit-file-name.html
+++ b/api/edit-file-name.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/experimental-run-flow.html b/api/experimental-run-flow.html
index 8d1ad0965d..0eb63ee6d3 100644
--- a/api/experimental-run-flow.html
+++ b/api/experimental-run-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-all.html b/api/get-all.html
index 1d0bf2ec3b..eefed386ac 100644
--- a/api/get-all.html
+++ b/api/get-all.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-api-keys-route.html b/api/get-api-keys-route.html
index 019f8753d4..294e4c4c0c 100644
--- a/api/get-api-keys-route.html
+++ b/api/get-api-keys-route.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-build-events.html b/api/get-build-events.html
index dccd1661f8..8577f4f4fc 100644
--- a/api/get-build-events.html
+++ b/api/get-build-events.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-components.html b/api/get-components.html
index 8f290dd258..57937bdb14 100644
--- a/api/get-components.html
+++ b/api/get-components.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-config.html b/api/get-config.html
index 273cd115d2..b7773784a0 100644
--- a/api/get-config.html
+++ b/api/get-config.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-elevenlabs-voice-ids.html b/api/get-elevenlabs-voice-ids.html
index a78706b8ae..fa783ccfa1 100644
--- a/api/get-elevenlabs-voice-ids.html
+++ b/api/get-elevenlabs-voice-ids.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-list-of-components-liked-by-user.html b/api/get-list-of-components-liked-by-user.html
index df145c7dc6..0531764de4 100644
--- a/api/get-list-of-components-liked-by-user.html
+++ b/api/get-list-of-components-liked-by-user.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-message-sessions.html b/api/get-message-sessions.html
index faef9d4dc5..35990cc6d6 100644
--- a/api/get-message-sessions.html
+++ b/api/get-message-sessions.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-messages.html b/api/get-messages.html
index 2032aff740..4c4373b35d 100644
--- a/api/get-messages.html
+++ b/api/get-messages.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-server-endpoint.html b/api/get-server-endpoint.html
index 8523044b64..e818cc6a45 100644
--- a/api/get-server-endpoint.html
+++ b/api/get-server-endpoint.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-servers.html b/api/get-servers.html
index c702378737..8a0fdcc2e6 100644
--- a/api/get-servers.html
+++ b/api/get-servers.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-starter-projects.html b/api/get-starter-projects.html
index 5f2337d773..983335e2b1 100644
--- a/api/get-starter-projects.html
+++ b/api/get-starter-projects.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-tags.html b/api/get-tags.html
index ce76a0e8fa..bfae987a78 100644
--- a/api/get-tags.html
+++ b/api/get-tags.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-task-status.html b/api/get-task-status.html
index f636f1f664..a253f6180e 100644
--- a/api/get-task-status.html
+++ b/api/get-task-status.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-transactions.html b/api/get-transactions.html
index 62bd636726..826bfb546f 100644
--- a/api/get-transactions.html
+++ b/api/get-transactions.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-version.html b/api/get-version.html
index 43f6235a36..11db605fa4 100644
--- a/api/get-version.html
+++ b/api/get-version.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/get-vertex-builds.html b/api/get-vertex-builds.html
index c34984943f..f9d4918dd3 100644
--- a/api/get-vertex-builds.html
+++ b/api/get-vertex-builds.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/handle-messages-1.html b/api/handle-messages-1.html
index db6f65f439..62016cd5d3 100644
--- a/api/handle-messages-1.html
+++ b/api/handle-messages-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/handle-messages.html b/api/handle-messages.html
index 72fe48ada6..85d7fa3d92 100644
--- a/api/handle-messages.html
+++ b/api/handle-messages.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/handle-project-messages-with-slash.html b/api/handle-project-messages-with-slash.html
index 12239fe792..cbc188ba25 100644
--- a/api/handle-project-messages-with-slash.html
+++ b/api/handle-project-messages-with-slash.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/handle-project-messages.html b/api/handle-project-messages.html
index 4ce3158bec..b70dceae92 100644
--- a/api/handle-project-messages.html
+++ b/api/handle-project-messages.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/handle-project-sse.html b/api/handle-project-sse.html
index ed95e680d2..ff1e89e515 100644
--- a/api/handle-project-sse.html
+++ b/api/handle-project-sse.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/handle-sse-1.html b/api/handle-sse-1.html
index 6e23a35f22..961ba3d850 100644
--- a/api/handle-sse-1.html
+++ b/api/handle-sse-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/handle-sse.html b/api/handle-sse.html
index 243ad62a26..7a82ebb2e8 100644
--- a/api/handle-sse.html
+++ b/api/handle-sse.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/health-check.html b/api/health-check.html
index 86fd126244..42cfef9603 100644
--- a/api/health-check.html
+++ b/api/health-check.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/health.html b/api/health.html
index 8bf919df24..664aea2da8 100644
--- a/api/health.html
+++ b/api/health.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/install-mcp-config.html b/api/install-mcp-config.html
index 138b8f3a46..e8dfe8c977 100644
--- a/api/install-mcp-config.html
+++ b/api/install-mcp-config.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/like-component.html b/api/like-component.html
index 01677faf3a..5ed627a7c6 100644
--- a/api/like-component.html
+++ b/api/like-component.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/list-files-1.html b/api/list-files-1.html
index 5c1755731e..df1b37c427 100644
--- a/api/list-files-1.html
+++ b/api/list-files-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/list-files-2.html b/api/list-files-2.html
index 581375ed2b..f9931b3284 100644
--- a/api/list-files-2.html
+++ b/api/list-files-2.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/list-files.html b/api/list-files.html
index 188252e06f..6c8f7b9fb0 100644
--- a/api/list-files.html
+++ b/api/list-files.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/list-profile-pictures.html b/api/list-profile-pictures.html
index cfe950eef9..0ebfa38ffe 100644
--- a/api/list-profile-pictures.html
+++ b/api/list-profile-pictures.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/list-project-tools.html b/api/list-project-tools.html
index fc4aee1984..425c3daef6 100644
--- a/api/list-project-tools.html
+++ b/api/list-project-tools.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/login-to-get-access-token.html b/api/login-to-get-access-token.html
index 91b9b144c2..d22e959ec6 100644
--- a/api/login-to-get-access-token.html
+++ b/api/login-to-get-access-token.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/logout.html b/api/logout.html
index d76fdb7289..11e4a4b172 100644
--- a/api/logout.html
+++ b/api/logout.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/logs.html b/api/logs.html
index e3da59221c..bed05689d0 100644
--- a/api/logs.html
+++ b/api/logs.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/patch-user.html b/api/patch-user.html
index 8a958bf9d9..5ba77d368c 100644
--- a/api/patch-user.html
+++ b/api/patch-user.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/post-validate-code.html b/api/post-validate-code.html
index 55118dc04e..d7c838f8fc 100644
--- a/api/post-validate-code.html
+++ b/api/post-validate-code.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/post-validate-prompt.html b/api/post-validate-prompt.html
index 56a82108ab..bff2bf5672 100644
--- a/api/post-validate-prompt.html
+++ b/api/post-validate-prompt.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/process-1.html b/api/process-1.html
index f75b5fab5c..ddb850d189 100644
--- a/api/process-1.html
+++ b/api/process-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/process.html b/api/process.html
index 4de84c85b1..181347a06f 100644
--- a/api/process.html
+++ b/api/process.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-all-users.html b/api/read-all-users.html
index e372356769..15561b716d 100644
--- a/api/read-all-users.html
+++ b/api/read-all-users.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-basic-examples.html b/api/read-basic-examples.html
index c8f9ce729e..88bfbae3c4 100644
--- a/api/read-basic-examples.html
+++ b/api/read-basic-examples.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-current-user.html b/api/read-current-user.html
index 37aa1f5a03..7e6103b2a5 100644
--- a/api/read-current-user.html
+++ b/api/read-current-user.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-flow.html b/api/read-flow.html
index 8ef02f0ff0..fb62479c21 100644
--- a/api/read-flow.html
+++ b/api/read-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-flows.html b/api/read-flows.html
index d76f51f0e2..2b97a0ff76 100644
--- a/api/read-flows.html
+++ b/api/read-flows.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-folder-redirect.html b/api/read-folder-redirect.html
index 48c1e852bb..21842b61ad 100644
--- a/api/read-folder-redirect.html
+++ b/api/read-folder-redirect.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-folders-redirect.html b/api/read-folders-redirect.html
index 30840fb424..f4edc72a81 100644
--- a/api/read-folders-redirect.html
+++ b/api/read-folders-redirect.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-project.html b/api/read-project.html
index cbe7ff8b69..fce1d0e6e2 100644
--- a/api/read-project.html
+++ b/api/read-project.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-projects.html b/api/read-projects.html
index a7b532c274..0bde5266a3 100644
--- a/api/read-projects.html
+++ b/api/read-projects.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-public-flow.html b/api/read-public-flow.html
index 9ad7c2bc98..46a4d36c1e 100644
--- a/api/read-public-flow.html
+++ b/api/read-public-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/read-variables.html b/api/read-variables.html
index 0e7c4e5634..19f61b1b9f 100644
--- a/api/read-variables.html
+++ b/api/read-variables.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/refresh-token.html b/api/refresh-token.html
index 3dd21c200d..01e9d9f422 100644
--- a/api/refresh-token.html
+++ b/api/refresh-token.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/reset-password.html b/api/reset-password.html
index 0ee3d5cbe5..d66356c882 100644
--- a/api/reset-password.html
+++ b/api/reset-password.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/retrieve-vertices-order.html b/api/retrieve-vertices-order.html
index d8b7e64635..9992743eb4 100644
--- a/api/retrieve-vertices-order.html
+++ b/api/retrieve-vertices-order.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/save-store-api-key.html b/api/save-store-api-key.html
index 1214311345..1a8e6fa8a2 100644
--- a/api/save-store-api-key.html
+++ b/api/save-store-api-key.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/share-component.html b/api/share-component.html
index 9a23331cb9..fa4d0c5389 100644
--- a/api/share-component.html
+++ b/api/share-component.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/simplified-run-flow.html b/api/simplified-run-flow.html
index 6ddcbce6ec..5197edc820 100644
--- a/api/simplified-run-flow.html
+++ b/api/simplified-run-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/stream-logs.html b/api/stream-logs.html
index 744499e780..a425d8dac8 100644
--- a/api/stream-logs.html
+++ b/api/stream-logs.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-flow.html b/api/update-flow.html
index c46df11267..3275df447d 100644
--- a/api/update-flow.html
+++ b/api/update-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-folder-redirect.html b/api/update-folder-redirect.html
index c7ac3c2819..6893836b62 100644
--- a/api/update-folder-redirect.html
+++ b/api/update-folder-redirect.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-message.html b/api/update-message.html
index 9cd6feadb7..437a9ca5fd 100644
--- a/api/update-message.html
+++ b/api/update-message.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-project-mcp-settings.html b/api/update-project-mcp-settings.html
index 2cb84b505d..417e3ad1c9 100644
--- a/api/update-project-mcp-settings.html
+++ b/api/update-project-mcp-settings.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-project.html b/api/update-project.html
index 1e88c3d0a3..dccd749c03 100644
--- a/api/update-project.html
+++ b/api/update-project.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-server-endpoint.html b/api/update-server-endpoint.html
index a2573c9aec..0440ff5c7e 100644
--- a/api/update-server-endpoint.html
+++ b/api/update-server-endpoint.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-session-id.html b/api/update-session-id.html
index 733ba43391..a203795f45 100644
--- a/api/update-session-id.html
+++ b/api/update-session-id.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-shared-component.html b/api/update-shared-component.html
index 3f2da35db5..25a218319a 100644
--- a/api/update-shared-component.html
+++ b/api/update-shared-component.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/update-variable.html b/api/update-variable.html
index 0e9bd02115..2898e822d5 100644
--- a/api/update-variable.html
+++ b/api/update-variable.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/upload-file-1.html b/api/upload-file-1.html
index f635220848..c79a38e179 100644
--- a/api/upload-file-1.html
+++ b/api/upload-file-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/upload-file-2.html b/api/upload-file-2.html
index 88d06dbe94..f2c7587f8c 100644
--- a/api/upload-file-2.html
+++ b/api/upload-file-2.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/upload-file-redirect.html b/api/upload-file-redirect.html
index 4b7e1db7b2..9e2d34a15e 100644
--- a/api/upload-file-redirect.html
+++ b/api/upload-file-redirect.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/upload-file.html b/api/upload-file.html
index 3744ef886c..bf28ab2ae6 100644
--- a/api/upload-file.html
+++ b/api/upload-file.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/upload-user-file-1.html b/api/upload-user-file-1.html
index 3978a048e7..8a40092ecf 100644
--- a/api/upload-user-file-1.html
+++ b/api/upload-user-file-1.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/upload-user-file.html b/api/upload-user-file.html
index 1291c8421b..ae7fa10e3a 100644
--- a/api/upload-user-file.html
+++ b/api/upload-user-file.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/api/webhook-run-flow.html b/api/webhook-run-flow.html
index 872e2f0f0e..9167264199 100644
--- a/api/webhook-run-flow.html
+++ b/api/webhook-run-flow.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/assets/css/styles.79069821.css b/assets/css/styles.79069821.css
new file mode 100644
index 0000000000..6067fbfe0b
--- /dev/null
+++ b/assets/css/styles.79069821.css
@@ -0,0 +1 @@
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}*,.ch-code-line-number,.ch-terminal{box-sizing:border-box}#hero,#hero-apply{background-image:linear-gradient(var(--ifm-footer-background-color),var(--ifm-navbar-background-color))}.gif_player img,.markdown img,img{max-width:100%}.markdown table,table{border-collapse:collapse}.markdown li,.markdown table td,body{word-wrap:break-word}.gif_player,.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}:root,html[data-theme=dark]{--openapi-required:var(--openapi-code-red);--openapi-optional:var(--openapi-code-dim)}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm,.theme-doc-sidebar-item-category.menu__list-item:not(:first-child){margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}.markdown table code,.markdown table thead th{background-color:var(--ifm-color-emphasis-100)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom);text-align:start}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_uzNF .wordWrapButtonIcon_b1P5{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.ch-editor-terminal-tab,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.DocSearch-Container a,.dropdown__link--active,.dropdown__link:hover,.footer-links a,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.tag_zVej:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card--full-height{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child),.theme-doc-sidebar-container nav.menu{padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.ch-code-browser,.ch-terminal{font-family:Ubuntu,Droid Sans,-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,sans-serif}.apiItemContainer_gBt2 article>:first-child,.apiItemContainer_gBt2 header+*,.ch-scrollycoding-step-content>:first-child,.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item,.formItem_DtZA:first-child,.showMoreButton_Ry1D:first-child,.showMoreButton_SWLU:first-child{margin-top:0}.admonitionContent_BuS1>:last-child,.ch-scrollycoding-step-content>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items,.footer__title,.tabItem_Ymn6>:last-child,.theme-api-markdown table :last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;left:0;bottom:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.ch-mini-browser,.navbar__logo img,body,html{height:100%}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.ch-terminal-content,.navbar__items--center .navbar__brand{margin:0}.ch-scrollycoding-with-preview .ch-scrollycoding-sticker .ch-codeblock,.ch-scrollycoding-with-preview .ch-scrollycoding-sticker .ch-codegroup,.ch-slideshow-range input,.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.ch-code-inline-link,.ch-code-link :not(span)>span,.ch-section-link,.ch-section-link *,.footer-links a:hover{-webkit-text-decoration:underline;text-decoration:underline}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.floatingButton_tCt1:hover button,.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.ch-codeblock,.ch-codegroup,.ch-preview,.ch-simple-frame{box-shadow:0 13px 27px -5px #32325d40,0 8px 16px -8px #0000004d,0 -6px 16px -6px rgba(0,0,0,.025)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;overflow-x:auto;padding-left:0}.ch-no-scroll,.ch-terminal{overflow:hidden}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--ifm-color-primary:#f471b5;--ifm-background-color:var(--ifm-color-black);--ifm-background-surface-color:var(--ifm-color-black);--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497;--openapi-code-dim:var(--openapi-code-dim-dark);--openapi-code-red:var(--openapi-code-red-dark);--openapi-code-orange:var(--openapi-code-orange-dark);--openapi-code-green:var(--openapi-code-green-dark);--openapi-code-blue:var(--openapi-code-blue-dark);--openapi-code-purple:var(--openapi-code-purple-dark);--openapi-monaco-background-color:var(--openapi-monaco-background-color-dark);--openapi-monaco-border-color:#606770;--openapi-card-background-color:var(--ifm-card-background-color);--openapi-input-background:#393939;--openapi-input-border:#fff;--openapi-button-dissabled:#525252;--openapi-dropzone-color:#ffffff4d;--openapi-dropzone-hover-shim:#393939cc;--openapi-inverse-color:var(--ifm-color-gray-900)}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.ch-terminal{background:#1e1e1e;color:#fafafa;font-size:14px;height:100%;padding:0 8px 8px}.ch-terminal-container .ch-frame-content{background-color:inherit}.ch-terminal-prompt{color:#8fa2db;-webkit-user-select:none;user-select:none}.ch-terminal-output{opacity:.66}.ch-code-line-number{color:var(--ch-t-editorLineNumber-foreground);display:inline-block;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-right:1.5ch;text-align:right;-webkit-user-select:none;user-select:none}.ch-code-scroll-parent{background-color:unset;border:none;border-radius:0;box-sizing:initial;color:unset;display:block;font-size:14px;font-weight:400;letter-spacing:0;line-height:19px;padding:0}.ch-code-button,.ch-expand-close{background-image:none;font-size:inherit;padding:0;top:10px;-webkit-appearance:button;right:10px;margin:0;cursor:pointer}.ch-code-scroll-parent ::selection{background-color:var(--ch-t-editor-selectionBackground);color:inherit}.ch-code-button{background-color:initial;border:none;color:inherit;height:1.1em;position:absolute;width:1.1em}.ch-code-button:focus-visible{outline-color:currentColor}.ch-code-wrapper{background-color:var(--ch-t-background);box-sizing:initial;color:var(--ch-t-foreground);color-scheme:var(--ch-t-colorScheme);margin:0;padding:0;position:relative;white-space:pre}.DocSearch-Container,.DocSearch-Container *,.ch-editor-tab,.ch-editor-terminal,.ch-frame-button,.ch-scrollycoding-content{box-sizing:border-box}.ch-code-wrapper[data-ch-measured=false]{overflow:auto}.ch-code-wrapper[data-ch-measured=false]>*{opacity:0}.ch-expand-dialog{background-color:initial;border:0;height:100vh;max-width:900px;width:100vw}.ch-expand-dialog::backdrop{background-color:#000c}.ch-expand-close{background-color:initial;border:none;color:#fff;height:26px;position:absolute;width:26px}.ch-expand-close:focus-visible{outline-color:currentColor}.ch-expand-dialog-content{border:1px solid;border-color:var(--ch-t-sideBar-border);border-radius:8px;color:#fff;inset:40px;overflow:hidden;position:absolute}.ch-code-browser{color:var(--ch-t-editor-foreground);display:flex;height:100%}.ch-code-browser-sidebar{background:var(--ch-t-sideBar-background);border-bottom-color:var(--ch-t-sideBar-border);border-left-color:var(--ch-t-sideBar-border);border-right:1px solid;border-right-color:var(--ch-t-sideBar-border);border-top-color:var(--ch-t-sideBar-border);color:var(--ch-t-sideBar-foreground);font-size:.95rem;min-width:100px;padding:1em 0}.ch-code-browser-content{background:var(--ch-t-background);color:var(--ch-t-foreground);color-scheme:var(--ch-t-colorScheme);flex:1;font-family:monospace;font-size:1rem;font-weight:400;letter-spacing:0;line-height:1.2rem;overflow:auto;padding:1em;position:relative;white-space:pre}.ch-editor-frame,.ch-frame,.ch-simple-frame{break-inside:avoid;font-family:Ubuntu,Droid Sans,-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,sans-serif;page-break-inside:avoid;--ch-title-bar-height:30px}.ch-code-browser-content ::selection{background-color:var(--ch-t-editor-selectionBackground);color:inherit}.ch-code-browser-sidebar-file,.ch-code-browser-sidebar-folder{padding:.1em 1em}.ch-code-browser-sidebar-file,.dropdownNavbarItemMobile_J0Sd{cursor:pointer}.ch-code-browser-sidebar-file[data-selected=true]{background:var(--ch-t-list-activeSelectionBackground);color:var(--ch-t-list-activeSelectionForeground)}.ch-code-browser-sidebar-file:hover{background-color:var(--ch-t-list-hoverBackground);color:var(--ch-t-list-hoverForeground)}.ch-code-browser-button{-webkit-appearance:button;background-color:initial;background-image:none;border:none;color:inherit;cursor:pointer;font-size:inherit;height:1.5em;margin:0;min-height:1.5em;min-width:1.5em;padding:0;position:absolute;right:.8em;top:.8em;width:1.5em}.ch-code-browser-button:focus-visible{outline-color:currentColor}.ch-editor-tab{background:var(--ch-t-tab-inactiveBackground);border-bottom:1px solid;border-bottom-color:var(--ch-t-tab-inactiveBackground);border-right:1px solid #252526;border-right-color:var(--ch-t-tab-border);color:var(--ch-t-tab-inactiveForeground);cursor:pointer;display:flex;flex-shrink:1;height:100%;min-width:0;padding-left:15px;padding-right:15px;position:relative;white-space:nowrap}.ch-editor-tab[data-active=true]{background:var(--ch-t-tab-activeBackground);border-bottom-color:var(--ch-t-tab-activeBorder);color:var(--ch-t-tab-activeForeground);min-width:unset}.ch-editor-tab>div{font-size:12px;line-height:1.4em;margin-bottom:auto;margin-top:auto;overflow:hidden;text-overflow:ellipsis}.ch-editor-group-border{background:var(--ch-t-editorGroup-border);height:1px;position:absolute;top:0;width:100%;z-index:1}.ch-editor-frame{display:flex;flex-direction:column;overflow:hidden;position:relative;background:var(--ch-t-editor-background);height:100%}.ch-editor-frame .ch-frame-title-bar{background:none;background:var(--ch-t-editorGroupHeader-tabsBackground);color:var(--ch-t-icon-foreground)}.ch-editor-terminal{background-color:#1e1e1e;border-top:1px solid #80808059;bottom:0;color:#e7e7e7;overflow:hidden;padding:0 8px;position:absolute;width:100%}.ch-editor-terminal-tab{display:flex;font-size:11px;line-height:24px;padding:4px 10px 3px}.ch-editor-terminal-tab>span{border-bottom:1px solid #e7e7e7}.ch-editor-terminal-content{box-sizing:border-box;height:calc(100% - 40px);margin-top:8px}.ch-editor-terminal-content .ch-terminal{font-size:12px;margin:0}.ch-editor-button{-webkit-appearance:button;background-color:initial;background-image:none;border:none;color:inherit;cursor:pointer;font-size:inherit;height:1.5em;margin:0 .8em 0 0;min-height:1.5em;min-width:1.5em;padding:0;width:1.5em}.ch-editor-button:focus-visible{outline-color:currentColor}.ch-frame,.theme-doc-sidebar-menu{display:flex;flex-direction:column;height:100%}.ch-simple-frame{border-radius:6px;overflow:hidden}.ch-frame-content{background-color:var(--ch-content-background,#fafafa);flex-basis:0;flex-grow:1;flex-shrink:1;min-height:0}.ch-frame-zoom{--ch-frame-zoom:1;height:calc(100%/var(--ch-frame-zoom));overflow:auto;position:relative;transform:scale(var(--ch-frame-zoom));transform-origin:left top;width:calc(100%/var(--ch-frame-zoom))}.ch-frame-title-bar{align-items:center;background-color:var(--ch-content-background,#252526);color:#ebebed;display:flex;flex-grow:0;flex-shrink:0;font-size:12px;height:var(--ch-title-bar-height);min-height:var(--ch-title-bar-height);position:relative;width:100%}.ch-frame-middle-bar{font-size:1.2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-frame-left-bar,.ch-frame-right-bar{align-items:center;display:flex;flex-basis:1em;flex-grow:1;height:100%;width:max-content}.ch-frame-buttons{display:flex;flex-shrink:0;height:1em;margin:0 .8em;width:4.16em}.ch-frame-button{border:.08em solid;border-radius:50%;display:inline-block;height:1em;width:1em}.ch-frame-button-space{width:.56em}.ch-frame-button-left{background-color:#ed6b60;border-color:#ce5347}.ch-frame-button-middle{background-color:#f5be4f;border-color:#d6a243}.ch-frame-button-right{background-color:#62c554;border-color:#58a942}.ch-mini-browser .ch-frame-content iframe,.ch-mini-browser .ch-frame-content video{border:none;height:100%;position:absolute;width:100%}.ch-mini-browser .ch-frame-title-bar input{background:var(--ch-t-input-background);border:1px solid var(--ch-t-input-border);border-radius:.5em;box-shadow:none;color:#544;color:var(--ch-t-input-foreground);flex:1;font-size:1em;height:1.4em;min-width:5px;padding:0 10px;width:5px}.buttonGroup_geD8 button.selected_F9cJ,.buttonGroup_geD8 button:hover{background:var(--ifm-menu-color-background-active)}.ch-browser-button{color:#999;margin:0 1em}.ch-browser-back-button{margin-left:.2em}.ch-browser-forward-button{margin-left:0}.ch-browser-open-button{color:var(--ch-t-icon-foreground)}.ch-browser-open-icon,.ch-code-label-annotation:hover .ch-code-label-annotation-text,.tocCollapsibleContent_vkbj a{display:block}.ch-spotlight{display:flex;gap:1.1rem;margin:1rem 0}.ch-spotlight-tabs{align-items:stretch;display:flex;flex:1;flex-flow:column;gap:.5rem}.ch-spotlight-tab{border:1px solid #e3e3e3;border-radius:.25rem;margin:0 -.5rem;padding:0 .5rem}.ch-spotlight-tab:hover{border-color:#222}.ch-scrollycoding-step-content[data-selected],.ch-spotlight-tab[data-selected]{border-color:#0070f3}.ch-spotlight-sticker{align-self:stretch;display:flex;flex-flow:column;justify-content:center;max-height:80vh;min-height:min(100%,80vh);position:sticky;top:10vh;width:420px}.ch-spotlight-sticker .ch-codeblock,.ch-spotlight-sticker .ch-codegroup{flex:1;margin-bottom:0;margin-top:0;max-height:80vh;min-height:min(100%,80vh);min-width:100%;width:100%}.ch-scrollycoding-with-preview .ch-scrollycoding-sticker,.ch-spotlight-with-preview .ch-spotlight-sticker{gap:.5rem;height:80vh}.ch-spotlight-with-preview .ch-spotlight-sticker .ch-codeblock,.ch-spotlight-with-preview .ch-spotlight-sticker .ch-codegroup{flex:1;min-height:0}.ch-scrollycoding-with-preview .ch-scrollycoding-preview,.ch-spotlight-with-preview .ch-spotlight-preview{height:280px}.ch-scrollycoding{display:flex;gap:1rem;margin:1rem 0;position:relative}.ch-scrollycoding-content{flex:1}.ch-scrollycoding-step-content{border:1.5px solid #0000;border-radius:8px;margin:0 -.5rem;padding:1rem .5rem}.ch-scrollycoding-sticker{align-self:start;display:flex;flex-flow:column;justify-content:center;max-height:80vh;position:sticky;top:10vh;width:var(--ch-scrollycoding-sticker-width,420px)}.ch-scrollycoding-sticker .ch-codeblock,.ch-scrollycoding-sticker .ch-codegroup{margin-bottom:0;margin-top:0;max-height:80vh;min-height:var(--ch-scrollycoding-code-min-height,200px);min-width:100%;width:100%}.ch-scrollycoding-static .ch-preview{height:150px}.ch-slideshow{margin:1rem 0}.ch-slideshow-slide{align-items:stretch;aspect-ratio:16/9;display:flex;flex-flow:row;gap:.5rem}.ch-slideshow-slide .ch-codeblock,.ch-slideshow-slide .ch-codegroup{flex:2;height:auto;margin-bottom:0;margin-top:0}.ch-slideshow .ch-slideshow-preview{flex:1;height:auto;min-width:0}.ch-slideshow-range{display:flex;flex-flow:row;gap:.5rem}.ch-slideshow-notes{border:1px solid #e3e3e3;border-radius:.25rem;margin-top:1rem;padding:1rem}.ch-slideshow-note{max-height:140px;min-height:140px;overflow:auto;padding:.05px}.ch-codeblock,.ch-codegroup,.ch-preview{border-radius:6px;height:max-content;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}.ch-codeblock>*,.ch-codegroup>*,.ch-preview>*{height:100%;max-height:inherit;min-height:inherit}.ch-codeblock,.ch-codegroup{margin-bottom:1.25em;margin-top:1.25em}.ch-inline-code>code{background:var(--ch-t-lighter-inlineBackground);border-radius:.25em;color:var(--ch-t-foreground);font-size:.9rem;margin:.1em -.05em;padding:.2em .15em}.ch-inline-code .ch-section-link,.ch-inline-code .ch-section-link *{text-decoration-color:var(--ch-t-foreground)}.ch-section-link,.ch-section-link *{text-decoration-color:initial;text-decoration-style:dotted;text-decoration-thickness:1px}.ch-section-link[data-active=true]{background-color:#bae6fd66}.ch-section-link[data-active=true],.ch-section-link[data-active=true] *{text-decoration-thickness:1.5px}.ch-code-inline-mark{border-radius:.25rem;margin:0 -.15rem;padding:.2rem .15rem .1rem}.ch-code-inline-mark,.ch-code-multiline-mark{background:var(--ch-t-editor-rangeHighlightBackground)}.ch-code-multiline-mark-border{background:var(--ch-t-editor-infoForeground);height:100%;left:0;position:absolute;width:3px}.ch-code-multiline-mark .ch-code-button{display:none;font-size:1.2em;position:absolute;right:10px;top:1px}.ch-code-inline-link,.ch-code-link :not(span)>span{color:inherit;text-decoration-style:dotted}.ch-code-box-annotation{outline:2px solid var(--ch-t-editor-infoForeground)}.ch-code-label-annotation:hover{background:var(--ch-t-editor-lineHighlightBackground)}.ch-code-label-annotation-text{display:none;opacity:.7;padding-right:16px;position:absolute;right:0}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:initial;--ifm-navbar-padding-vertical:0;--ifm-global-radius:16px;--ifm-navbar-item-padding-vertical:0;--ifm-font-family-base:Inter,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI emoji";--ifm-font-family-monospace:"SFMono-Regular","Roboto Mono",Consolas,"Liberation Mono",Menlo,Courier,monospace;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}html[data-theme=light]{--ifm-color-primary:#db2979;--ifm-background-color:var(--ifm-color-white);--ifm-background-surface-color:var(--ifm-color-white)}.navbar{border-bottom:1px solid var(--ifm-toc-border-color);box-shadow:none!important}.docusaurus-highlight-code-line{background-color:#0000001a;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.diagonal-box{transform:skewY(-6deg)}.diagonal-content{transform:skewY(6deg)}[class^=announcementBar]{z-index:10}.showcase{background-color:#fff}.showcase-border{border-color:#f3f4f6}.text-description{color:#6b7280}.tabs-container{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);padding:1rem}.tabs,.tabs-container{margin-bottom:1rem}.tabs__item{border:none;border-bottom:1px solid var(--ifm-color-emphasis-200);border-radius:0;margin-right:0;padding-bottom:.5rem}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active)}#hero-apply{z-index:-1}.apply-form{background-image:linear-gradient(#fff,#f5f5fa);max-width:600px}.apply-text{color:#36395a}.hero-title{color:#1c1e21;font-family:var(--ifm-heading-font-family)}h1{font-size:30px}h2{font-size:25px}h3{font-size:22px}body{margin:0;font-size:16px}.docsearch-logo{color:#21243d}.footer-links a,.footer__copyright{color:var(--ifm-toc-link-color)}.apply-button:hover{color:#fff}.header-discord-link:hover,.header-github-link:hover,.header-twitter-link:hover{opacity:.6}.header-github-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNvbG9yPSIjMDAwIiBzdHlsZT0idXNlci1zZWxlY3Q6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6IzAwMDtmbGV4LXNocmluazowIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAuM2ExMiAxMiAwIDAgMC0zLjggMjMuNGMuNi4xLjgtLjMuOC0uNnYtMmMtMy4zLjctNC0xLjYtNC0xLjYtLjYtMS40LTEuNC0xLjgtMS40LTEuOC0xLS43LjEtLjcuMS0uNyAxLjIgMCAxLjkgMS4yIDEuOSAxLjIgMSAxLjggMi44IDEuMyAzLjUgMSAwLS44LjQtMS4zLjctMS42LTIuNy0uMy01LjUtMS4zLTUuNS02IDAtMS4yLjUtMi4zIDEuMy0zLjEtLjItLjQtLjYtMS42IDAtMy4yIDAgMCAxLS4zIDMuNCAxLjJhMTEuNSAxMS41IDAgMCAxIDYgMGMyLjMtMS41IDMuMy0xLjIgMy4zLTEuMi42IDEuNi4yIDIuOCAwIDMuMi45LjggMS4zIDEuOSAxLjMgMy4yIDAgNC42LTIuOCA1LjYtNS41IDUuOS41LjQuOSAxIC45IDIuMnYzLjNjMCAuMy4xLjcuOC42QTEyIDEyIDAgMCAwIDEyIC4zIi8+PC9zdmc+) no-repeat;content:"";display:flex;height:24px;width:24px}[data-theme=dark] .header-github-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNvbG9yPSIjMDAwIiBzdHlsZT0idXNlci1zZWxlY3Q6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6I2ZmZjtmbGV4LXNocmluazowIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAuM2ExMiAxMiAwIDAgMC0zLjggMjMuNGMuNi4xLjgtLjMuOC0uNnYtMmMtMy4zLjctNC0xLjYtNC0xLjYtLjYtMS40LTEuNC0xLjgtMS40LTEuOC0xLS43LjEtLjcuMS0uNyAxLjIgMCAxLjkgMS4yIDEuOSAxLjIgMSAxLjggMi44IDEuMyAzLjUgMSAwLS44LjQtMS4zLjctMS42LTIuNy0uMy01LjUtMS4zLTUuNS02IDAtMS4yLjUtMi4zIDEuMy0zLjEtLjItLjQtLjYtMS42IDAtMy4yIDAgMCAxLS4zIDMuNCAxLjJhMTEuNSAxMS41IDAgMCAxIDYgMGMyLjMtMS41IDMuMy0xLjIgMy4zLTEuMi42IDEuNi4yIDIuOCAwIDMuMi45LjggMS4zIDEuOSAxLjMgMy4yIDAgNC42LTIuOCA1LjYtNS41IDUuOS41LjQuOSAxIC45IDIuMnYzLjNjMCAuMy4xLjcuOC42QTEyIDEyIDAgMCAwIDEyIC4zIi8+PC9zdmc+) no-repeat;content:"";display:flex;height:24px;width:24px}.header-twitter-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwLjI1MSI+PHBhdGggZD0iTTE3OC41NyAxMjcuMTUgMjkwLjI3IDBoLTI2LjQ2bC05Ny4wMyAxMTAuMzhMODkuMzQgMEgwbDExNy4xMyAxNjYuOTNMMCAzMDAuMjVoMjYuNDZsMTAyLjQtMTE2LjU5IDgxLjggMTE2LjU5SDMwME0zNi4wMSAxOS41NGg0MC42NWwxODcuMTMgMjYyLjEzaC00MC42NiIvPjwvc3ZnPg==) 0 0/contain;content:"";display:flex;height:24px;width:24px}[data-theme=dark] .header-twitter-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwLjI1MSIgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTE3OC41NyAxMjcuMTUgMjkwLjI3IDBoLTI2LjQ2bC05Ny4wMyAxMTAuMzhMODkuMzQgMEgwbDExNy4xMyAxNjYuOTNMMCAzMDAuMjVoMjYuNDZsMTAyLjQtMTE2LjU5IDgxLjggMTE2LjU5SDMwME0zNi4wMSAxOS41NGg0MC42NWwxODcuMTMgMjYyLjEzaC00MC42NiIvPjwvc3ZnPg==) 0 0/contain;content:"";display:flex;height:24px;width:24px}.header-discord-link{margin-right:.5rem}[data-theme=dark] .header-discord-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIiBmaWxsPSIjZmZmIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgdmlld0JveD0iMCAtMjguNSAyNTYgMjU2Ij48cGF0aCBkPSJNMjE2Ljg1NiAxNi41OTdBMjA4LjUgMjA4LjUgMCAwIDAgMTY0LjA0MiAwYy0yLjI3NSA0LjExMy00LjkzMyA5LjY0NS02Ljc2NiAxNC4wNDZxLTI5LjUzOC00LjQ0Mi01OC41MzMgMGMtMS44MzItNC40LTQuNTUtOS45MzMtNi44NDYtMTQuMDQ2YTIwNy44IDIwNy44IDAgMCAwLTUyLjg1NSAxNi42MzhDNS42MTggNjcuMTQ3LTMuNDQzIDExNi40IDEuMDg3IDE2NC45NTZjMjIuMTY5IDE2LjU1NSA0My42NTMgMjYuNjEyIDY0Ljc3NSAzMy4xOTNBMTYxIDE2MSAwIDAgMCA3OS43MzUgMTc1LjNhMTM2LjQgMTM2LjQgMCAwIDEtMjEuODQ2LTEwLjYzMiAxMDkgMTA5IDAgMCAwIDUuMzU2LTQuMjM3YzQyLjEyMiAxOS43MDIgODcuODkgMTkuNzAyIDEyOS41MSAwYTEzMiAxMzIgMCAwIDAgNS4zNTUgNC4yMzcgMTM2IDEzNiAwIDAgMS0yMS44ODYgMTAuNjUzYzQuMDA2IDguMDIgOC42MzggMTUuNjcgMTMuODczIDIyLjg0OCAyMS4xNDItNi41OCA0Mi42NDYtMTYuNjM3IDY0LjgxNS0zMy4yMTMgNS4zMTYtNTYuMjg4LTkuMDgtMTA1LjA5LTM4LjA1Ni0xNDguMzZNODUuNDc0IDEzNS4wOTVjLTEyLjY0NSAwLTIzLjAxNS0xMS44MDUtMjMuMDE1LTI2LjE4czEwLjE0OS0yNi4yIDIzLjAxNS0yNi4yIDIzLjIzNiAxMS44MDQgMjMuMDE1IDI2LjJjLjAyIDE0LjM3NS0xMC4xNDggMjYuMTgtMjMuMDE1IDI2LjE4bTg1LjA1MSAwYy0xMi42NDUgMC0yMy4wMTQtMTEuODA1LTIzLjAxNC0yNi4xOHMxMC4xNDgtMjYuMiAyMy4wMTQtMjYuMmMxMi44NjcgMCAyMy4yMzYgMTEuODA0IDIzLjAxNSAyNi4yIDAgMTQuMzc1LTEwLjE0OCAyNi4xOC0yMy4wMTUgMjYuMTgiLz48L3N2Zz4=) 0 0/contain;content:"";display:flex;height:24px;width:24px}.header-discord-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIiBmaWxsPSIjZmZmIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgdmlld0JveD0iMCAtMjguNSAyNTYgMjU2Ij48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMjE2Ljg1NiAxNi41OTdBMjA4LjUgMjA4LjUgMCAwIDAgMTY0LjA0MiAwYy0yLjI3NSA0LjExMy00LjkzMyA5LjY0NS02Ljc2NiAxNC4wNDZxLTI5LjUzOC00LjQ0Mi01OC41MzMgMGMtMS44MzItNC40LTQuNTUtOS45MzMtNi44NDYtMTQuMDQ2YTIwNy44IDIwNy44IDAgMCAwLTUyLjg1NSAxNi42MzhDNS42MTggNjcuMTQ3LTMuNDQzIDExNi40IDEuMDg3IDE2NC45NTZjMjIuMTY5IDE2LjU1NSA0My42NTMgMjYuNjEyIDY0Ljc3NSAzMy4xOTNBMTYxIDE2MSAwIDAgMCA3OS43MzUgMTc1LjNhMTM2LjQgMTM2LjQgMCAwIDEtMjEuODQ2LTEwLjYzMiAxMDkgMTA5IDAgMCAwIDUuMzU2LTQuMjM3YzQyLjEyMiAxOS43MDIgODcuODkgMTkuNzAyIDEyOS41MSAwYTEzMiAxMzIgMCAwIDAgNS4zNTUgNC4yMzcgMTM2IDEzNiAwIDAgMS0yMS44ODYgMTAuNjUzYzQuMDA2IDguMDIgOC42MzggMTUuNjcgMTMuODczIDIyLjg0OCAyMS4xNDItNi41OCA0Mi42NDYtMTYuNjM3IDY0LjgxNS0zMy4yMTMgNS4zMTYtNTYuMjg4LTkuMDgtMTA1LjA5LTM4LjA1Ni0xNDguMzZNODUuNDc0IDEzNS4wOTVjLTEyLjY0NSAwLTIzLjAxNS0xMS44MDUtMjMuMDE1LTI2LjE4czEwLjE0OS0yNi4yIDIzLjAxNS0yNi4yIDIzLjIzNiAxMS44MDQgMjMuMDE1IDI2LjJjLjAyIDE0LjM3NS0xMC4xNDggMjYuMTgtMjMuMDE1IDI2LjE4bTg1LjA1MSAwYy0xMi42NDUgMC0yMy4wMTQtMTEuODA1LTIzLjAxNC0yNi4xOHMxMC4xNDgtMjYuMiAyMy4wMTQtMjYuMmMxMi44NjcgMCAyMy4yMzYgMTEuODA0IDIzLjAxNSAyNi4yIDAgMTQuMzc1LTEwLjE0OCAyNi4xOC0yMy4wMTUgMjYuMTgiLz48L3N2Zz4=) 0 0/contain;content:"";display:flex;height:24px;width:24px}.footer,[data-theme=dark] .sidebar-ad{background-color:var(--ifm-background-color)}.image-rendering-crisp{image-rendering:crisp-edges;image-rendering:-webkit-optimize-contrast}.image-rendering-pixel{image-rendering:pixelated}.img-center{display:flex;justify-content:center;width:100%}.markdown img{display:block;height:auto;margin:1rem auto;max-height:600px;object-fit:contain}.markdown img:not(.resized-image){max-width:600px;width:auto}.resized-image{max-height:500px;width:300px}.ch-scrollycoding-content{max-width:55%!important;min-width:40%!important}.ch-scrollycoding-sticker{max-width:60%!important;min-width:45%!important}.ch-scrollycoding-step-content{min-height:70px}.theme-doc-sidebar-item-category.theme-doc-sidebar-item-category-level-2.menu__list-item:not(:first-child){margin-top:.15rem!important}.footer{border-top:1px solid var(--ifm-color-emphasis-200);padding:1rem 0 0}.sidebar-ad,[data-theme=light] .footer{border-top:1px solid var(--ifm-color-emphasis-300)}.footer-content{align-items:center;display:flex;font-size:12px;justify-content:space-between;margin:0 auto;max-width:var(--ifm-container-width);padding:0 var(--ifm-navbar-padding-horizontal)}.footer-links{display:flex;font-size:13px;gap:.5rem}.footer .container{align-items:center;display:flex;flex-direction:row-reverse;justify-content:left;max-width:100%;padding:0 1.25rem}.sidebar-ad{border-radius:0;bottom:0;margin-left:-.5rem;margin-right:-.5rem;margin-top:auto;position:sticky}[data-theme=light] .sidebar-ad{background-color:var(--ifm-color-white)}.sidebar-ad a{align-items:center;display:flex;gap:1rem;justify-content:center;padding-bottom:.75rem;padding-top:.75rem}.sidebar-ad-text-container{display:flex;flex-direction:column;gap:.5rem}.sidebar-ad-text{font-family:Sora,serif;font-size:.875rem}.buttonGroup_geD8,.markdown table code{font-family:var(--ifm-font-family-monospace)}.sidebar-ad-text-gradient{-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(to right,#a855f7,var(--ifm-color-primary));color:#0000}.DocSearch-Button,.DocSearch-Search-Icon{color:var(--ifm-color-emphasis-500)!important}.markdown details{background:var(--ifm-background-color);border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);margin-bottom:1rem;width:100%}.markdown details summary{align-items:center;cursor:pointer;display:flex;gap:.5em;list-style:none;outline:0}.markdown details summary:focus-visible{outline:2px solid var(--ifm-color-primary,#a855f7);outline-offset:2px}.markdown details [class^=collapsibleContent]{border-top:none!important;padding:0}.DocSearch-Button{background:var(--ifm-color-content-inverse)!important;border:1px solid var(--ifm-color-emphasis-300)!important;border-radius:6px!important}.DocSearch-Button:focus,.DocSearch-Button:hover{border-color:var(--ifm-color-primary)!important;box-shadow:0 0 0 1px var(--ifm-color-primary)!important}.DocSearch-Search-Icon{size:16px!important;stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.markdown table{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);border-radius:var(--ifm-global-radius);font-size:1rem;margin:1.5rem 0;overflow:scroll;scrollbar-width:none;table-layout:fixed;width:100%}.markdown table thead th{border-bottom:var(--ifm-table-border-width) solid var(--ifm-table-border-color);border-left:none;border-top:none;font-weight:600;padding:.5rem;text-align:left}.markdown table td:last-child,.markdown table thead th:last-child,.markdown table thead tr{border:none}.markdown table td{border-left:none;border-right:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:.6rem;vertical-align:top;overflow-wrap:break-word}.markdown table td,.markdown table th{width:20%}.markdown table td:last-child,.markdown table th:last-child{width:auto}.markdown table tbody tr{height:auto;min-height:2.2rem}.markdown table tbody tr:last-child td{border-bottom:none}.markdown table code{border-radius:4px;padding:.1rem .3rem}.notion-column{display:flex;flex-direction:column;padding-bottom:12px;padding-top:12px}.notion-column>:first-child{margin-left:0;margin-right:0;margin-top:0}.notion-column>:last-child{margin-bottom:0;margin-left:0;margin-right:0}.notion-row{display:flex;max-width:100%;overflow:hidden;width:100%}.notion-spacer{width:calc(min(32px,4vw))}.notion-spacer:last-child,.optionsPanel_c56F:empty,.optionsPanel_kER9:empty{display:none}.gif_player{display:inline-block;position:relative;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.buttonGroup_geD8 button,.showMoreButton_Ry1D{cursor:pointer;-webkit-user-select:none;white-space:nowrap}.gif_player .play_button{background-color:#00000080;border:2px dashed #fff;border-radius:50%;box-shadow:0 0 0 3px #00000080;color:#fff;cursor:pointer;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:24px;left:50%;opacity:1;padding:14px 10px;position:absolute;top:50%;transform:translate(-50%,-50%) scale(1) rotate(0);transition:transform .4s,opacity .4s}.gif_player .play_button:hover{background-color:#000000b3;box-shadow:0 0 0 3px #000000b3}.gif_player .play_button:after{content:"GIF"}.gif_player.playing .play_button{opacity:.5;transform:translate(-50%,-50%) scale(0) rotate(180deg)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.floatingButton_tCt1{position:relative}.floatingButton_tCt1 button{background:#191a1be6;border:none;border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);cursor:pointer;opacity:0;outline:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out,visibility .2s ease-in-out,bottom .2s ease-in-out;visibility:hidden}.buttonGroup_geD8{background:var(--openapi-card-background-color);border-radius:var(--openapi-card-border-radius) var(--openapi-card-border-radius) 2px 2px;color:var(--ifm-pre-color);display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:1px;margin-top:0}.buttonGroup_geD8 button{appearance:none;background:#0000;border:0 solid #0000;color:var(--ifm-menu-color);font-size:13.3333px;font-weight:var(--ifm-font-weight-semibold);line-height:var(--ifm-pre-line-height);padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition:color var(--ifm-button-transition-duration) cubic-bezier(.08,.52,.52,1),background var(--ifm-button-transition-duration) cubic-bezier(.08,.52,.52,1),border-color var(--ifm-button-transition-duration) cubic-bezier(.08,.52,.52,1);user-select:none;--margin:0.25rem;border-radius:calc(var(--margin));display:block;margin:var(--margin);margin-right:0}.buttonGroup_geD8 button:last-child{margin-right:.25rem}.buttonDelete_vG3A:focus,.buttonGroup_geD8 button:focus,.buttonThin_a10m:focus,.showMoreButton_Ry1D:focus,.showMoreButton_SWLU:focus,body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.buttonGroup_geD8 button.selected_F9cJ{color:var(--ifm-menu-color-active)}.selectInput_vS5v,html[data-theme=dark] .selectInput_vS5v{background-position:right var(--ifm-pre-padding) top 50%;background-repeat:no-repeat;background-size:initial;appearance:none}.formItem_DtZA{margin-top:var(--ifm-pre-padding)}.inputBase_mKhX,.inputBase_qv87,.inputBase_yXPZ,html[data-theme=dark] .selectInput_vS5v{background-color:var(--openapi-input-background);margin-top:calc(var(--ifm-pre-padding)/2);color:var(--ifm-pre-color);font-size:var(--ifm-code-font-size);width:100%;outline:0}.inputBase_qv87{padding:12px 48px 12px var(--ifm-pre-padding)}.inputBase_qv87,html[data-theme=dark] .selectInput_vS5v{border:none;border-radius:4px}html[data-theme=dark] .selectInput_vS5v{background-image:url('data:image/svg+xml;charset=US-ASCII,')}html[data-theme=light] .input_ygXe,html[data-theme=light] .selectInput_vS5v,html[data-theme=light] .selectInput_ya64{border-color:var(--ifm-color-primary-lightest);border-style:solid;border-width:1px}.selectInput_vS5v{background-image:url('data:image/svg+xml;charset=US-ASCII,')}.buttonDelete_vG3A:active,.input_TTw5:focus,.input_ygXe:focus,.selectInput_vS5v:focus{box-shadow:inset 0 0 0 2px var(--openapi-input-border)}.inputBase_mKhX,.inputBase_yXPZ{border:none;border-radius:4px;padding:12px var(--ifm-pre-padding)}.optionsPanel_c56F,.optionsPanel_kER9{background:var(--openapi-card-background-color);border-radius:var(--openapi-card-border-radius);color:var(--ifm-pre-color);line-height:var(--ifm-pre-line-height);margin-bottom:var(--ifm-spacing-vertical);margin-top:0;overflow:auto;padding:var(--ifm-pre-padding);position:relative}.dropzone_dwtv{border:2px dashed var(--openapi-monaco-border-color)}.dropzoneHover_X65A,.dropzone_dwtv{align-items:center;background-color:var(--openapi-input-background);border-radius:4px;cursor:pointer;display:inline-flex;font-size:var(--ifm-code-font-size);justify-content:center;padding:var(--ifm-pre-padding);width:100%}.dropzoneHover_X65A,.dropzone_dwtv:hover{background:linear-gradient(var(--openapi-dropzone-hover-shim),var(--openapi-dropzone-hover-shim)),linear-gradient(var(--ifm-color-primary),var(--ifm-color-primary));border:2px dashed var(--ifm-color-primary)}.dropzoneContent_QObU{align-items:center;color:var(--openapi-dropzone-color);display:flex;flex-wrap:wrap;justify-content:center;margin:var(--ifm-pre-padding) 0}.dropzone_dwtv:hover .dropzoneContent_QObU,.inputBase_pxKA{color:var(--ifm-pre-color)}.dropzoneHover_X65A .dropzoneContent_QObU{align-items:center;color:var(--ifm-pre-color);display:flex;flex-wrap:wrap;justify-content:center;margin:var(--ifm-pre-padding) 0}.filename_zGyv{flex:1;margin:0 calc(var(--ifm-pre-padding)*1.5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inputBase_pxKA,.monacoBase_T17Z{margin-top:calc(var(--ifm-pre-padding)/2)}.monacoBase_T17Z{background-color:var(--openapi-monaco-background-color);border-radius:4px;padding:var(--ifm-pre-padding)}.monaco_Jeel{border:2px solid #0000;box-shadow:0 0 0 1px var(--openapi-monaco-border-color)}.monacoFocus_W372,.selectInput_ya64:focus{border:2px solid var(--openapi-input-border)}.inputBase_pxKA{background-color:var(--openapi-input-background);border:2px solid #0000;border-radius:4px;font-size:var(--ifm-code-font-size);outline:0;padding:12px var(--ifm-pre-padding);width:100%}.selectInput_ya64{appearance:none}.selectInput_ya64 option{border-radius:.25rem;color:var(--ifm-menu-color);margin:.25rem 0;padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.plus_XYuX{display:inline-block;margin-right:6px;transform:rotate(0);transform-origin:center;transition:transform .2s}.plusExpanded_wYkc{transform:rotate(45deg)}.showMoreButton_Ry1D{appearance:none;background-color:initial;border:0 solid #0000;color:var(--ifm-color-primary);display:block;font-size:var(--ifm-code-font-size);margin-bottom:0;margin-top:var(--ifm-pre-padding);padding:0;text-align:left;user-select:none;width:100%}.buttonDelete_vG3A,.buttonThin_a10m{cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:400;line-height:1.5;margin-top:calc(var(--ifm-pre-padding)/2);transition-duration:.1s,.1s,.1s,var(--ifm-button-transition-duration);transition-property:color,background,border-color,box-shadow;transition-timing-function:cubic-bezier(.08,.52,.52,1);-webkit-user-select:none}.showMoreButton_Ry1D:hover,.showMoreButton_SWLU:hover{color:var(--ifm-color-primary-hover)}.buttonDelete_vG3A{align-items:center;appearance:none;background-color:var(--openapi-input-background);border:none;border-radius:4px;color:var(--ifm-pre-color);display:flex;justify-content:center;margin-left:4px;outline:0;padding:0 12px;user-select:none;white-space:nowrap}.buttonThin_a10m,.showMoreButton_SWLU{background-color:initial;appearance:none;white-space:nowrap}.buttonThin_a10m{border:1px solid var(--openapi-input-border);border-radius:var(--ifm-pre-border-radius);color:var(--openapi-input-border);display:block;margin-bottom:var(--ifm-pre-padding);padding:3px 60px 3px 12px;user-select:none}.DocSearch-Button,.showMoreButton_SWLU{-webkit-user-select:none;cursor:pointer}.buttonThin_a10m:hover{background-color:var(--openapi-input-border);color:var(--openapi-inverse-color)}.buttonThin_a10m:active{box-shadow:inset 0 0 0 1px var(--openapi-input-border),inset 0 0 0 2px var(--openapi-inverse-color)}.showOptions_Ln5O{margin-top:var(--ifm-pre-padding);visibility:visible}.hideOptions_Eruu{display:none;visibility:hidden}.showMoreButton_SWLU{border:0 solid #0000;color:var(--ifm-color-primary);display:block;font-size:var(--ifm-code-font-size);margin-bottom:0;margin-top:var(--ifm-pre-padding);padding:0;text-align:left;user-select:none}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;color:var(--docsearch-muted-color);display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;transition-duration:.1s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Hit[aria-selected=true] mark,.DocSearch-Prefill:focus,.DocSearch-Prefill:hover,.content_knG7 a{-webkit-text-decoration:underline;text-decoration:underline}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards a;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a,.api-wrapper{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative;scroll-margin-top:40px}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,.toggleIcon_g3eP,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Container,.skipToContent_fXgn{z-index:calc(var(--ifm-z-index-fixed) + 1)}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@keyframes a{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}[data-theme-choice=dark] .darkToggleIcon_wfgR,[data-theme-choice=light] .lightToggleIcon_pyhR,[data-theme-choice=system] .systemToggleIcon_QzmC,[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.iconExternalLink_nPIU{margin-left:.3rem}.apiMainContainer_L2xG,.apiPage_KQrU,.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.navbar__items--right>:last-child{padding-right:0}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.buttonGroup_M5ko button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_Vdqa{opacity:1!important}.copyButtonIcons_IEyt{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_TrPX,.copyButtonSuccessIcon_cVMy{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_cVMy{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_Vdqa .copyButtonIcon_TrPX{opacity:0;transform:scale(.33)}.copyButtonCopied_Vdqa .copyButtonSuccessIcon_cVMy{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_b1P5{height:1.2rem;width:1.2rem}.buttonGroup_M5ko{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_M5ko button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_M5ko button:focus-visible,.buttonGroup_M5ko button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_M5ko button{opacity:.4}.codeBlockContent_QJqH{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_OeMC{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_OeMC+.codeBlockContent_QJqH .codeBlock_a8dz{border-top-left-radius:0;border-top-right-radius:0}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.algoliaLogo_rT1R{max-width:150px}.algoliaLogoPathFill_WdUC{fill:var(--ifm-font-color-base)}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{color:var(--ifm-color-content-secondary);font-size:.8rem;--ifm-breadcrumb-separator-size-multiplier:1}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{animation:1s linear infinite b;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes b{to{transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}:root{--docusaurus-announcement-bar-height:auto;--openapi-code-dim-dark:#7f7f7f;--openapi-code-red-dark:#fc929e;--openapi-code-orange-dark:#f8b886;--openapi-code-green-dark:#85d996;--openapi-code-blue-dark:#a4cdfe;--openapi-code-purple-dark:#d9a0f9;--openapi-monaco-background-color-dark:#18191a;--openapi-code-dim-light:#aaa;--openapi-code-red-light:#f44336;--openapi-code-orange-light:var(--ifm-code-color);--openapi-code-green-light:#388e3c;--openapi-code-blue-light:#1976d2;--openapi-code-purple-light:#ab47bc;--openapi-monaco-background-color-light:#fff;--openapi-code-dim:var(--openapi-code-dim-light);--openapi-code-red:var(--openapi-code-red-light);--openapi-code-orange:var(--openapi-code-orange-light);--openapi-code-green:var(--openapi-code-green-light);--openapi-code-blue:var(--openapi-code-blue-light);--openapi-code-purple:var(--openapi-code-purple-light);--openapi-monaco-background-color:var(--openapi-monaco-background-color-light);--openapi-monaco-border-color:#dadde1;--api-sidebar-width:300px;--api-sidebar-hidden-width:30px;--openapi-card-background-color:#f6f8fa;--openapi-card-border-radius:var(--ifm-pre-border-radius);--openapi-input-background:var(--ifm-code-background);--openapi-input-border:var(--ifm-color-primary);--openapi-button-dissabled:#c6c6c6;--openapi-dropzone-color:#00000080;--openapi-dropzone-hover-shim:#ebedf0cc;--openapi-inverse-color:var(--ifm-color-gray-100)}.apiSidebarContainer_Korj{display:none}.menu__list-item--deprecated>:not(.menu__link--active){opacity:.3;-webkit-text-decoration:line-through;text-decoration:line-through}.button.disabled,.button:disabled,.button[disabled]{opacity:.35}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}.lastUpdated_JAkA{text-align:right}.tocMobile_EiPU,.tocMobile_ITEo{display:none}.docItemCol_VOVn,.docItemCol_t_cT{max-width:75%!important}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,.expandSidebarButtonIcon_Z2po,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}.collapsedApiSidebar_Ic1j,.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.apiSidebarContainer_Korj,.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;will-change:width}[dir=rtl] .expandButtonIcon_i1dp,html[dir=rtl] .expandSidebarButtonIcon_Z2po{transform:rotate(180deg)}.docSidebarContainer_YfHR{width:var(--doc-sidebar-width)}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.apiMainContainer_L2xG{flex-grow:1;max-width:calc(100% - var(--api-sidebar-width))}.apiMainContainerEnhanced_KekW{max-width:calc(100% - var(--api-sidebar-hidden-width))}.apiSidebarContainer_Korj{width:var(--api-sidebar-width)}.apiSidebarContainerHidden_KLHn{cursor:pointer;width:var(--api-sidebar-hidden-width)}.collapsedApiSidebar_Ic1j{align-items:center;display:flex;justify-content:center;transition:background-color var(--ifm-transition-fast) ease}.collapsedApiSidebar_Ic1j:focus,.collapsedApiSidebar_Ic1j:hover{background-color:var(--ifm-color-emphasis-200)}html[data-theme=dark] .collapsedApiSidebar_Ic1j:focus,html[data-theme=dark] .collapsedApiSidebar_Ic1j:hover{background-color:var(--collapse-button-bg-color-dark)}.apiItemWrapperEnhanced_aX4w{max-width:calc(var(--ifm-container-width) + var(--api-sidebar-width))!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.docItemContainer_F8PC{padding:0 .3rem}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media (max-width:768px){.markdown img:not(.resized-image){max-height:500px;max-width:100%}.resized-image{max-height:400px;max-width:300px;width:100%}.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:767px){.mendable-search{width:200px}}@media (max-width:640px){.notion-row{flex-direction:column}.notion-row .notion-column{width:100%!important}.notion-row .notion-spacer{display:none}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (max-width:500px){.mendable-search{width:150px}}@media (max-width:380px){.mendable-search{width:140px}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media (prefers-reduced-motion){.DocSearch-Button-Key{transition:none}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}}
\ No newline at end of file
diff --git a/assets/css/styles.9488e50d.css b/assets/css/styles.9488e50d.css
deleted file mode 100644
index 5b314fe303..0000000000
--- a/assets/css/styles.9488e50d.css
+++ /dev/null
@@ -1 +0,0 @@
-.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}*,.ch-code-line-number,.ch-terminal{box-sizing:border-box}#hero,#hero-apply{background-image:linear-gradient(var(--ifm-footer-background-color),var(--ifm-navbar-background-color))}.markdown li,body{word-wrap:break-word}.gif_player img,.markdown img,img{max-width:100%}.gif_player,.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}:root,html[data-theme=dark]{--openapi-required:var(--openapi-code-red);--openapi-optional:var(--openapi-code-dim)}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm,.theme-doc-sidebar-item-category.menu__list-item:not(:first-child){margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom);text-align:start}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_uzNF .wordWrapButtonIcon_b1P5{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.ch-editor-terminal-tab,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.DocSearch-Container a,.dropdown__link--active,.dropdown__link:hover,.footer-links a,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.tag_zVej:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card--full-height{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child),.theme-doc-sidebar-container nav.menu{padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.ch-code-browser,.ch-terminal{font-family:Ubuntu,Droid Sans,-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,sans-serif}.apiItemContainer_gBt2 article>:first-child,.apiItemContainer_gBt2 header+*,.ch-scrollycoding-step-content>:first-child,.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item,.formItem_DtZA:first-child,.showMoreButton_Ry1D:first-child,.showMoreButton_SWLU:first-child{margin-top:0}.admonitionContent_BuS1>:last-child,.ch-scrollycoding-step-content>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items,.footer__title,.tabItem_Ymn6>:last-child,.theme-api-markdown table :last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;left:0;bottom:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.ch-mini-browser,.navbar__logo img,body,html{height:100%}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.ch-terminal-content,.navbar__items--center .navbar__brand{margin:0}.ch-scrollycoding-with-preview .ch-scrollycoding-sticker .ch-codeblock,.ch-scrollycoding-with-preview .ch-scrollycoding-sticker .ch-codegroup,.ch-slideshow-range input,.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.ch-code-inline-link,.ch-code-link :not(span)>span,.ch-section-link,.ch-section-link *,.footer-links a:hover{-webkit-text-decoration:underline;text-decoration:underline}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.floatingButton_tCt1:hover button,.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.ch-codeblock,.ch-codegroup,.ch-preview,.ch-simple-frame{box-shadow:0 13px 27px -5px #32325d40,0 8px 16px -8px #0000004d,0 -6px 16px -6px rgba(0,0,0,.025)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;overflow-x:auto;padding-left:0}.ch-no-scroll,.ch-terminal{overflow:hidden}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--ifm-color-primary:#f471b5;--ifm-background-color:var(--ifm-color-black);--ifm-background-surface-color:var(--ifm-color-black);--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497;--openapi-code-dim:var(--openapi-code-dim-dark);--openapi-code-red:var(--openapi-code-red-dark);--openapi-code-orange:var(--openapi-code-orange-dark);--openapi-code-green:var(--openapi-code-green-dark);--openapi-code-blue:var(--openapi-code-blue-dark);--openapi-code-purple:var(--openapi-code-purple-dark);--openapi-monaco-background-color:var(--openapi-monaco-background-color-dark);--openapi-monaco-border-color:#606770;--openapi-card-background-color:var(--ifm-card-background-color);--openapi-input-background:#393939;--openapi-input-border:#fff;--openapi-button-dissabled:#525252;--openapi-dropzone-color:#ffffff4d;--openapi-dropzone-hover-shim:#393939cc;--openapi-inverse-color:var(--ifm-color-gray-900)}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.ch-terminal{background:#1e1e1e;color:#fafafa;font-size:14px;height:100%;padding:0 8px 8px}.ch-terminal-container .ch-frame-content{background-color:inherit}.ch-terminal-prompt{color:#8fa2db;-webkit-user-select:none;user-select:none}.ch-terminal-output{opacity:.66}.ch-code-line-number{color:var(--ch-t-editorLineNumber-foreground);display:inline-block;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-right:1.5ch;text-align:right;-webkit-user-select:none;user-select:none}.ch-code-scroll-parent{background-color:unset;border:none;border-radius:0;box-sizing:initial;color:unset;display:block;font-size:14px;font-weight:400;letter-spacing:0;line-height:19px;padding:0}.ch-code-button,.ch-expand-close{background-image:none;font-size:inherit;padding:0;top:10px;-webkit-appearance:button;right:10px;margin:0;cursor:pointer}.ch-code-scroll-parent ::selection{background-color:var(--ch-t-editor-selectionBackground);color:inherit}.ch-code-button{background-color:initial;border:none;color:inherit;height:1.1em;position:absolute;width:1.1em}.ch-code-button:focus-visible{outline-color:currentColor}.ch-code-wrapper{background-color:var(--ch-t-background);box-sizing:initial;color:var(--ch-t-foreground);color-scheme:var(--ch-t-colorScheme);margin:0;padding:0;position:relative;white-space:pre}.DocSearch-Container,.DocSearch-Container *,.ch-editor-tab,.ch-editor-terminal,.ch-frame-button,.ch-scrollycoding-content{box-sizing:border-box}.ch-code-wrapper[data-ch-measured=false]{overflow:auto}.ch-code-wrapper[data-ch-measured=false]>*{opacity:0}.ch-expand-dialog{background-color:initial;border:0;height:100vh;max-width:900px;width:100vw}.ch-expand-dialog::backdrop{background-color:#000c}.ch-expand-close{background-color:initial;border:none;color:#fff;height:26px;position:absolute;width:26px}.ch-expand-close:focus-visible{outline-color:currentColor}.ch-expand-dialog-content{border:1px solid;border-color:var(--ch-t-sideBar-border);border-radius:8px;color:#fff;inset:40px;overflow:hidden;position:absolute}.ch-code-browser{color:var(--ch-t-editor-foreground);display:flex;height:100%}.ch-code-browser-sidebar{background:var(--ch-t-sideBar-background);border-bottom-color:var(--ch-t-sideBar-border);border-left-color:var(--ch-t-sideBar-border);border-right:1px solid;border-right-color:var(--ch-t-sideBar-border);border-top-color:var(--ch-t-sideBar-border);color:var(--ch-t-sideBar-foreground);font-size:.95rem;min-width:100px;padding:1em 0}.ch-code-browser-content{background:var(--ch-t-background);color:var(--ch-t-foreground);color-scheme:var(--ch-t-colorScheme);flex:1;font-family:monospace;font-size:1rem;font-weight:400;letter-spacing:0;line-height:1.2rem;overflow:auto;padding:1em;position:relative;white-space:pre}.ch-editor-frame,.ch-frame,.ch-simple-frame{break-inside:avoid;font-family:Ubuntu,Droid Sans,-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,sans-serif;page-break-inside:avoid;--ch-title-bar-height:30px}.ch-code-browser-content ::selection{background-color:var(--ch-t-editor-selectionBackground);color:inherit}.ch-code-browser-sidebar-file,.ch-code-browser-sidebar-folder{padding:.1em 1em}.ch-code-browser-sidebar-file,.dropdownNavbarItemMobile_J0Sd{cursor:pointer}.ch-code-browser-sidebar-file[data-selected=true]{background:var(--ch-t-list-activeSelectionBackground);color:var(--ch-t-list-activeSelectionForeground)}.ch-code-browser-sidebar-file:hover{background-color:var(--ch-t-list-hoverBackground);color:var(--ch-t-list-hoverForeground)}.ch-code-browser-button{-webkit-appearance:button;background-color:initial;background-image:none;border:none;color:inherit;cursor:pointer;font-size:inherit;height:1.5em;margin:0;min-height:1.5em;min-width:1.5em;padding:0;position:absolute;right:.8em;top:.8em;width:1.5em}.ch-code-browser-button:focus-visible{outline-color:currentColor}.ch-editor-tab{background:var(--ch-t-tab-inactiveBackground);border-bottom:1px solid;border-bottom-color:var(--ch-t-tab-inactiveBackground);border-right:1px solid #252526;border-right-color:var(--ch-t-tab-border);color:var(--ch-t-tab-inactiveForeground);cursor:pointer;display:flex;flex-shrink:1;height:100%;min-width:0;padding-left:15px;padding-right:15px;position:relative;white-space:nowrap}.ch-editor-tab[data-active=true]{background:var(--ch-t-tab-activeBackground);border-bottom-color:var(--ch-t-tab-activeBorder);color:var(--ch-t-tab-activeForeground);min-width:unset}.ch-editor-tab>div{font-size:12px;line-height:1.4em;margin-bottom:auto;margin-top:auto;overflow:hidden;text-overflow:ellipsis}.ch-editor-group-border{background:var(--ch-t-editorGroup-border);height:1px;position:absolute;top:0;width:100%;z-index:1}.ch-editor-frame{display:flex;flex-direction:column;overflow:hidden;position:relative;background:var(--ch-t-editor-background);height:100%}.ch-editor-frame .ch-frame-title-bar{background:none;background:var(--ch-t-editorGroupHeader-tabsBackground);color:var(--ch-t-icon-foreground)}.ch-editor-terminal{background-color:#1e1e1e;border-top:1px solid #80808059;bottom:0;color:#e7e7e7;overflow:hidden;padding:0 8px;position:absolute;width:100%}.ch-editor-terminal-tab{display:flex;font-size:11px;line-height:24px;padding:4px 10px 3px}.ch-editor-terminal-tab>span{border-bottom:1px solid #e7e7e7}.ch-editor-terminal-content{box-sizing:border-box;height:calc(100% - 40px);margin-top:8px}.ch-editor-terminal-content .ch-terminal{font-size:12px;margin:0}.ch-editor-button{-webkit-appearance:button;background-color:initial;background-image:none;border:none;color:inherit;cursor:pointer;font-size:inherit;height:1.5em;margin:0 .8em 0 0;min-height:1.5em;min-width:1.5em;padding:0;width:1.5em}.ch-editor-button:focus-visible{outline-color:currentColor}.ch-frame,.theme-doc-sidebar-menu{display:flex;flex-direction:column;height:100%}.ch-simple-frame{border-radius:6px;overflow:hidden}.ch-frame-content{background-color:var(--ch-content-background,#fafafa);flex-basis:0;flex-grow:1;flex-shrink:1;min-height:0}.ch-frame-zoom{--ch-frame-zoom:1;height:calc(100%/var(--ch-frame-zoom));overflow:auto;position:relative;transform:scale(var(--ch-frame-zoom));transform-origin:left top;width:calc(100%/var(--ch-frame-zoom))}.ch-frame-title-bar{align-items:center;background-color:var(--ch-content-background,#252526);color:#ebebed;display:flex;flex-grow:0;flex-shrink:0;font-size:12px;height:var(--ch-title-bar-height);min-height:var(--ch-title-bar-height);position:relative;width:100%}.ch-frame-middle-bar{font-size:1.2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-frame-left-bar,.ch-frame-right-bar{align-items:center;display:flex;flex-basis:1em;flex-grow:1;height:100%;width:max-content}.ch-frame-buttons{display:flex;flex-shrink:0;height:1em;margin:0 .8em;width:4.16em}.ch-frame-button{border:.08em solid;border-radius:50%;display:inline-block;height:1em;width:1em}.ch-frame-button-space{width:.56em}.ch-frame-button-left{background-color:#ed6b60;border-color:#ce5347}.ch-frame-button-middle{background-color:#f5be4f;border-color:#d6a243}.ch-frame-button-right{background-color:#62c554;border-color:#58a942}.ch-mini-browser .ch-frame-content iframe,.ch-mini-browser .ch-frame-content video{border:none;height:100%;position:absolute;width:100%}.ch-mini-browser .ch-frame-title-bar input{background:var(--ch-t-input-background);border:1px solid var(--ch-t-input-border);border-radius:.5em;box-shadow:none;color:#544;color:var(--ch-t-input-foreground);flex:1;font-size:1em;height:1.4em;min-width:5px;padding:0 10px;width:5px}.buttonGroup_geD8 button.selected_F9cJ,.buttonGroup_geD8 button:hover{background:var(--ifm-menu-color-background-active)}.ch-browser-button{color:#999;margin:0 1em}.ch-browser-back-button{margin-left:.2em}.ch-browser-forward-button{margin-left:0}.ch-browser-open-button{color:var(--ch-t-icon-foreground)}.ch-browser-open-icon,.ch-code-label-annotation:hover .ch-code-label-annotation-text,.tocCollapsibleContent_vkbj a{display:block}.ch-spotlight{display:flex;gap:1.1rem;margin:1rem 0}.ch-spotlight-tabs{align-items:stretch;display:flex;flex:1;flex-flow:column;gap:.5rem}.ch-spotlight-tab{border:1px solid #e3e3e3;border-radius:.25rem;margin:0 -.5rem;padding:0 .5rem}.ch-spotlight-tab:hover{border-color:#222}.ch-scrollycoding-step-content[data-selected],.ch-spotlight-tab[data-selected]{border-color:#0070f3}.ch-spotlight-sticker{align-self:stretch;display:flex;flex-flow:column;justify-content:center;max-height:80vh;min-height:min(100%,80vh);position:sticky;top:10vh;width:420px}.ch-spotlight-sticker .ch-codeblock,.ch-spotlight-sticker .ch-codegroup{flex:1;margin-bottom:0;margin-top:0;max-height:80vh;min-height:min(100%,80vh);min-width:100%;width:100%}.ch-scrollycoding-with-preview .ch-scrollycoding-sticker,.ch-spotlight-with-preview .ch-spotlight-sticker{gap:.5rem;height:80vh}.ch-spotlight-with-preview .ch-spotlight-sticker .ch-codeblock,.ch-spotlight-with-preview .ch-spotlight-sticker .ch-codegroup{flex:1;min-height:0}.ch-scrollycoding-with-preview .ch-scrollycoding-preview,.ch-spotlight-with-preview .ch-spotlight-preview{height:280px}.ch-scrollycoding{display:flex;gap:1rem;margin:1rem 0;position:relative}.ch-scrollycoding-content{flex:1}.ch-scrollycoding-step-content{border:1.5px solid #0000;border-radius:8px;margin:0 -.5rem;padding:1rem .5rem}.ch-scrollycoding-sticker{align-self:start;display:flex;flex-flow:column;justify-content:center;max-height:80vh;position:sticky;top:10vh;width:var(--ch-scrollycoding-sticker-width,420px)}.ch-scrollycoding-sticker .ch-codeblock,.ch-scrollycoding-sticker .ch-codegroup{margin-bottom:0;margin-top:0;max-height:80vh;min-height:var(--ch-scrollycoding-code-min-height,200px);min-width:100%;width:100%}.ch-scrollycoding-static .ch-preview{height:150px}.ch-slideshow{margin:1rem 0}.ch-slideshow-slide{align-items:stretch;aspect-ratio:16/9;display:flex;flex-flow:row;gap:.5rem}.ch-slideshow-slide .ch-codeblock,.ch-slideshow-slide .ch-codegroup{flex:2;height:auto;margin-bottom:0;margin-top:0}.ch-slideshow .ch-slideshow-preview{flex:1;height:auto;min-width:0}.ch-slideshow-range{display:flex;flex-flow:row;gap:.5rem}.ch-slideshow-notes{border:1px solid #e3e3e3;border-radius:.25rem;margin-top:1rem;padding:1rem}.ch-slideshow-note{max-height:140px;min-height:140px;overflow:auto;padding:.05px}.ch-codeblock,.ch-codegroup,.ch-preview{border-radius:6px;height:max-content;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}.ch-codeblock>*,.ch-codegroup>*,.ch-preview>*{height:100%;max-height:inherit;min-height:inherit}.ch-codeblock,.ch-codegroup{margin-bottom:1.25em;margin-top:1.25em}.ch-inline-code>code{background:var(--ch-t-lighter-inlineBackground);border-radius:.25em;color:var(--ch-t-foreground);font-size:.9rem;margin:.1em -.05em;padding:.2em .15em}.ch-inline-code .ch-section-link,.ch-inline-code .ch-section-link *{text-decoration-color:var(--ch-t-foreground)}.ch-section-link,.ch-section-link *{text-decoration-color:initial;text-decoration-style:dotted;text-decoration-thickness:1px}.ch-section-link[data-active=true]{background-color:#bae6fd66}.ch-section-link[data-active=true],.ch-section-link[data-active=true] *{text-decoration-thickness:1.5px}.ch-code-inline-mark{border-radius:.25rem;margin:0 -.15rem;padding:.2rem .15rem .1rem}.ch-code-inline-mark,.ch-code-multiline-mark{background:var(--ch-t-editor-rangeHighlightBackground)}.ch-code-multiline-mark-border{background:var(--ch-t-editor-infoForeground);height:100%;left:0;position:absolute;width:3px}.ch-code-multiline-mark .ch-code-button{display:none;font-size:1.2em;position:absolute;right:10px;top:1px}.ch-code-inline-link,.ch-code-link :not(span)>span{color:inherit;text-decoration-style:dotted}.ch-code-box-annotation{outline:2px solid var(--ch-t-editor-infoForeground)}.ch-code-label-annotation:hover{background:var(--ch-t-editor-lineHighlightBackground)}.ch-code-label-annotation-text{display:none;opacity:.7;padding-right:16px;position:absolute;right:0}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:initial;--ifm-navbar-padding-vertical:0;--ifm-global-radius:16px;--ifm-navbar-item-padding-vertical:0;--ifm-font-family-base:Inter,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI emoji";--ifm-font-family-monospace:"SFMono-Regular","Roboto Mono",Consolas,"Liberation Mono",Menlo,Courier,monospace;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}html[data-theme=light]{--ifm-color-primary:#db2979;--ifm-background-color:var(--ifm-color-white);--ifm-background-surface-color:var(--ifm-color-white)}.navbar{border-bottom:1px solid var(--ifm-toc-border-color);box-shadow:none!important}.docusaurus-highlight-code-line{background-color:#0000001a;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.diagonal-box{transform:skewY(-6deg)}.diagonal-content{transform:skewY(6deg)}[class^=announcementBar]{z-index:10}.showcase{background-color:#fff}.showcase-border{border-color:#f3f4f6}.text-description{color:#6b7280}.tabs-container{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);padding:1rem}.tabs,.tabs-container{margin-bottom:1rem}.tabs__item{border:none;border-bottom:1px solid var(--ifm-color-emphasis-200);border-radius:0;margin-right:0;padding-bottom:.5rem}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active)}#hero-apply{z-index:-1}.apply-form{background-image:linear-gradient(#fff,#f5f5fa);max-width:600px}.apply-text{color:#36395a}.hero-title{color:#1c1e21;font-family:var(--ifm-heading-font-family)}h1{font-size:30px}h2{font-size:25px}h3{font-size:22px}body{margin:0;font-size:16px}.docsearch-logo{color:#21243d}.footer-links a,.footer__copyright{color:var(--ifm-toc-link-color)}.apply-button:hover{color:#fff}.header-discord-link:hover,.header-github-link:hover,.header-twitter-link:hover{opacity:.6}.header-github-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNvbG9yPSIjMDAwIiBzdHlsZT0idXNlci1zZWxlY3Q6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6IzAwMDtmbGV4LXNocmluazowIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAuM2ExMiAxMiAwIDAgMC0zLjggMjMuNGMuNi4xLjgtLjMuOC0uNnYtMmMtMy4zLjctNC0xLjYtNC0xLjYtLjYtMS40LTEuNC0xLjgtMS40LTEuOC0xLS43LjEtLjcuMS0uNyAxLjIgMCAxLjkgMS4yIDEuOSAxLjIgMSAxLjggMi44IDEuMyAzLjUgMSAwLS44LjQtMS4zLjctMS42LTIuNy0uMy01LjUtMS4zLTUuNS02IDAtMS4yLjUtMi4zIDEuMy0zLjEtLjItLjQtLjYtMS42IDAtMy4yIDAgMCAxLS4zIDMuNCAxLjJhMTEuNSAxMS41IDAgMCAxIDYgMGMyLjMtMS41IDMuMy0xLjIgMy4zLTEuMi42IDEuNi4yIDIuOCAwIDMuMi45LjggMS4zIDEuOSAxLjMgMy4yIDAgNC42LTIuOCA1LjYtNS41IDUuOS41LjQuOSAxIC45IDIuMnYzLjNjMCAuMy4xLjcuOC42QTEyIDEyIDAgMCAwIDEyIC4zIi8+PC9zdmc+) no-repeat;content:"";display:flex;height:24px;width:24px}[data-theme=dark] .header-github-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNvbG9yPSIjMDAwIiBzdHlsZT0idXNlci1zZWxlY3Q6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6I2ZmZjtmbGV4LXNocmluazowIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAuM2ExMiAxMiAwIDAgMC0zLjggMjMuNGMuNi4xLjgtLjMuOC0uNnYtMmMtMy4zLjctNC0xLjYtNC0xLjYtLjYtMS40LTEuNC0xLjgtMS40LTEuOC0xLS43LjEtLjcuMS0uNyAxLjIgMCAxLjkgMS4yIDEuOSAxLjIgMSAxLjggMi44IDEuMyAzLjUgMSAwLS44LjQtMS4zLjctMS42LTIuNy0uMy01LjUtMS4zLTUuNS02IDAtMS4yLjUtMi4zIDEuMy0zLjEtLjItLjQtLjYtMS42IDAtMy4yIDAgMCAxLS4zIDMuNCAxLjJhMTEuNSAxMS41IDAgMCAxIDYgMGMyLjMtMS41IDMuMy0xLjIgMy4zLTEuMi42IDEuNi4yIDIuOCAwIDMuMi45LjggMS4zIDEuOSAxLjMgMy4yIDAgNC42LTIuOCA1LjYtNS41IDUuOS41LjQuOSAxIC45IDIuMnYzLjNjMCAuMy4xLjcuOC42QTEyIDEyIDAgMCAwIDEyIC4zIi8+PC9zdmc+) no-repeat;content:"";display:flex;height:24px;width:24px}.header-twitter-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwLjI1MSI+PHBhdGggZD0iTTE3OC41NyAxMjcuMTUgMjkwLjI3IDBoLTI2LjQ2bC05Ny4wMyAxMTAuMzhMODkuMzQgMEgwbDExNy4xMyAxNjYuOTNMMCAzMDAuMjVoMjYuNDZsMTAyLjQtMTE2LjU5IDgxLjggMTE2LjU5SDMwME0zNi4wMSAxOS41NGg0MC42NWwxODcuMTMgMjYyLjEzaC00MC42NiIvPjwvc3ZnPg==) 0 0/contain;content:"";display:flex;height:24px;width:24px}[data-theme=dark] .header-twitter-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwLjI1MSIgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTE3OC41NyAxMjcuMTUgMjkwLjI3IDBoLTI2LjQ2bC05Ny4wMyAxMTAuMzhMODkuMzQgMEgwbDExNy4xMyAxNjYuOTNMMCAzMDAuMjVoMjYuNDZsMTAyLjQtMTE2LjU5IDgxLjggMTE2LjU5SDMwME0zNi4wMSAxOS41NGg0MC42NWwxODcuMTMgMjYyLjEzaC00MC42NiIvPjwvc3ZnPg==) 0 0/contain;content:"";display:flex;height:24px;width:24px}.header-discord-link{margin-right:.5rem}[data-theme=dark] .header-discord-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIiBmaWxsPSIjZmZmIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgdmlld0JveD0iMCAtMjguNSAyNTYgMjU2Ij48cGF0aCBkPSJNMjE2Ljg1NiAxNi41OTdBMjA4LjUgMjA4LjUgMCAwIDAgMTY0LjA0MiAwYy0yLjI3NSA0LjExMy00LjkzMyA5LjY0NS02Ljc2NiAxNC4wNDZxLTI5LjUzOC00LjQ0Mi01OC41MzMgMGMtMS44MzItNC40LTQuNTUtOS45MzMtNi44NDYtMTQuMDQ2YTIwNy44IDIwNy44IDAgMCAwLTUyLjg1NSAxNi42MzhDNS42MTggNjcuMTQ3LTMuNDQzIDExNi40IDEuMDg3IDE2NC45NTZjMjIuMTY5IDE2LjU1NSA0My42NTMgMjYuNjEyIDY0Ljc3NSAzMy4xOTNBMTYxIDE2MSAwIDAgMCA3OS43MzUgMTc1LjNhMTM2LjQgMTM2LjQgMCAwIDEtMjEuODQ2LTEwLjYzMiAxMDkgMTA5IDAgMCAwIDUuMzU2LTQuMjM3YzQyLjEyMiAxOS43MDIgODcuODkgMTkuNzAyIDEyOS41MSAwYTEzMiAxMzIgMCAwIDAgNS4zNTUgNC4yMzcgMTM2IDEzNiAwIDAgMS0yMS44ODYgMTAuNjUzYzQuMDA2IDguMDIgOC42MzggMTUuNjcgMTMuODczIDIyLjg0OCAyMS4xNDItNi41OCA0Mi42NDYtMTYuNjM3IDY0LjgxNS0zMy4yMTMgNS4zMTYtNTYuMjg4LTkuMDgtMTA1LjA5LTM4LjA1Ni0xNDguMzZNODUuNDc0IDEzNS4wOTVjLTEyLjY0NSAwLTIzLjAxNS0xMS44MDUtMjMuMDE1LTI2LjE4czEwLjE0OS0yNi4yIDIzLjAxNS0yNi4yIDIzLjIzNiAxMS44MDQgMjMuMDE1IDI2LjJjLjAyIDE0LjM3NS0xMC4xNDggMjYuMTgtMjMuMDE1IDI2LjE4bTg1LjA1MSAwYy0xMi42NDUgMC0yMy4wMTQtMTEuODA1LTIzLjAxNC0yNi4xOHMxMC4xNDgtMjYuMiAyMy4wMTQtMjYuMmMxMi44NjcgMCAyMy4yMzYgMTEuODA0IDIzLjAxNSAyNi4yIDAgMTQuMzc1LTEwLjE0OCAyNi4xOC0yMy4wMTUgMjYuMTgiLz48L3N2Zz4=) 0 0/contain;content:"";display:flex;height:24px;width:24px}.header-discord-link:before{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIiBmaWxsPSIjZmZmIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgdmlld0JveD0iMCAtMjguNSAyNTYgMjU2Ij48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMjE2Ljg1NiAxNi41OTdBMjA4LjUgMjA4LjUgMCAwIDAgMTY0LjA0MiAwYy0yLjI3NSA0LjExMy00LjkzMyA5LjY0NS02Ljc2NiAxNC4wNDZxLTI5LjUzOC00LjQ0Mi01OC41MzMgMGMtMS44MzItNC40LTQuNTUtOS45MzMtNi44NDYtMTQuMDQ2YTIwNy44IDIwNy44IDAgMCAwLTUyLjg1NSAxNi42MzhDNS42MTggNjcuMTQ3LTMuNDQzIDExNi40IDEuMDg3IDE2NC45NTZjMjIuMTY5IDE2LjU1NSA0My42NTMgMjYuNjEyIDY0Ljc3NSAzMy4xOTNBMTYxIDE2MSAwIDAgMCA3OS43MzUgMTc1LjNhMTM2LjQgMTM2LjQgMCAwIDEtMjEuODQ2LTEwLjYzMiAxMDkgMTA5IDAgMCAwIDUuMzU2LTQuMjM3YzQyLjEyMiAxOS43MDIgODcuODkgMTkuNzAyIDEyOS41MSAwYTEzMiAxMzIgMCAwIDAgNS4zNTUgNC4yMzcgMTM2IDEzNiAwIDAgMS0yMS44ODYgMTAuNjUzYzQuMDA2IDguMDIgOC42MzggMTUuNjcgMTMuODczIDIyLjg0OCAyMS4xNDItNi41OCA0Mi42NDYtMTYuNjM3IDY0LjgxNS0zMy4yMTMgNS4zMTYtNTYuMjg4LTkuMDgtMTA1LjA5LTM4LjA1Ni0xNDguMzZNODUuNDc0IDEzNS4wOTVjLTEyLjY0NSAwLTIzLjAxNS0xMS44MDUtMjMuMDE1LTI2LjE4czEwLjE0OS0yNi4yIDIzLjAxNS0yNi4yIDIzLjIzNiAxMS44MDQgMjMuMDE1IDI2LjJjLjAyIDE0LjM3NS0xMC4xNDggMjYuMTgtMjMuMDE1IDI2LjE4bTg1LjA1MSAwYy0xMi42NDUgMC0yMy4wMTQtMTEuODA1LTIzLjAxNC0yNi4xOHMxMC4xNDgtMjYuMiAyMy4wMTQtMjYuMmMxMi44NjcgMCAyMy4yMzYgMTEuODA0IDIzLjAxNSAyNi4yIDAgMTQuMzc1LTEwLjE0OCAyNi4xOC0yMy4wMTUgMjYuMTgiLz48L3N2Zz4=) 0 0/contain;content:"";display:flex;height:24px;width:24px}.footer,[data-theme=dark] .sidebar-ad{background-color:var(--ifm-background-color)}.image-rendering-crisp{image-rendering:crisp-edges;image-rendering:-webkit-optimize-contrast}.image-rendering-pixel{image-rendering:pixelated}.img-center{display:flex;justify-content:center;width:100%}.markdown img{display:block;height:auto;margin:1rem auto;max-height:600px;object-fit:contain}.markdown img:not(.resized-image){max-width:600px;width:auto}.resized-image{max-height:500px;width:300px}.ch-scrollycoding-content{max-width:55%!important;min-width:40%!important}.ch-scrollycoding-sticker{max-width:60%!important;min-width:45%!important}.ch-scrollycoding-step-content{min-height:70px}.theme-doc-sidebar-item-category.theme-doc-sidebar-item-category-level-2.menu__list-item:not(:first-child){margin-top:.15rem!important}.footer{border-top:1px solid var(--ifm-color-emphasis-200);padding:1rem 0 0}.sidebar-ad,[data-theme=light] .footer{border-top:1px solid var(--ifm-color-emphasis-300)}.footer-content{align-items:center;display:flex;font-size:12px;justify-content:space-between;margin:0 auto;max-width:var(--ifm-container-width);padding:0 var(--ifm-navbar-padding-horizontal)}.footer-links{display:flex;font-size:13px;gap:.5rem}.footer .container{align-items:center;display:flex;flex-direction:row-reverse;justify-content:left;max-width:100%;padding:0 1.25rem}.sidebar-ad{border-radius:0;bottom:0;margin-left:-.5rem;margin-right:-.5rem;margin-top:auto;position:sticky}[data-theme=light] .sidebar-ad{background-color:var(--ifm-color-white)}.sidebar-ad a{align-items:center;display:flex;gap:1rem;justify-content:center;padding-bottom:.75rem;padding-top:.75rem}.sidebar-ad-text-container{display:flex;flex-direction:column;gap:.5rem}.sidebar-ad-text{font-family:Sora,serif;font-size:.875rem}.sidebar-ad-text-gradient{-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(to right,#a855f7,var(--ifm-color-primary));color:#0000}.DocSearch-Button,.DocSearch-Search-Icon{color:var(--ifm-color-emphasis-500)!important}.markdown details{background:var(--ifm-background-color);border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);margin-bottom:1rem;width:100%}.markdown details summary{align-items:center;cursor:pointer;display:flex;gap:.5em;list-style:none;outline:0}.markdown details summary:focus-visible{outline:2px solid var(--ifm-color-primary,#a855f7);outline-offset:2px}.markdown details [class^=collapsibleContent]{border-top:none!important;padding:0}.DocSearch-Button{background:var(--ifm-color-content-inverse)!important;border:1px solid var(--ifm-color-emphasis-300)!important;border-radius:6px!important}.DocSearch-Button:focus,.DocSearch-Button:hover{border-color:var(--ifm-color-primary)!important;box-shadow:0 0 0 1px var(--ifm-color-primary)!important}.DocSearch-Search-Icon{size:16px!important;stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.notion-column{display:flex;flex-direction:column;padding-bottom:12px;padding-top:12px}.notion-column>:first-child{margin-left:0;margin-right:0;margin-top:0}.notion-column>:last-child{margin-bottom:0;margin-left:0;margin-right:0}.notion-row{display:flex;max-width:100%;overflow:hidden;width:100%}.notion-spacer{width:calc(min(32px,4vw))}.notion-spacer:last-child,.optionsPanel_c56F:empty,.optionsPanel_kER9:empty{display:none}.gif_player{display:inline-block;position:relative;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.buttonGroup_geD8 button,.showMoreButton_Ry1D{cursor:pointer;-webkit-user-select:none;white-space:nowrap}.gif_player .play_button{background-color:#00000080;border:2px dashed #fff;border-radius:50%;box-shadow:0 0 0 3px #00000080;color:#fff;cursor:pointer;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:24px;left:50%;opacity:1;padding:14px 10px;position:absolute;top:50%;transform:translate(-50%,-50%) scale(1) rotate(0);transition:transform .4s,opacity .4s}.gif_player .play_button:hover{background-color:#000000b3;box-shadow:0 0 0 3px #000000b3}.gif_player .play_button:after{content:"GIF"}.gif_player.playing .play_button{opacity:.5;transform:translate(-50%,-50%) scale(0) rotate(180deg)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.floatingButton_tCt1{position:relative}.floatingButton_tCt1 button{background:#191a1be6;border:none;border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);cursor:pointer;opacity:0;outline:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out,visibility .2s ease-in-out,bottom .2s ease-in-out;visibility:hidden}.buttonGroup_geD8{background:var(--openapi-card-background-color);border-radius:var(--openapi-card-border-radius) var(--openapi-card-border-radius) 2px 2px;color:var(--ifm-pre-color);display:flex;flex-wrap:wrap;font-family:var(--ifm-font-family-monospace);justify-content:center;margin-bottom:1px;margin-top:0}.buttonGroup_geD8 button{appearance:none;background:#0000;border:0 solid #0000;color:var(--ifm-menu-color);font-size:13.3333px;font-weight:var(--ifm-font-weight-semibold);line-height:var(--ifm-pre-line-height);padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition:color var(--ifm-button-transition-duration) cubic-bezier(.08,.52,.52,1),background var(--ifm-button-transition-duration) cubic-bezier(.08,.52,.52,1),border-color var(--ifm-button-transition-duration) cubic-bezier(.08,.52,.52,1);user-select:none;--margin:0.25rem;border-radius:calc(var(--margin));display:block;margin:var(--margin);margin-right:0}.buttonGroup_geD8 button:last-child{margin-right:.25rem}.buttonDelete_vG3A:focus,.buttonGroup_geD8 button:focus,.buttonThin_a10m:focus,.showMoreButton_Ry1D:focus,.showMoreButton_SWLU:focus,body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.buttonGroup_geD8 button.selected_F9cJ{color:var(--ifm-menu-color-active)}.selectInput_vS5v,html[data-theme=dark] .selectInput_vS5v{background-position:right var(--ifm-pre-padding) top 50%;background-repeat:no-repeat;background-size:initial;appearance:none}.formItem_DtZA{margin-top:var(--ifm-pre-padding)}.inputBase_mKhX,.inputBase_qv87,.inputBase_yXPZ,html[data-theme=dark] .selectInput_vS5v{background-color:var(--openapi-input-background);margin-top:calc(var(--ifm-pre-padding)/2);color:var(--ifm-pre-color);font-size:var(--ifm-code-font-size);width:100%;outline:0}.inputBase_qv87{padding:12px 48px 12px var(--ifm-pre-padding)}.inputBase_qv87,html[data-theme=dark] .selectInput_vS5v{border:none;border-radius:4px}html[data-theme=dark] .selectInput_vS5v{background-image:url('data:image/svg+xml;charset=US-ASCII,')}html[data-theme=light] .input_ygXe,html[data-theme=light] .selectInput_vS5v,html[data-theme=light] .selectInput_ya64{border-color:var(--ifm-color-primary-lightest);border-style:solid;border-width:1px}.selectInput_vS5v{background-image:url('data:image/svg+xml;charset=US-ASCII,')}.buttonDelete_vG3A:active,.input_TTw5:focus,.input_ygXe:focus,.selectInput_vS5v:focus{box-shadow:inset 0 0 0 2px var(--openapi-input-border)}.inputBase_mKhX,.inputBase_yXPZ{border:none;border-radius:4px;padding:12px var(--ifm-pre-padding)}.optionsPanel_c56F,.optionsPanel_kER9{background:var(--openapi-card-background-color);border-radius:var(--openapi-card-border-radius);color:var(--ifm-pre-color);line-height:var(--ifm-pre-line-height);margin-bottom:var(--ifm-spacing-vertical);margin-top:0;overflow:auto;padding:var(--ifm-pre-padding);position:relative}.dropzone_dwtv{border:2px dashed var(--openapi-monaco-border-color)}.dropzoneHover_X65A,.dropzone_dwtv{align-items:center;background-color:var(--openapi-input-background);border-radius:4px;cursor:pointer;display:inline-flex;font-size:var(--ifm-code-font-size);justify-content:center;padding:var(--ifm-pre-padding);width:100%}.dropzoneHover_X65A,.dropzone_dwtv:hover{background:linear-gradient(var(--openapi-dropzone-hover-shim),var(--openapi-dropzone-hover-shim)),linear-gradient(var(--ifm-color-primary),var(--ifm-color-primary));border:2px dashed var(--ifm-color-primary)}.dropzoneContent_QObU{align-items:center;color:var(--openapi-dropzone-color);display:flex;flex-wrap:wrap;justify-content:center;margin:var(--ifm-pre-padding) 0}.dropzone_dwtv:hover .dropzoneContent_QObU,.inputBase_pxKA{color:var(--ifm-pre-color)}.dropzoneHover_X65A .dropzoneContent_QObU{align-items:center;color:var(--ifm-pre-color);display:flex;flex-wrap:wrap;justify-content:center;margin:var(--ifm-pre-padding) 0}.filename_zGyv{flex:1;margin:0 calc(var(--ifm-pre-padding)*1.5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inputBase_pxKA,.monacoBase_T17Z{margin-top:calc(var(--ifm-pre-padding)/2)}.monacoBase_T17Z{background-color:var(--openapi-monaco-background-color);border-radius:4px;padding:var(--ifm-pre-padding)}.monaco_Jeel{border:2px solid #0000;box-shadow:0 0 0 1px var(--openapi-monaco-border-color)}.monacoFocus_W372,.selectInput_ya64:focus{border:2px solid var(--openapi-input-border)}.inputBase_pxKA{background-color:var(--openapi-input-background);border:2px solid #0000;border-radius:4px;font-size:var(--ifm-code-font-size);outline:0;padding:12px var(--ifm-pre-padding);width:100%}.selectInput_ya64{appearance:none}.selectInput_ya64 option{border-radius:.25rem;color:var(--ifm-menu-color);margin:.25rem 0;padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.plus_XYuX{display:inline-block;margin-right:6px;transform:rotate(0);transform-origin:center;transition:transform .2s}.plusExpanded_wYkc{transform:rotate(45deg)}.showMoreButton_Ry1D{appearance:none;background-color:initial;border:0 solid #0000;color:var(--ifm-color-primary);display:block;font-size:var(--ifm-code-font-size);margin-bottom:0;margin-top:var(--ifm-pre-padding);padding:0;text-align:left;user-select:none;width:100%}.buttonDelete_vG3A,.buttonThin_a10m{cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:400;line-height:1.5;margin-top:calc(var(--ifm-pre-padding)/2);transition-duration:.1s,.1s,.1s,var(--ifm-button-transition-duration);transition-property:color,background,border-color,box-shadow;transition-timing-function:cubic-bezier(.08,.52,.52,1);-webkit-user-select:none}.showMoreButton_Ry1D:hover,.showMoreButton_SWLU:hover{color:var(--ifm-color-primary-hover)}.buttonDelete_vG3A{align-items:center;appearance:none;background-color:var(--openapi-input-background);border:none;border-radius:4px;color:var(--ifm-pre-color);display:flex;justify-content:center;margin-left:4px;outline:0;padding:0 12px;user-select:none;white-space:nowrap}.buttonThin_a10m,.showMoreButton_SWLU{background-color:initial;appearance:none;white-space:nowrap}.buttonThin_a10m{border:1px solid var(--openapi-input-border);border-radius:var(--ifm-pre-border-radius);color:var(--openapi-input-border);display:block;margin-bottom:var(--ifm-pre-padding);padding:3px 60px 3px 12px;user-select:none}.DocSearch-Button,.showMoreButton_SWLU{-webkit-user-select:none;cursor:pointer}.buttonThin_a10m:hover{background-color:var(--openapi-input-border);color:var(--openapi-inverse-color)}.buttonThin_a10m:active{box-shadow:inset 0 0 0 1px var(--openapi-input-border),inset 0 0 0 2px var(--openapi-inverse-color)}.showOptions_Ln5O{margin-top:var(--ifm-pre-padding);visibility:visible}.hideOptions_Eruu{display:none;visibility:hidden}.showMoreButton_SWLU{border:0 solid #0000;color:var(--ifm-color-primary);display:block;font-size:var(--ifm-code-font-size);margin-bottom:0;margin-top:var(--ifm-pre-padding);padding:0;text-align:left;user-select:none}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;color:var(--docsearch-muted-color);display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;transition-duration:.1s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Hit[aria-selected=true] mark,.DocSearch-Prefill:focus,.DocSearch-Prefill:hover,.content_knG7 a{-webkit-text-decoration:underline;text-decoration:underline}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards a;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a,.api-wrapper{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative;scroll-margin-top:40px}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,.toggleIcon_g3eP,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Container,.skipToContent_fXgn{z-index:calc(var(--ifm-z-index-fixed) + 1)}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@keyframes a{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}[data-theme-choice=dark] .darkToggleIcon_wfgR,[data-theme-choice=light] .lightToggleIcon_pyhR,[data-theme-choice=system] .systemToggleIcon_QzmC,[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.iconExternalLink_nPIU{margin-left:.3rem}.apiMainContainer_L2xG,.apiPage_KQrU,.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.navbar__items--right>:last-child{padding-right:0}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.buttonGroup_M5ko button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_Vdqa{opacity:1!important}.copyButtonIcons_IEyt{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_TrPX,.copyButtonSuccessIcon_cVMy{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_cVMy{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_Vdqa .copyButtonIcon_TrPX{opacity:0;transform:scale(.33)}.copyButtonCopied_Vdqa .copyButtonSuccessIcon_cVMy{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_b1P5{height:1.2rem;width:1.2rem}.buttonGroup_M5ko{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_M5ko button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_M5ko button:focus-visible,.buttonGroup_M5ko button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_M5ko button{opacity:.4}.codeBlockContent_QJqH{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_OeMC{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_OeMC+.codeBlockContent_QJqH .codeBlock_a8dz{border-top-left-radius:0;border-top-right-radius:0}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.algoliaLogo_rT1R{max-width:150px}.algoliaLogoPathFill_WdUC{fill:var(--ifm-font-color-base)}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{color:var(--ifm-color-content-secondary);font-size:.8rem;--ifm-breadcrumb-separator-size-multiplier:1}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{animation:1s linear infinite b;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes b{to{transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}:root{--docusaurus-announcement-bar-height:auto;--openapi-code-dim-dark:#7f7f7f;--openapi-code-red-dark:#fc929e;--openapi-code-orange-dark:#f8b886;--openapi-code-green-dark:#85d996;--openapi-code-blue-dark:#a4cdfe;--openapi-code-purple-dark:#d9a0f9;--openapi-monaco-background-color-dark:#18191a;--openapi-code-dim-light:#aaa;--openapi-code-red-light:#f44336;--openapi-code-orange-light:var(--ifm-code-color);--openapi-code-green-light:#388e3c;--openapi-code-blue-light:#1976d2;--openapi-code-purple-light:#ab47bc;--openapi-monaco-background-color-light:#fff;--openapi-code-dim:var(--openapi-code-dim-light);--openapi-code-red:var(--openapi-code-red-light);--openapi-code-orange:var(--openapi-code-orange-light);--openapi-code-green:var(--openapi-code-green-light);--openapi-code-blue:var(--openapi-code-blue-light);--openapi-code-purple:var(--openapi-code-purple-light);--openapi-monaco-background-color:var(--openapi-monaco-background-color-light);--openapi-monaco-border-color:#dadde1;--api-sidebar-width:300px;--api-sidebar-hidden-width:30px;--openapi-card-background-color:#f6f8fa;--openapi-card-border-radius:var(--ifm-pre-border-radius);--openapi-input-background:var(--ifm-code-background);--openapi-input-border:var(--ifm-color-primary);--openapi-button-dissabled:#c6c6c6;--openapi-dropzone-color:#00000080;--openapi-dropzone-hover-shim:#ebedf0cc;--openapi-inverse-color:var(--ifm-color-gray-100)}.apiSidebarContainer_Korj{display:none}.menu__list-item--deprecated>:not(.menu__link--active){opacity:.3;-webkit-text-decoration:line-through;text-decoration:line-through}.button.disabled,.button:disabled,.button[disabled]{opacity:.35}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}.lastUpdated_JAkA{text-align:right}.tocMobile_EiPU,.tocMobile_ITEo{display:none}.docItemCol_VOVn,.docItemCol_t_cT{max-width:75%!important}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,.expandSidebarButtonIcon_Z2po,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}.collapsedApiSidebar_Ic1j,.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.apiSidebarContainer_Korj,.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;will-change:width}[dir=rtl] .expandButtonIcon_i1dp,html[dir=rtl] .expandSidebarButtonIcon_Z2po{transform:rotate(180deg)}.docSidebarContainer_YfHR{width:var(--doc-sidebar-width)}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.apiMainContainer_L2xG{flex-grow:1;max-width:calc(100% - var(--api-sidebar-width))}.apiMainContainerEnhanced_KekW{max-width:calc(100% - var(--api-sidebar-hidden-width))}.apiSidebarContainer_Korj{width:var(--api-sidebar-width)}.apiSidebarContainerHidden_KLHn{cursor:pointer;width:var(--api-sidebar-hidden-width)}.collapsedApiSidebar_Ic1j{align-items:center;display:flex;justify-content:center;transition:background-color var(--ifm-transition-fast) ease}.collapsedApiSidebar_Ic1j:focus,.collapsedApiSidebar_Ic1j:hover{background-color:var(--ifm-color-emphasis-200)}html[data-theme=dark] .collapsedApiSidebar_Ic1j:focus,html[data-theme=dark] .collapsedApiSidebar_Ic1j:hover{background-color:var(--collapse-button-bg-color-dark)}.apiItemWrapperEnhanced_aX4w{max-width:calc(var(--ifm-container-width) + var(--api-sidebar-width))!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.docItemContainer_F8PC{padding:0 .3rem}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media (max-width:768px){.markdown img:not(.resized-image){max-height:500px;max-width:100%}.resized-image{max-height:400px;max-width:300px;width:100%}.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:767px){.mendable-search{width:200px}}@media (max-width:640px){.notion-row{flex-direction:column}.notion-row .notion-column{width:100%!important}.notion-row .notion-spacer{display:none}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (max-width:500px){.mendable-search{width:150px}}@media (max-width:380px){.mendable-search{width:140px}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media (prefers-reduced-motion){.DocSearch-Button-Key{transition:none}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}}
\ No newline at end of file
diff --git a/assets/js/16ceb5d2.5dc54cce.js b/assets/js/16ceb5d2.5dc54cce.js
deleted file mode 100644
index 2bb2ce7f05..0000000000
--- a/assets/js/16ceb5d2.5dc54cce.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1399],{11470:(e,o,n)=>{n.d(o,{A:()=>_});var t=n(96540),s=n(18215),r=n(23104),l=n(56347),c=n(205),i=n(57485),d=n(31682),a=n(70679);function p(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:o}=e;return!!o&&"object"==typeof o&&"value"in o}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:o,children:n}=e;return(0,t.useMemo)(()=>{const e=o??function(e){return p(e).map(({props:{value:e,label:o,attributes:n,default:t}})=>({value:e,label:o,attributes:n,default:t}))}(n);return function(e){const o=(0,d.XI)(e,(e,o)=>e.value===o.value);if(o.length>0)throw new Error(`Docusaurus error: Duplicate values "${o.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[o,n])}function u({value:e,tabValues:o}){return o.some(o=>o.value===e)}function x({queryString:e=!1,groupId:o}){const n=(0,l.W6)(),s=function({queryString:e=!1,groupId:o}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!o)throw new Error('Docusaurus error: The 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 o??null}({queryString:e,groupId:o});return[(0,i.aZ)(s),(0,t.useCallback)(e=>{if(!s)return;const o=new URLSearchParams(n.location.search);o.set(s,e),n.replace({...n.location,search:o.toString()})},[s,n])]}function L(e){const{defaultValue:o,queryString:n=!1,groupId:s}=e,r=h(e),[l,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:o}){if(0===o.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!u({value:e,tabValues:o}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${o.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=o.find(e=>e.default)??o[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:o,tabValues:r})),[d,p]=x({queryString:n,groupId:s}),[L,j]=function({groupId:e}){const o=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,s]=(0,a.Dv)(o);return[n,(0,t.useCallback)(e=>{o&&s.set(e)},[o,s])]}({groupId:s}),y=(()=>{const e=d??L;return u({value:e,tabValues:r})?e:null})();(0,c.A)(()=>{y&&i(y)},[y]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!u({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);i(e),p(e),j(e)},[p,j,r]),tabValues:r}}var j=n(92303);const y={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var F=n(74848);function A({className:e,block:o,selectedValue:n,selectValue:t,tabValues:l}){const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,r.a_)(),d=e=>{const o=e.currentTarget,s=c.indexOf(o),r=l[s].value;r!==n&&(i(o),t(r))},a=e=>{let o=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;o=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;o=c[n]??c[c.length-1];break}}o?.focus()};return(0,F.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":o},e),children:l.map(({value:e,label:o,attributes:t})=>(0,F.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{c.push(e)},onKeyDown:a,onClick:d,...t,className:(0,s.A)("tabs__item",y.tabItem,t?.className,{"tabs__item--active":n===e}),children:o??e},e))})}function D({lazy:e,children:o,selectedValue:n}){const r=(Array.isArray(o)?o:[o]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===n);return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,F.jsx)("div",{className:"margin-top--md",children:r.map((e,o)=>(0,t.cloneElement)(e,{key:o,hidden:e.props.value!==n}))})}function f(e){const o=L(e);return(0,F.jsxs)("div",{className:(0,s.A)("tabs-container",y.tabList),children:[(0,F.jsx)(A,{...o,...e}),(0,F.jsx)(D,{...o,...e})]})}function _(e){const o=(0,j.A)();return(0,F.jsx)(f,{...e,children:p(e.children)},String(o))}},19365:(e,o,n)=>{n.d(o,{A:()=>l});n(96540);var t=n(18215);const s={tabItem:"tabItem_Ymn6"};var r=n(74848);function l({children:e,hidden:o,className:n}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,n),hidden:o,children:e})}},28453:(e,o,n)=>{n.d(o,{R:()=>l,x:()=>c});var t=n(96540);const s={},r=t.createContext(s);function l(e){const o=t.useContext(r);return t.useMemo(function(){return"function"==typeof e?e(o):{...o,...e}},[o,e])}function c(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:o},e.children)}},33439:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>h,assets:()=>p,chCodeConfig:()=>u,contentTitle:()=>a,default:()=>j,frontMatter:()=>d,metadata:()=>t,toc:()=>x});const t=JSON.parse('{"id":"Configuration/environment-variables","title":"Environment variables","description":"Langflow uses environment variables to configure certain settings.","source":"@site/docs/Configuration/environment-variables.mdx","sourceDirName":"Configuration","slug":"/environment-variables","permalink":"/environment-variables","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Environment variables","slug":"/environment-variables"},"sidebar":"docs","previous":{"title":"Global variables","permalink":"/configuration-global-variables"},"next":{"title":"Manage files","permalink":"/concepts-file-management"}}');var s=n(74848),r=n(28453),l=n(24754),c=n(11470),i=n(19365);n(28774);const d={title:"Environment variables",slug:"/environment-variables"},a=void 0,p={},h={annotations:l.hk,Code:l.Cy},u={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Precedence",id:"precedence",level:2},{value:"Configure environment variables",id:"configure-environment-variables",level:2},{value:"Set environment variables in your terminal",id:"configure-variables-terminal",level:3},{value:"Import environment variables from a .env file",id:"configure-variables-env-file",level:3},{value:"Supported environment variables",id:"supported-variables",level:2},{value:"Configure .env, override.conf, and tasks.json files",id:"configure-env-overrideconf-and-tasksjson-files",level:2},{value:"Set environment variables for Langflow Desktop",id:"set-environment-variables-for-langflow-desktop",level:2}];function L(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return h||y("CH",!1),h.Code||y("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(o.p,{children:"Langflow uses environment variables to configure certain settings.\nYou can also import environment variables for use in your deployment, such as environment variables used by certain components in your flows."}),"\n",(0,s.jsxs)(o.p,{children:["You can set Langflow environment variables in your terminal, in ",(0,s.jsx)(o.code,{children:".env"}),", and with the ",(0,s.jsx)(o.a,{href:"./configuration-cli",children:"Langflow CLI"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"precedence",children:"Precedence"}),"\n",(0,s.jsx)(o.p,{children:"If an environment variable is set in multiple places, the following hierarchy applies:"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Langflow CLI options override all other sources."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:".env"})," file overrides system environment variables."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"System environment variables are used only if not set elsewhere."}),"\n",(0,s.jsxs)(o.p,{children:["When running a Langflow Docker image, the ",(0,s.jsx)(o.code,{children:"-e"})," flag sets system environment variables."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.p,{children:"For example:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["If you set ",(0,s.jsx)(o.code,{children:"LANGFLOW_PORT=8080"})," in your system environment and ",(0,s.jsx)(o.code,{children:"LANGFLOW_PORT=7860"})," in ",(0,s.jsx)(o.code,{children:".env"}),", Langflow uses ",(0,s.jsx)(o.code,{children:"7860"})," from ",(0,s.jsx)(o.code,{children:".env"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["If you run ",(0,s.jsx)(o.code,{children:"langflow run --port 9000"})," with ",(0,s.jsx)(o.code,{children:"LANGFLOW_PORT=7860"})," in ",(0,s.jsx)(o.code,{children:".env"}),", Langflow uses ",(0,s.jsx)(o.code,{children:"9000"})," from the CLI option."]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"configure-environment-variables",children:"Configure environment variables"}),"\n",(0,s.jsxs)(o.p,{children:["Langflow recognizes ",(0,s.jsx)(o.a,{href:"#supported-variables",children:"supported environment variables"})," from the following sources:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Environment variables that you've set in your terminal."}),"\n",(0,s.jsxs)(o.li,{children:["Environment variables that you've imported from a ",(0,s.jsx)(o.code,{children:".env"})," file when starting Langflow or using the ",(0,s.jsx)(o.code,{children:"--env-file"})," option in the Langflow CLI."]}),"\n"]}),"\n",(0,s.jsxs)(o.p,{children:["You can choose to use one or both sources.\nHowever, environment variables imported from a ",(0,s.jsx)(o.code,{children:".env"})," file take ",(0,s.jsx)(o.a,{href:"#precedence",children:"precedence"})," over those set in your terminal."]}),"\n",(0,s.jsx)(o.h3,{id:"configure-variables-terminal",children:"Set environment variables in your terminal"}),"\n",(0,s.jsx)(o.p,{children:"Run the following commands to set environment variables for your current terminal session:"}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsx)(i.A,{value:"linux-macos",label:"Linux or macOS",default:!0,children:(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" VARIABLE_NAME",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"'VALUE'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"windows",label:"Windows",children:(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"set VARIABLE_NAME='VALUE'",props:{}}]}],lang:"text"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"docker",label:"Docker",children:(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:"VARIABLE_NAME='VALUE' ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})})]}),"\n",(0,s.jsxs)(o.p,{children:["When you start Langflow, it looks for environment variables that you've set in your terminal.\nIf it detects a supported environment variable, then it automatically adopts the specified value, subject to ",(0,s.jsx)(o.a,{href:"#precedence",children:"precedence rules"}),"."]}),"\n",(0,s.jsx)(o.h3,{id:"configure-variables-env-file",children:"Import environment variables from a .env file"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"If Langflow is running, quit Langflow."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Create a ",(0,s.jsx)(o.code,{children:".env"})," file, and then open it in your preferred editor."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Define ",(0,s.jsx)(o.a,{href:"#supported-variables",children:"Langflow environment variables"})," in the ",(0,s.jsx)(o.code,{children:".env"})," file. For example:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DO_NOT_TRACK=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_LOGIN=False",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING_INTERVAL=1000",props:{}}]},{tokens:[{content:"LANGFLOW_BACKEND_ONLY=False",props:{}}]},{tokens:[{content:'LANGFLOW_BUNDLE_URLS=["https://github.com/user/repo/commit/hash"]',props:{}}]},{tokens:[{content:"LANGFLOW_CACHE_TYPE=async",props:{}}]},{tokens:[{content:"LANGFLOW_COMPONENTS_PATH=/path/to/components/",props:{}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR=/path/to/config/",props:{}}]},{tokens:[{content:"LANGFLOW_DATABASE_URL=postgresql://user:password@localhost:5432/langflow",props:{}}]},{tokens:[{content:"LANGFLOW_DEV=False",props:{}}]},{tokens:[{content:"LANGFLOW_FALLBACK_TO_ENV_VAR=False",props:{}}]},{tokens:[{content:"LANGFLOW_HEALTH_CHECK_MAX_RETRIES=5",props:{}}]},{tokens:[{content:"LANGFLOW_HOST=localhost",props:{}}]},{tokens:[{content:"LANGFLOW_LANGCHAIN_CACHE=InMemoryCache",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_FILE_SIZE_UPLOAD=10000",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_ITEMS_LENGTH=100",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_TEXT_LENGTH=1000",props:{}}]},{tokens:[{content:"LANGFLOW_LOG_LEVEL=error",props:{}}]},{tokens:[{content:"LANGFLOW_OPEN_BROWSER=False",props:{}}]},{tokens:[{content:"LANGFLOW_PORT=7860",props:{}}]},{tokens:[{content:"LANGFLOW_REMOVE_API_KEYS=False",props:{}}]},{tokens:[{content:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR=True",props:{}}]},{tokens:[{content:"LANGFLOW_SECRET_KEY=somesecretkey",props:{}}]},{tokens:[{content:"LANGFLOW_STORE=True",props:{}}]},{tokens:[{content:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=True",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER=adminuser",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER_PASSWORD=adminpass",props:{}}]},{tokens:[{content:"LANGFLOW_WORKER_TIMEOUT=60000",props:{}}]},{tokens:[{content:"LANGFLOW_WORKERS=3",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For additional examples, see the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:(0,s.jsx)(o.code,{children:".env.example"})})," file in the Langflow repository."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Save and close ",(0,s.jsx)(o.code,{children:".env"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Start Langflow with your ",(0,s.jsx)(o.code,{children:".env"})," file:"]}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsx)(i.A,{value:"local",label:"Local",default:!0,children:(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"python ",props:{style:{color:"#FFA657"}}},{content:"-m ",props:{style:{color:"#79C0FF"}}},{content:"langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"docker",label:"Docker",children:(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --env-file ",props:{style:{color:"#79C0FF"}}},{content:".env ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})})]}),"\n",(0,s.jsxs)(o.p,{children:["If your ",(0,s.jsx)(o.code,{children:".env"})," file isn't in the same directory, provide the path to your ",(0,s.jsx)(o.code,{children:".env"})," file."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.p,{children:["On startup, Langflow imports the environment variables from your ",(0,s.jsx)(o.code,{children:".env"})," file, as well as any others that you set in your terminal, and then adopts their specified values."]}),"\n",(0,s.jsx)(o.h2,{id:"supported-variables",children:"Supported environment variables"}),"\n",(0,s.jsx)(o.p,{children:"The following table lists the environment variables supported by Langflow."}),"\n",(0,s.jsxs)(o.table,{children:[(0,s.jsx)(o.thead,{children:(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.th,{children:"Variable"}),(0,s.jsx)(o.th,{children:"Format"}),(0,s.jsx)(o.th,{children:"Default"}),(0,s.jsx)(o.th,{children:"Description"})]})}),(0,s.jsxs)(o.tbody,{children:[(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"DO_NOT_TRACK"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsxs)(o.td,{children:["Whether to report ",(0,s.jsx)(o.a,{href:"/contributing-telemetry",children:"Langflow telemetry data"}),". If true, Langflow telemetry is disabled."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_AUTO_LOGIN"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsxs)(o.td,{children:["See ",(0,s.jsx)(o.a,{href:"/api-keys-and-authentication#langflow-auto-login",children:(0,s.jsx)(o.code,{children:"LANGFLOW_AUTO_LOGIN"})}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_AUTO_SAVING"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsx)(o.td,{children:"Enable flow auto-saving."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_AUTO_SAVING_INTERVAL"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"1000"})}),(0,s.jsx)(o.td,{children:"Set the interval for flow auto-saving in milliseconds."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_BACKEND_ONLY"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsx)(o.td,{children:"Run only the Langflow backend service (no frontend)."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_BUNDLE_URLS"})}),(0,s.jsx)(o.td,{children:"List[String]"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"[]"})}),(0,s.jsx)(o.td,{children:"A list of URLs from which to load component bundles and flows. Supports GitHub URLs. If LANGFLOW_AUTO_LOGIN is enabled, flows from these bundles are loaded into the database."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_CACHE_TYPE"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"async"})}),(0,s.jsxs)(o.td,{children:["Set the cache type for Langflow's internal caching system. For detailed cache configuration options, see ",(0,s.jsx)(o.a,{href:"/memory#configure-cache-memory",children:"Configure cache memory"}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_COMPONENTS_PATH"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsx)(o.td,{children:"Path to the directory containing custom components."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_CONFIG_DIR"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Varies"}),(0,s.jsxs)(o.td,{children:["Set the Langflow configuration directory where files, logs, and the Langflow database are stored. Default path depends on your installation. See ",(0,s.jsx)(o.a,{href:"/concepts-flows#flow-storage-and-logs",children:"Flow storage and logs"}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_DATABASE_URL"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsx)(o.td,{children:"Set the database URL for Langflow. If not provided, Langflow uses a SQLite database."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_DATABASE_CONNECTION_RETRY"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsx)(o.td,{children:"Whether to retry lost connections to the Langflow database. If true, Langflow tries to connect to the database again if the connection fails."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_DB_POOL_SIZE"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"20"})}),(0,s.jsxs)(o.td,{children:[(0,s.jsx)(o.strong,{children:"DEPRECATED:"})," Use ",(0,s.jsx)(o.code,{children:"LANGFLOW_DB_CONNECTION_SETTINGS"})," instead. The number of connections to keep open in the connection pool."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_DB_MAX_OVERFLOW"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"30"})}),(0,s.jsxs)(o.td,{children:[(0,s.jsx)(o.strong,{children:"DEPRECATED:"})," Use ",(0,s.jsx)(o.code,{children:"LANGFLOW_DB_CONNECTION_SETTINGS"})," instead. The number of connections to allow that can be opened beyond the pool size."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_DB_CONNECT_TIMEOUT"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"30"})}),(0,s.jsx)(o.td,{children:"The number of seconds to wait before giving up on a lock to be released or establishing a connection to the database."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_DB_CONNECTION_SETTINGS"})}),(0,s.jsx)(o.td,{children:"JSON"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsxs)(o.td,{children:["A JSON dictionary to centralize database connection parameters. Example: ",(0,s.jsx)(o.code,{children:'{"pool_size": 20, "max_overflow": 30}'})]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_DISABLE_TRACK_APIKEY_USAGE"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsxs)(o.td,{children:["Whether to track API key usage. If true, disables tracking of API key usage (",(0,s.jsx)(o.code,{children:"total_uses"})," and ",(0,s.jsx)(o.code,{children:"last_used_at"}),") to avoid database contention under high concurrency."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsxs)(o.td,{children:["Allow creation of superusers with the Langflow CLI command ",(0,s.jsx)(o.a,{href:"/configuration-cli#langflow-superuser",children:(0,s.jsx)(o.code,{children:"langflow superuser"})}),". Recommended to be disabled (false) in production for security reasons."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_FALLBACK_TO_ENV_VAR"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsxs)(o.td,{children:["If enabled, ",(0,s.jsx)(o.a,{href:"/configuration-global-variables",children:"global variables"})," set in your Langflow ",(0,s.jsx)(o.strong,{children:"Settings"})," can use an environment variable with the same name if Langflow can't retrieve the variable value from the global variables."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_FRONTEND_PATH"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"./frontend"})}),(0,s.jsxs)(o.td,{children:["Path to the frontend directory containing build files. This is for development purposes only. See ",(0,s.jsx)(o.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(o.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_HEALTH_CHECK_MAX_RETRIES"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"5"})}),(0,s.jsxs)(o.td,{children:["Set the maximum number of retries for the health check. See ",(0,s.jsx)(o.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(o.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_HOST"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"localhost"})}),(0,s.jsxs)(o.td,{children:["The host on which the Langflow server will run. See ",(0,s.jsx)(o.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(o.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_LANGCHAIN_CACHE"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"InMemoryCache"})}),(0,s.jsxs)(o.td,{children:["Set the cache type for Langchain's caching system. For detailed cache configuration options, see ",(0,s.jsx)(o.a,{href:"/memory#configure-cache-memory",children:"Configure cache memory"}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_LOG_LEVEL"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"INFO"})}),(0,s.jsxs)(o.td,{children:["Set the logging level for Langflow. Possible values: ",(0,s.jsx)(o.code,{children:"DEBUG"}),", ",(0,s.jsx)(o.code,{children:"INFO"}),", ",(0,s.jsx)(o.code,{children:"WARNING"}),", ",(0,s.jsx)(o.code,{children:"ERROR"}),", ",(0,s.jsx)(o.code,{children:"CRITICAL"}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_LOG_FILE"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsx)(o.td,{children:"Path to the log file. If this option isn't set, logs are written to stdout."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_LOG_RETRIEVER_BUFFER_SIZE"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"10000"})}),(0,s.jsxs)(o.td,{children:["Set the buffer size for log retrieval. Only used if ",(0,s.jsx)(o.code,{children:"LANGFLOW_ENABLE_LOG_RETRIEVAL"})," is enabled."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_MAX_FILE_SIZE_UPLOAD"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"100"})}),(0,s.jsxs)(o.td,{children:["Set the maximum file size for the upload in megabytes. See ",(0,s.jsx)(o.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(o.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_MAX_ITEMS_LENGTH"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"100"})}),(0,s.jsx)(o.td,{children:"Maximum number of items to store and display in the visual editor. Lists longer than this will be truncated when displayed in the visual editor. Doesn't affect data passed between components nor outputs."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_MAX_TEXT_LENGTH"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"1000"})}),(0,s.jsx)(o.td,{children:"Maximum number of characters to store and display in the visual editor. Responses longer than this will be truncated when displayed in the visual editor. Doesn't truncate responses between components nor outputs."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_MCP_SERVER_ENABLED"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsx)(o.td,{children:"If this option is set to False, Langflow doesn't enable the MCP server."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_MCP_SERVER_ENABLE_PROGRESS_NOTIFICATIONS"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsx)(o.td,{children:"If this option is set to True, Langflow sends progress notifications in the MCP server."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsxs)(o.td,{children:["See ",(0,s.jsx)(o.a,{href:"/api-keys-and-authentication#langflow-new-user-is-active",children:(0,s.jsx)(o.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_OPEN_BROWSER"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsx)(o.td,{children:"Open the system web browser on startup."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_PORT"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"7860"})}),(0,s.jsx)(o.td,{children:"The port on which the Langflow server runs. The server automatically selects a free port if the specified port is in use."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_PROMETHEUS_ENABLED"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsx)(o.td,{children:"Expose Prometheus metrics."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_PROMETHEUS_PORT"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"9090"})}),(0,s.jsx)(o.td,{children:"Set the port on which Langflow exposes Prometheus metrics."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_REMOVE_API_KEYS"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsx)(o.td,{children:"Remove API keys from the projects saved in the database."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"False"}),(0,s.jsxs)(o.td,{children:["If false (default), the Langflow database is saved in the ",(0,s.jsx)(o.code,{children:"langflow"})," root directory. This means the database isn't shared between different virtual environments, and the database is deleted when you uninstall Langflow. If true, the database is saved in the ",(0,s.jsx)(o.code,{children:"LANGFLOW_CONFIG_DIR"}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_SECRET_KEY"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Automated"}),(0,s.jsxs)(o.td,{children:["See ",(0,s.jsx)(o.a,{href:"/api-keys-and-authentication#langflow-secret-key",children:(0,s.jsx)(o.code,{children:"LANGFLOW_SECRET_KEY"})}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_STORE"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsx)(o.td,{children:"Whether to enable the Langflow Store features."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsxs)(o.td,{children:["Whether to store environment variables as ",(0,s.jsx)(o.a,{href:"/configuration-global-variables",children:"global variables"})," in the database."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_CREATE_STARTER_PROJECTS"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsxs)(o.td,{children:["Whether to create templates during initialization. If false, Langflow doesn't create templates, and ",(0,s.jsx)(o.code,{children:"LANGFLOW_UPDATE_STARTER_PROJECTS"})," is treated as false."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_UPDATE_STARTER_PROJECTS"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsx)(o.td,{children:"Whether to update templates with the latest component versions when initializing after an upgrade."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_SUPERUSER"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"langflow"})}),(0,s.jsxs)(o.td,{children:["See ",(0,s.jsxs)(o.a,{href:"/api-keys-and-authentication#langflow-superuser",children:[(0,s.jsx)(o.code,{children:"LANGFLOW_SUPERUSER"})," and ",(0,s.jsx)(o.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"langflow"})}),(0,s.jsxs)(o.td,{children:["See ",(0,s.jsxs)(o.a,{href:"/api-keys-and-authentication#langflow-superuser",children:[(0,s.jsx)(o.code,{children:"LANGFLOW_SUPERUSER"})," and ",(0,s.jsx)(o.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsxs)(o.td,{children:["Comma-separated list of environment variables to get from the environment and store as ",(0,s.jsx)(o.a,{href:"/configuration-global-variables",children:"global variables"}),"."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_LOAD_FLOWS_PATH"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsxs)(o.td,{children:["Path to a directory containing flow JSON files to be loaded on startup. Note that this feature only works if ",(0,s.jsx)(o.code,{children:"LANGFLOW_AUTO_LOGIN"})," is enabled."]})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_WORKER_TIMEOUT"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"300"})}),(0,s.jsx)(o.td,{children:"Worker timeout in seconds."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_WORKERS"})}),(0,s.jsx)(o.td,{children:"Integer"}),(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"1"})}),(0,s.jsx)(o.td,{children:"Number of worker processes."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_SSL_CERT_FILE"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsx)(o.td,{children:"Path to the SSL certificate file on the local system."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_SSL_KEY_FILE"})}),(0,s.jsx)(o.td,{children:"String"}),(0,s.jsx)(o.td,{children:"Not set"}),(0,s.jsx)(o.td,{children:"Path to the SSL key file on the local system."})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:(0,s.jsx)(o.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN"})}),(0,s.jsx)(o.td,{children:"Boolean"}),(0,s.jsx)(o.td,{children:"True"}),(0,s.jsxs)(o.td,{children:["See ",(0,s.jsx)(o.a,{href:"/api-keys-and-authentication#langflow-auto-login",children:(0,s.jsx)(o.code,{children:"LANGFLOW_AUTO_LOGIN"})}),"."]})]})]})]}),"\n",(0,s.jsx)(o.h2,{id:"configure-env-overrideconf-and-tasksjson-files",children:"Configure .env, override.conf, and tasks.json files"}),"\n",(0,s.jsx)(o.p,{children:"The following examples show how to configure Langflow using environment variables in different scenarios."}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsxs)(i.A,{value:"env",label:".env file",default:!0,children:[(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:".env"})," file is a text file that contains key-value pairs of environment variables."]}),(0,s.jsxs)(o.p,{children:["Create or edit a ",(0,s.jsx)(o.code,{children:".env"})," file in the root directory of your application or Langflow environment, and then add your configuration variables to the file:"]}),(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",title:'".env"',focus:"",code:{lines:[{tokens:[{content:"DO_NOT_TRACK=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_LOGIN=False",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING_INTERVAL=1000",props:{}}]},{tokens:[{content:"LANGFLOW_BACKEND_ONLY=False",props:{}}]},{tokens:[{content:'LANGFLOW_BUNDLE_URLS=["https://github.com/user/repo/commit/hash"]',props:{}}]},{tokens:[{content:"LANGFLOW_CACHE_TYPE=async",props:{}}]},{tokens:[{content:"LANGFLOW_COMPONENTS_PATH=/path/to/components/",props:{}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR=/path/to/config/",props:{}}]},{tokens:[{content:"LANGFLOW_DATABASE_URL=postgresql://user:password@localhost:5432/langflow",props:{}}]},{tokens:[{content:"LANGFLOW_DEV=False",props:{}}]},{tokens:[{content:"LANGFLOW_FALLBACK_TO_ENV_VAR=False",props:{}}]},{tokens:[{content:"LANGFLOW_HEALTH_CHECK_MAX_RETRIES=5",props:{}}]},{tokens:[{content:"LANGFLOW_HOST=localhost",props:{}}]},{tokens:[{content:"LANGFLOW_LANGCHAIN_CACHE=InMemoryCache",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_FILE_SIZE_UPLOAD=10000",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_ITEMS_LENGTH=100",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_TEXT_LENGTH=1000",props:{}}]},{tokens:[{content:"LANGFLOW_LOG_LEVEL=error",props:{}}]},{tokens:[{content:"LANGFLOW_OPEN_BROWSER=False",props:{}}]},{tokens:[{content:"LANGFLOW_PORT=7860",props:{}}]},{tokens:[{content:"LANGFLOW_REMOVE_API_KEYS=False",props:{}}]},{tokens:[{content:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR=True",props:{}}]},{tokens:[{content:"LANGFLOW_SECRET_KEY=somesecretkey",props:{}}]},{tokens:[{content:"LANGFLOW_STORE=True",props:{}}]},{tokens:[{content:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=True",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER=adminuser",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER_PASSWORD=adminpass",props:{}}]},{tokens:[{content:"LANGFLOW_WORKER_TIMEOUT=60000",props:{}}]},{tokens:[{content:"LANGFLOW_WORKERS=3",props:{}}]}],lang:"text"},annotations:[]}]})]}),(0,s.jsxs)(i.A,{value:"systemd",label:"Systemd service",children:[(0,s.jsx)(o.p,{children:"A systemd service configuration file configures Linux system services."}),(0,s.jsxs)(o.p,{children:["To add environment variables, create or edit a service configuration file and add an ",(0,s.jsx)(o.code,{children:"override.conf"})," file. This file allows you to override the default environment variables for the service."]}),(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",title:'"override.conf"',focus:"",code:{lines:[{tokens:[{content:"[Service]",props:{style:{color:"#FFA657"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"DO_NOT_TRACK=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_AUTO_LOGIN=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_AUTO_SAVING=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_AUTO_SAVING_INTERVAL=1000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_BACKEND_ONLY=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_BUNDLE_URLS=[\\"',props:{style:{color:"#A5D6FF"}}},{content:"https://github.com/user/repo/commit/hash\\",props:{style:{color:"#C9D1D9"}}},{content:'"]"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CACHE_TYPE=async"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_COMPONENTS_PATH=/path/to/components/"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CONFIG_DIR=/path/to/config"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_DATABASE_URL=postgresql://user:password@localhost:5432/langflow"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_DEV=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_FALLBACK_TO_ENV_VAR=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_HEALTH_CHECK_MAX_RETRIES=5"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_HOST=localhost"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LANGCHAIN_CACHE=InMemoryCache"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_MAX_FILE_SIZE_UPLOAD=10000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_MAX_ITEMS_LENGTH=100"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_MAX_TEXT_LENGTH=1000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LOG_ENV=container_json"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LOG_FILE=logs/langflow.log"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LOG_LEVEL=error"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_OPEN_BROWSER=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_PORT=7860"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_REMOVE_API_KEYS=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SAVE_DB_IN_CONFIG_DIR=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SECRET_KEY=somesecretkey"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_STORE=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SUPERUSER=adminuser"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SUPERUSER_PASSWORD=adminpass"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_WORKER_TIMEOUT=60000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_WORKERS=3"',props:{style:{color:"#A5D6FF"}}}]}],lang:"ini"},annotations:[]}]}),(0,s.jsxs)(o.p,{children:["For more information on systemd, see the ",(0,s.jsx)(o.a,{href:"https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/using_systemd_unit_files_to_customize_and_optimize_your_system/assembly_working-with-systemd-unit-files_working-with-systemd",children:"Red Hat documentation"}),"."]})]}),(0,s.jsxs)(i.A,{value:"vscode",label:"VSCode tasks.json",children:[(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:"tasks.json"})," file located in ",(0,s.jsx)(o.code,{children:".vscode/tasks.json"})," is a configuration file for development environments using Visual Studio Code."]}),(0,s.jsxs)(o.p,{children:["Create or edit the ",(0,s.jsx)(o.code,{children:".vscode/tasks.json"})," file in your project root:"]}),(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",title:'".vscode/tasks.json"',focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2.0.0"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "options"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "env"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "DO_NOT_TRACK"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_AUTO_LOGIN"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_AUTO_SAVING"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_AUTO_SAVING_INTERVAL"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_BACKEND_ONLY"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_BUNDLE_URLS"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"[',props:{style:{color:"#A5D6FF"}}},{content:'\\"',props:{style:{color:"#79C0FF"}}},{content:"https://github.com/user/repo/commit/hash",props:{style:{color:"#A5D6FF"}}},{content:'\\"',props:{style:{color:"#79C0FF"}}},{content:']"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_CACHE_TYPE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"async"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_COMPONENTS_PATH"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"D:/path/to/components/"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_CONFIG_DIR"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"D:/path/to/config/"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_DATABASE_URL"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"postgresql://postgres:password@localhost:5432/langflow"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_DEV"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_FALLBACK_TO_ENV_VAR"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_HEALTH_CHECK_MAX_RETRIES"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"5"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_HOST"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"localhost"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LANGCHAIN_CACHE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"InMemoryCache"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_MAX_FILE_SIZE_UPLOAD"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"10000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_MAX_ITEMS_LENGTH"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"100"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_MAX_TEXT_LENGTH"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LOG_ENV"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"container_csv"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LOG_FILE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow.log"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LOG_LEVEL"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"error"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_OPEN_BROWSER"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_PORT"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"7860"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_REMOVE_API_KEYS"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SAVE_DB_IN_CONFIG_DIR"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SECRET_KEY"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"somesecretkey"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_STORE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_STORE_ENVIRONMENT_VARIABLES"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SUPERUSER"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"adminuser"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SUPERUSER_PASSWORD"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"adminpass"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_WORKER_TIMEOUT"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"60000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_WORKERS"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"3"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "tasks"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "label"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow backend"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "type"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"shell"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'". ./langflownightly/Scripts/activate && langflow run"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "isBackground"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "problemMatcher"',props:{style:{color:"#7EE787"}}},{content:": []",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),(0,s.jsxs)(o.p,{children:["To run Langflow using the above VSCode ",(0,s.jsx)(o.code,{children:"tasks.json"})," file, in the VSCode command palette, select ",(0,s.jsx)(o.strong,{children:"Tasks: Run Task"})," > ",(0,s.jsx)(o.strong,{children:"langflow backend"}),"."]})]})]}),"\n",(0,s.jsx)(o.h2,{id:"set-environment-variables-for-langflow-desktop",children:"Set environment variables for Langflow Desktop"}),"\n",(0,s.jsx)(o.p,{children:"Environment variables set in your terminal aren't automatically available to GUI-based applications like Langflow Desktop when you launch them from the Windows or macOS GUI."}),"\n",(0,s.jsx)(o.p,{children:"For Windows, this means any GUI-based app launched from the Start menu, desktop shortcuts, or Windows Explorer."}),"\n",(0,s.jsx)(o.p,{children:"For macOS, this means any GUI-based app launched from Finder, Spotlight, Launchpad, or the Dock."}),"\n",(0,s.jsx)(o.p,{children:"To set environment variables for Langflow Desktop, you need to use specific commands or files, depending on your OS."}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsxs)(i.A,{value:"macos",label:"macOS",default:!0,children:[(0,s.jsxs)(o.p,{children:["Langflow Desktop for macOS cannot automatically use variables set in your terminal, such as those in",(0,s.jsx)(o.code,{children:".zshrc"})," or ",(0,s.jsx)(o.code,{children:".bash_profile"}),", when launched from the macOS GUI."]}),(0,s.jsxs)(o.p,{children:["To make environment variables available to GUI apps on macOS, you need to use ",(0,s.jsx)(o.code,{children:"launchctl"})," with a ",(0,s.jsx)(o.code,{children:"plist"})," file:"]}),(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Create the ",(0,s.jsx)(o.code,{children:"LaunchAgents"})," directory if it doesn't exist:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"mkdir ",props:{style:{color:"#FFA657"}}},{content:"-p ",props:{style:{color:"#79C0FF"}}},{content:"~/Library/LaunchAgents",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In the ",(0,s.jsx)(o.code,{children:"LaunchAgents"})," directory, create a ",(0,s.jsx)(o.code,{children:".plist"})," file called ",(0,s.jsx)(o.code,{children:"dev.langflow.env"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Add the following content to ",(0,s.jsx)(o.code,{children:"dev.langflow.env.plist"}),", and then add, change, or remove Langflow environment variables as needed for your configuration."]}),"\n",(0,s.jsx)(o.p,{children:"This example sets multiple environmental variables for all GUI apps launched from the macOS GUI."}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"xml",props:{style:{color:"#7EE787"}}},{content:" version",props:{style:{color:"#79C0FF"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"1.0"',props:{style:{color:"#A5D6FF"}}},{content:" encoding",props:{style:{color:"#79C0FF"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"UTF-8"',props:{style:{color:"#A5D6FF"}}},{content:"?>",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ',props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"plist ",props:{style:{color:"#7EE787"}}},{content:"version",props:{style:{color:"#79C0FF"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"1.0"',props:{style:{color:"#A5D6FF"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"dict",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">Label",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">dev.langflow.env",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">ProgramArguments",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"array",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">/bin/sh",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">-c",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" launchctl setenv LANGFLOW_CONFIG_DIR /Users/your_user/custom/config ",props:{style:{color:"#C9D1D9"}}},{content:"&&",props:{style:{color:"#FFA198",fontStyle:"italic"}}}]},{tokens:[{content:" launchctl setenv LANGFLOW_PORT 7860 ",props:{style:{color:"#C9D1D9"}}},{content:"&&",props:{style:{color:"#FFA198",fontStyle:"italic"}}}]},{tokens:[{content:" launchctl setenv LANGFLOW_HOST localhost ",props:{style:{color:"#C9D1D9"}}},{content:"&&",props:{style:{color:"#FFA198",fontStyle:"italic"}}}]},{tokens:[{content:" launchctl setenv ARIZE_API_KEY ak-...",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"array",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">RunAtLoad",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#7EE787"}}},{content:"/>",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"dict",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"plist",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]}],lang:"xml"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Load the file with ",(0,s.jsx)(o.code,{children:"launchctl"}),":"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"launchctl ",props:{style:{color:"#FFA657"}}},{content:"load ~/Library/LaunchAgents/dev.langflow.env.plist",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n"]})]}),(0,s.jsxs)(i.A,{value:"windows1",label:"Window System Properties",children:[(0,s.jsxs)(o.p,{children:["Langflow Desktop for Windows cannot automatically use variables set in your terminal, such as those defined with ",(0,s.jsx)(o.code,{children:"set"})," in ",(0,s.jsx)(o.code,{children:"cmd"})," or ",(0,s.jsx)(o.code,{children:"$env:VAR=..."})," in PowerShell, when launched from the Windows GUI."]}),(0,s.jsxs)(o.p,{children:["To make environment variables available to the Langflow Desktop app, you must set them at the user or system level using the ",(0,s.jsx)(o.strong,{children:"System Properties"})," interface or the Terminal."]}),(0,s.jsx)(o.p,{children:"To set environment variables using the System Properties interface, do the following:"}),(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Press ",(0,s.jsx)("kbd",{children:"Win + R"}),", enter ",(0,s.jsx)(o.code,{children:"SystemPropertiesAdvanced"}),", and then press ",(0,s.jsx)("kbd",{children:"Enter"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(o.strong,{children:"Environment Variables"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Under ",(0,s.jsx)(o.strong,{children:"User variables"}),", click ",(0,s.jsx)(o.strong,{children:"New"}),"."]}),"\n",(0,s.jsx)(o.admonition,{type:"tip",children:(0,s.jsxs)(o.p,{children:["To apply the setting to all users, select ",(0,s.jsx)(o.strong,{children:"System variables"}),"."]})}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Enter the name of the Langflow variable you want to set, such as ",(0,s.jsx)(o.code,{children:"LANGFLOW_CONFIG_DIR"}),", and the desired value, such as ",(0,s.jsx)(o.code,{children:"C:\\Users\\your_user\\.langflow_config"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(o.strong,{children:"OK"})," to save the variable."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Repeat until you have set all necessary Langflow environment variables."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Launch or restart Langflow Desktop to apply the environment variables."}),"\n"]}),"\n"]})]}),(0,s.jsxs)(i.A,{value:"windows2",label:"Powershell",children:[(0,s.jsx)(o.p,{children:"To define environment variables for Windows using PowerShell, do the following:"}),(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Enter the name of the Langflow variable you want to set, such as ",(0,s.jsx)(o.code,{children:"LANGFLOW_CONFIG_DIR"}),", and the desired value, such as ",(0,s.jsx)(o.code,{children:"C:\\Users\\your_user\\.langflow_config"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"To set an environment variable for the current user:"}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"System.Environment",props:{style:{color:"#FF7B72"}}},{content:"]::SetEnvironmentVariable(",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CONFIG_DIR"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"C:\\Users\\your_user\\.langflow_config"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"powershell"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"To set an environment variable for all users (you must have Administrator priveleges):"}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"System.Environment",props:{style:{color:"#FF7B72"}}},{content:"]::SetEnvironmentVariable(",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CONFIG_DIR"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"C:\\Langflow\\Config"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"Machine"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"powershell"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Repeat until you have set all necessary Langflow environment variables."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Launch or restart Langflow Desktop to apply the environment variables."}),"\n"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(L,{...e})}):L(e)}function y(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/16ceb5d2.5e136772.js b/assets/js/16ceb5d2.5e136772.js
new file mode 100644
index 0000000000..d6a682ea28
--- /dev/null
+++ b/assets/js/16ceb5d2.5e136772.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1399],{11470:(e,n,o)=>{o.d(n,{A:()=>_});var t=o(96540),s=o(18215),r=o(23104),l=o(56347),c=o(205),i=o(57485),d=o(31682),a=o(70679);function h(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.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 child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:o}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:o,default:t}})=>({value:e,label:n,attributes:o,default:t}))}(o);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 . Every value needs to be unique.`)}(e),e},[n,o])}function x({value:e,tabValues:n}){return n.some(n=>n.value===e)}function j({queryString:e=!1,groupId:n}){const o=(0,l.W6)(),s=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 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)(s),(0,t.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(o.location.search);n.set(s,e),o.replace({...o.location,search:n.toString()})},[s,o])]}function u(e){const{defaultValue:n,queryString:o=!1,groupId:s}=e,r=p(e),[l,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!x({value:e,tabValues:n}))throw new Error(`Docusaurus error: The 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 o=n.find(e=>e.default)??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:n,tabValues:r})),[d,h]=j({queryString:o,groupId:s}),[u,L]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[o,s]=(0,a.Dv)(n);return[o,(0,t.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),y=(()=>{const e=d??u;return x({value:e,tabValues:r})?e:null})();(0,c.A)(()=>{y&&i(y)},[y]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);i(e),h(e),L(e)},[h,L,r]),tabValues:r}}var L=o(92303);const y={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=o(74848);function F({className:e,block:n,selectedValue:o,selectValue:t,tabValues:l}){const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=c.indexOf(n),r=l[s].value;r!==o&&(i(n),t(r))},a=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const o=c.indexOf(e.currentTarget)+1;n=c[o]??c[0];break}case"ArrowLeft":{const o=c.indexOf(e.currentTarget)-1;n=c[o]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:t})=>(0,f.jsx)("li",{role:"tab",tabIndex:o===e?0:-1,"aria-selected":o===e,ref:e=>{c.push(e)},onKeyDown:a,onClick:d,...t,className:(0,s.A)("tabs__item",y.tabItem,t?.className,{"tabs__item--active":o===e}),children:n??e},e))})}function A({lazy:e,children:n,selectedValue:o}){const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===o);return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:r.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==o}))})}function D(e){const n=u(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",y.tabList),children:[(0,f.jsx)(F,{...n,...e}),(0,f.jsx)(A,{...n,...e})]})}function _(e){const n=(0,L.A)();return(0,f.jsx)(D,{...e,children:h(e.children)},String(n))}},19365:(e,n,o)=>{o.d(n,{A:()=>l});o(96540);var t=o(18215);const s={tabItem:"tabItem_Ymn6"};var r=o(74848);function l({children:e,hidden:n,className:o}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,o),hidden:n,children:e})}},28453:(e,n,o)=>{o.d(n,{R:()=>l,x:()=>c});var t=o(96540);const s={},r=t.createContext(s);function l(e){const n=t.useContext(r);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:n},e.children)}},33439:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>x,assets:()=>p,chCodeConfig:()=>j,contentTitle:()=>h,default:()=>y,frontMatter:()=>a,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Configuration/environment-variables","title":"Environment variables","description":"Langflow uses environment variables to configure certain settings.","source":"@site/docs/Configuration/environment-variables.mdx","sourceDirName":"Configuration","slug":"/environment-variables","permalink":"/environment-variables","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Environment variables","slug":"/environment-variables"},"sidebar":"docs","previous":{"title":"Global variables","permalink":"/configuration-global-variables"},"next":{"title":"Manage files","permalink":"/concepts-file-management"}}');var s=o(74848),r=o(28453),l=o(24754),c=o(11470),i=o(19365),d=(o(28774),o(60500));const a={title:"Environment variables",slug:"/environment-variables"},h=void 0,p={},x={annotations:l.hk,Code:l.Cy},j={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[...d.RM,{value:"Precedence",id:"precedence",level:2},{value:"Configure environment variables",id:"configure-environment-variables",level:2},{value:"Set environment variables in your terminal",id:"configure-variables-terminal",level:3},{value:"Import environment variables from a .env file",id:"configure-variables-env-file",level:3},{value:"Supported environment variables",id:"supported-variables",level:2},{value:"Authentication and security",id:"authentication-and-security",level:3},{value:"Caching configuration",id:"caching-configuration",level:3},{value:"Database configuration",id:"database-configuration",level:3},{value:"File and data management",id:"file-and-data-management",level:3},{value:"Flow and project management",id:"flow-and-project-management",level:3},{value:"Global variables and environment variables interaction",id:"global-variables-and-environment-variables-interaction",level:3},{value:"Logging configuration",id:"logging",level:3},{value:"MCP (Model Context Protocol)",id:"mcp",level:3},{value:"Monitoring and metrics",id:"monitoring-and-metrics",level:3},{value:"Other environment variables",id:"other-environment-variables",level:3},{value:"Public flow settings",id:"public-flow-settings",level:3},{value:"Server configuration",id:"server-configuration",level:3},{value:"Telemetry",id:"telemetry",level:3},{value:"Configure .env, override.conf, and tasks.json files",id:"configure-env-overrideconf-and-tasksjson-files",level:2},{value:"Set environment variables for Langflow Desktop",id:"set-environment-variables-for-langflow-desktop",level:2}];function L(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return x||f("CH",!1),x.Code||f("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(n.p,{children:"Langflow uses environment variables to configure certain settings.\nYou can also import environment variables for use in your deployment, such as environment variables used by certain components in your flows."}),"\n",(0,s.jsxs)(n.p,{children:["You can set Langflow environment variables in your terminal, in ",(0,s.jsx)(n.code,{children:".env"}),", and with the ",(0,s.jsx)(n.a,{href:"./configuration-cli",children:"Langflow CLI"}),"."]}),"\n",(0,s.jsx)(d.Ay,{}),"\n",(0,s.jsx)(n.h2,{id:"precedence",children:"Precedence"}),"\n",(0,s.jsx)(n.p,{children:"If an environment variable is set in multiple places, the following hierarchy applies:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Langflow CLI options override all other sources."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:".env"})," file overrides system environment variables."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"System environment variables are used only if not set elsewhere."}),"\n",(0,s.jsxs)(n.p,{children:["When running a Langflow Docker image, the ",(0,s.jsx)(n.code,{children:"-e"})," flag sets system environment variables."]}),"\n",(0,s.jsx)(n.p,{children:"For example:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["If you set ",(0,s.jsx)(n.code,{children:"LANGFLOW_PORT=8080"})," in your system environment and ",(0,s.jsx)(n.code,{children:"LANGFLOW_PORT=7860"})," in ",(0,s.jsx)(n.code,{children:".env"}),", Langflow uses ",(0,s.jsx)(n.code,{children:"7860"})," from ",(0,s.jsx)(n.code,{children:".env"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["If you run ",(0,s.jsx)(n.code,{children:"langflow run --port 9000"})," with ",(0,s.jsx)(n.code,{children:"LANGFLOW_PORT=7860"})," in ",(0,s.jsx)(n.code,{children:".env"}),", Langflow uses ",(0,s.jsx)(n.code,{children:"9000"})," from the CLI option."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"configure-environment-variables",children:"Configure environment variables"}),"\n",(0,s.jsxs)(n.p,{children:["Langflow recognizes ",(0,s.jsx)(n.a,{href:"#supported-variables",children:"supported environment variables"})," from the following sources:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Environment variables that you've set in your terminal."}),"\n",(0,s.jsxs)(n.li,{children:["Environment variables that you've imported from a ",(0,s.jsx)(n.code,{children:".env"})," file when starting Langflow or using the ",(0,s.jsx)(n.code,{children:"--env-file"})," option in the Langflow CLI."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["You can choose to use one or both sources.\nHowever, environment variables imported from a ",(0,s.jsx)(n.code,{children:".env"})," file take ",(0,s.jsx)(n.a,{href:"#precedence",children:"precedence"})," over those set in your terminal."]}),"\n",(0,s.jsx)(n.h3,{id:"configure-variables-terminal",children:"Set environment variables in your terminal"}),"\n",(0,s.jsx)(n.p,{children:"Run the following commands to set environment variables for your current terminal session:"}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsx)(i.A,{value:"linux-macos",label:"Linux or macOS",default:!0,children:(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" VARIABLE_NAME",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"'VALUE'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"windows",label:"Windows",children:(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"set VARIABLE_NAME='VALUE'",props:{}}]}],lang:"text"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"docker",label:"Docker",children:(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:"VARIABLE_NAME='VALUE' ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})})]}),"\n",(0,s.jsxs)(n.p,{children:["When you start Langflow, it looks for environment variables that you've set in your terminal.\nIf it detects a supported environment variable, then it automatically adopts the specified value, subject to ",(0,s.jsx)(n.a,{href:"#precedence",children:"precedence rules"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"configure-variables-env-file",children:"Import environment variables from a .env file"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"If Langflow is running, quit Langflow."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Create a ",(0,s.jsx)(n.code,{children:".env"})," file, and then open it in your preferred editor."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Define ",(0,s.jsx)(n.a,{href:"#supported-variables",children:"Langflow environment variables"})," in the ",(0,s.jsx)(n.code,{children:".env"})," file. For example:"]}),"\n",(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DO_NOT_TRACK=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_LOGIN=False",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING_INTERVAL=1000",props:{}}]},{tokens:[{content:"LANGFLOW_BACKEND_ONLY=False",props:{}}]},{tokens:[{content:'LANGFLOW_BUNDLE_URLS=["https://github.com/user/repo/commit/hash"]',props:{}}]},{tokens:[{content:"LANGFLOW_CACHE_TYPE=async",props:{}}]},{tokens:[{content:"LANGFLOW_COMPONENTS_PATH=/path/to/components/",props:{}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR=/path/to/config/",props:{}}]},{tokens:[{content:"LANGFLOW_DATABASE_URL=postgresql://user:password@localhost:5432/langflow",props:{}}]},{tokens:[{content:"LANGFLOW_DEV=False",props:{}}]},{tokens:[{content:"LANGFLOW_FALLBACK_TO_ENV_VAR=False",props:{}}]},{tokens:[{content:"LANGFLOW_HEALTH_CHECK_MAX_RETRIES=5",props:{}}]},{tokens:[{content:"LANGFLOW_HOST=localhost",props:{}}]},{tokens:[{content:"LANGFLOW_LANGCHAIN_CACHE=InMemoryCache",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_FILE_SIZE_UPLOAD=10000",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_ITEMS_LENGTH=100",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_TEXT_LENGTH=1000",props:{}}]},{tokens:[{content:"LANGFLOW_LOG_LEVEL=error",props:{}}]},{tokens:[{content:"LANGFLOW_OPEN_BROWSER=False",props:{}}]},{tokens:[{content:"LANGFLOW_PORT=7860",props:{}}]},{tokens:[{content:"LANGFLOW_REMOVE_API_KEYS=False",props:{}}]},{tokens:[{content:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR=True",props:{}}]},{tokens:[{content:"LANGFLOW_SECRET_KEY=somesecretkey",props:{}}]},{tokens:[{content:"LANGFLOW_STORE=True",props:{}}]},{tokens:[{content:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=True",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER=adminuser",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER_PASSWORD=adminpass",props:{}}]},{tokens:[{content:"LANGFLOW_WORKER_TIMEOUT=60000",props:{}}]},{tokens:[{content:"LANGFLOW_WORKERS=3",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["For additional examples, see the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:(0,s.jsx)(n.code,{children:".env.example"})})," file in the Langflow repository."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Save and close ",(0,s.jsx)(n.code,{children:".env"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Start Langflow with your ",(0,s.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsx)(i.A,{value:"local",label:"Local",default:!0,children:(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"docker",label:"Docker",children:(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --env-file ",props:{style:{color:"#79C0FF"}}},{content:".env ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})})]}),"\n",(0,s.jsxs)(n.p,{children:["If your ",(0,s.jsx)(n.code,{children:".env"})," file isn't in the same directory, provide the path to your ",(0,s.jsx)(n.code,{children:".env"})," file."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["On startup, Langflow imports the environment variables from your ",(0,s.jsx)(n.code,{children:".env"})," file, as well as any others that you set in your terminal, and then adopts their specified values."]}),"\n",(0,s.jsx)(n.h2,{id:"supported-variables",children:"Supported environment variables"}),"\n",(0,s.jsx)(n.p,{children:"The following tables list the environment variables supported by Langflow."}),"\n",(0,s.jsx)(n.h3,{id:"authentication-and-security",children:"Authentication and security"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsxs)(n.td,{children:["See ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication#authentication-environment-variables",children:"Authentication variables"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsxs)(n.td,{children:["See ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication#authentication-environment-variables",children:"Authentication variables"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_SECRET_KEY"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Automated"}),(0,s.jsxs)(n.td,{children:["See ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication#authentication-environment-variables",children:"Authentication variables"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_SUPERUSER"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"langflow"})}),(0,s.jsxs)(n.td,{children:["See ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication#authentication-environment-variables",children:"Authentication variables"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"langflow"})}),(0,s.jsxs)(n.td,{children:["See ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication#authentication-environment-variables",children:"Authentication variables"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsxs)(n.td,{children:["See ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication#authentication-environment-variables",children:"Authentication variables"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsxs)(n.td,{children:["See ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication#authentication-environment-variables",children:"Authentication variables"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_REMOVE_API_KEYS"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsxs)(n.td,{children:["When ",(0,s.jsx)(n.code,{children:"true"}),", automatically removes API keys and tokens from flow data before saving to the database. Fields that contain ",(0,s.jsx)(n.code,{children:"api"}),", ",(0,s.jsx)(n.code,{children:"key"}),", or ",(0,s.jsx)(n.code,{children:"token"})," in their names AND are marked as password fields will have their values set to ",(0,s.jsx)(n.code,{children:"null"}),". This prevents credentials from being stored in the database."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DISABLE_TRACK_APIKEY_USAGE"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsxs)(n.td,{children:["Whether to track API key usage. If true, disables tracking of API key usage (",(0,s.jsx)(n.code,{children:"total_uses"})," and ",(0,s.jsx)(n.code,{children:"last_used_at"}),") to avoid database contention under high concurrency."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_WEBHOOK_AUTH_ENABLE"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Enable API key authentication for webhook endpoints. If false, webhooks run as flow owner without authentication."})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For detailed information about authentication configuration, see ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication",children:"API keys and authentication"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"caching-configuration",children:"Caching configuration"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_CACHE_TYPE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"async"})}),(0,s.jsxs)(n.td,{children:["Set the cache type for Langflow. Possible values: ",(0,s.jsx)(n.code,{children:"async"}),", ",(0,s.jsx)(n.code,{children:"redis"}),", ",(0,s.jsx)(n.code,{children:"memory"}),", ",(0,s.jsx)(n.code,{children:"disk"}),". If you set the type to ",(0,s.jsx)(n.code,{children:"redis"}),", then you must also set the following environment variables: ",(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_HOST"}),", ",(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_PORT"}),", ",(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_DB"}),", and ",(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_CACHE_EXPIRE"}),". See also ",(0,s.jsx)(n.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(n.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LANGCHAIN_CACHE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"InMemoryCache"})}),(0,s.jsxs)(n.td,{children:["Type of cache storage to use, separate from ",(0,s.jsx)(n.code,{children:"LANGFLOW_CACHE_TYPE"}),". Possible values: ",(0,s.jsx)(n.code,{children:"InMemoryCache"}),", ",(0,s.jsx)(n.code,{children:"SQLiteCache"}),". See ",(0,s.jsx)(n.a,{href:"/memory#configure-cache-memory",children:"Cache configuration"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_HOST"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"localhost"})}),(0,s.jsxs)(n.td,{children:["Redis host for cache. See ",(0,s.jsx)(n.code,{children:"LANGFLOW_CACHE_TYPE"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_PORT"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"6379"})}),(0,s.jsxs)(n.td,{children:["Redis port for cache. See ",(0,s.jsx)(n.code,{children:"LANGFLOW_CACHE_TYPE"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_DB"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"0"})}),(0,s.jsxs)(n.td,{children:["Redis database number for cache. See ",(0,s.jsx)(n.code,{children:"LANGFLOW_CACHE_TYPE"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_PASSWORD"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Password for Redis authentication when using Redis cache type."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_REDIS_CACHE_EXPIRE"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"3600"})}),(0,s.jsxs)(n.td,{children:["Cache expiration time in seconds. See ",(0,s.jsx)(n.code,{children:"LANGFLOW_CACHE_TYPE"}),"."]})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For detailed information about cache configuration, see ",(0,s.jsx)(n.a,{href:"/memory#configure-cache-memory",children:"Memory management options"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"database-configuration",children:"Database configuration"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DATABASE_URL"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["Set the database URL for Langflow. If not provided, Langflow uses a SQLite database. See ",(0,s.jsx)(n.a,{href:"/memory#configure-external-memory",children:"Database configuration"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DATABASE_CONNECTION_RETRY"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Whether to retry lost connections to the Langflow database. If true, Langflow tries to connect to the database again if the connection fails."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DB_CONNECT_TIMEOUT"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"30"})}),(0,s.jsx)(n.td,{children:"The number of seconds to wait before giving up on a lock to be released or establishing a connection to the database."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DB_CONNECTION_SETTINGS"})}),(0,s.jsx)(n.td,{children:"JSON"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["A JSON dictionary to centralize database connection parameters. Example: ",(0,s.jsx)(n.code,{children:'{"pool_size": 20, "max_overflow": 30}'}),". See ",(0,s.jsx)(n.a,{href:"/memory#configure-the-external-database-connection",children:"Database configuration"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DB_POOL_SIZE"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"20"})}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.strong,{children:"DEPRECATED:"})," Use ",(0,s.jsx)(n.code,{children:"LANGFLOW_DB_CONNECTION_SETTINGS"})," instead. The number of connections to keep open in the connection pool."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DB_MAX_OVERFLOW"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"30"})}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.strong,{children:"DEPRECATED:"})," Use ",(0,s.jsx)(n.code,{children:"LANGFLOW_DB_CONNECTION_SETTINGS"})," instead. The number of connections to allow that can be opened beyond the pool size."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsxs)(n.td,{children:["If false (default), the Langflow database is saved in the ",(0,s.jsx)(n.code,{children:"langflow"})," root directory. This means the database isn't shared between different virtual environments, and the database is deleted when you uninstall Langflow. If true, the database is saved in the ",(0,s.jsx)(n.code,{children:"LANGFLOW_CONFIG_DIR"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_USE_NOOP_DATABASE"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"If true, disables all database operations and uses a no-op session. Useful for testing."})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For detailed information about database configuration, see ",(0,s.jsx)(n.a,{href:"/memory",children:"Memory management options"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"file-and-data-management",children:"File and data management"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_CONFIG_DIR"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Varies"}),(0,s.jsxs)(n.td,{children:["Set the Langflow configuration directory where files, logs, and the Langflow database are stored. Default path depends on your installation. See ",(0,s.jsx)(n.a,{href:"/concepts-flows#flow-storage-and-logs",children:"Flow storage and logs"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_COMPONENTS_PATH"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Path to the directory containing custom components."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_FRONTEND_PATH"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"./frontend"})}),(0,s.jsxs)(n.td,{children:["Path to the frontend directory containing build files. This is for development purposes only. See ",(0,s.jsx)(n.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(n.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_FILE_SIZE_UPLOAD"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"100"})}),(0,s.jsxs)(n.td,{children:["Set the maximum file size for the upload in megabytes. See ",(0,s.jsx)(n.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(n.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_ITEMS_LENGTH"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"100"})}),(0,s.jsx)(n.td,{children:"Maximum number of items to store and display in the visual editor. Lists longer than this will be truncated when displayed in the visual editor. Doesn't affect data passed between components nor outputs."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_TEXT_LENGTH"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"1000"})}),(0,s.jsx)(n.td,{children:"Maximum number of characters to store and display in the visual editor. Responses longer than this will be truncated when displayed in the visual editor. Doesn't truncate responses between components nor outputs."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"local"})}),(0,s.jsx)(n.td,{children:"Type of storage to use for file uploads and data."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_TRANSACTIONS_TO_KEEP"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"3000"})}),(0,s.jsx)(n.td,{children:"Maximum number of transactions to keep in the database."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_VERTEX_BUILDS_TO_KEEP"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"3000"})}),(0,s.jsx)(n.td,{children:"Maximum number of vertex builds to keep in the database."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_VERTEX_BUILDS_PER_VERTEX"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"2"})}),(0,s.jsx)(n.td,{children:"Maximum number of builds to keep per vertex. Older builds will be deleted."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"flow-and-project-management",children:"Flow and project management"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_AUTO_SAVING"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsx)(n.td,{children:"Enable flow auto-saving."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_AUTO_SAVING_INTERVAL"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"1000"})}),(0,s.jsx)(n.td,{children:"Set the interval for flow auto-saving in milliseconds."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_BUNDLE_URLS"})}),(0,s.jsx)(n.td,{children:"List[String]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"[]"})}),(0,s.jsx)(n.td,{children:"A list of URLs from which to load component bundles and flows. Supports GitHub URLs. If LANGFLOW_AUTO_LOGIN is enabled, flows from these bundles are loaded into the database."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LOAD_FLOWS_PATH"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["Path to a directory containing flow JSON files to be loaded on startup. Note that this feature only works if ",(0,s.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is enabled."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_CREATE_STARTER_PROJECTS"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsxs)(n.td,{children:["Whether to create templates during initialization. If false, Langflow doesn't create templates, and ",(0,s.jsx)(n.code,{children:"LANGFLOW_UPDATE_STARTER_PROJECTS"})," is treated as false."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_UPDATE_STARTER_PROJECTS"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsx)(n.td,{children:"Whether to update templates with the latest component versions when initializing after an upgrade."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LAZY_LOAD_COMPONENTS"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"If true, Langflow only partially loads components at startup and fully loads them on demand. This significantly reduces startup time but may cause a slight delay when a component is first used."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_EVENT_DELIVERY"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"streaming"})}),(0,s.jsx)(n.td,{children:"How to deliver build events to the frontend. Can be 'polling', 'streaming' or 'direct'."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"global-variables-and-environment-variables-interaction",children:"Global variables and environment variables interaction"}),"\n",(0,s.jsxs)(n.p,{children:["For detailed information about how global and environment variables interact, see ",(0,s.jsx)(n.a,{href:"/configuration-global-variables",children:"Global variables"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"logging",children:"Logging configuration"}),"\n",(0,s.jsxs)(n.p,{children:["For detailed information about logging configuration, including environment variables, see ",(0,s.jsx)(n.a,{href:"/logging#configure-log-options",children:"Configure log options"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"mcp",children:"MCP (Model Context Protocol)"}),"\n",(0,s.jsxs)(n.p,{children:["The following environment variables set behaviors related to your Langflow projects' MCP servers.\nFor detailed information about MCP server configuration, see ",(0,s.jsx)(n.a,{href:"/mcp-server#mcp-server-configuration",children:"Use Langflow as an MCP server"}),"."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MCP_SERVER_ENABLED"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsx)(n.td,{children:"If this option is set to False, Langflow doesn't enable the MCP server."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MCP_SERVER_ENABLE_PROGRESS_NOTIFICATIONS"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"If this option is set to True, Langflow sends progress notifications in the MCP server."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MCP_SERVER_TIMEOUT"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"20"})}),(0,s.jsx)(n.td,{children:"The number of seconds to wait before timing out MCP server operations."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MCP_MAX_SESSIONS_PER_SERVER"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"10"})}),(0,s.jsx)(n.td,{children:"Maximum number of MCP sessions to keep per unique server."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"monitoring-and-metrics",children:"Monitoring and metrics"}),"\n",(0,s.jsxs)(n.p,{children:["For environment variables for specific monitoring service providers, see the Langflow monitoring integration guides, such as ",(0,s.jsx)(n.a,{href:"/integrations-langfuse",children:"Langfuse"}),"."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_PROMETHEUS_ENABLED"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Expose Prometheus metrics."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_PROMETHEUS_PORT"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"9090"})}),(0,s.jsx)(n.td,{children:"Set the port on which Langflow exposes Prometheus metrics."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"other-environment-variables",children:"Other environment variables"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_STORE"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsx)(n.td,{children:"Whether to enable the Langflow Store features."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_STORE_URL"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"https://api.langflow.store"})}),(0,s.jsx)(n.td,{children:"URL for the Langflow Store API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DOWNLOAD_WEBHOOK_URL"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Webhook URL for download events."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LIKE_WEBHOOK_URL"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Webhook URL for like events."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DEV"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Enable development mode."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_DEACTIVATE_TRACING"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Deactivate tracing functionality."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_CELERY_ENABLED"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Enable Celery for distributed task processing."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"public-flow-settings",children:"Public flow settings"}),"\n",(0,s.jsxs)(n.p,{children:["Public flows are flows that are exposed in shared Langflow playgrounds.\nFor detailed information about shared Playground configuration, see ",(0,s.jsx)(n.a,{href:"/concepts-playground#share-a-flows-playground",children:"Share a flow's Playground"}),"."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_PUBLIC_FLOW_CLEANUP_INTERVAL"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"3600"})}),(0,s.jsx)(n.td,{children:"The interval in seconds at which public temporary flows will be cleaned up. Default is 1 hour (3600 seconds). Minimum is 600 seconds (10 minutes)."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_PUBLIC_FLOW_EXPIRATION"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"86400"})}),(0,s.jsx)(n.td,{children:"The time in seconds after which a public temporary flow will be considered expired and eligible for cleanup. Default is 24 hours (86400 seconds). Minimum is 600 seconds (10 minutes)."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"server-configuration",children:"Server configuration"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_HOST"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"localhost"})}),(0,s.jsxs)(n.td,{children:["The host on which the Langflow server will run. See ",(0,s.jsx)(n.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(n.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_PORT"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"7860"})}),(0,s.jsx)(n.td,{children:"The port on which the Langflow server runs. The server automatically selects a free port if the specified port is in use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_BACKEND_ONLY"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Run only the Langflow backend service (no frontend)."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_OPEN_BROWSER"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"False"}),(0,s.jsx)(n.td,{children:"Open the system web browser on startup."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_HEALTH_CHECK_MAX_RETRIES"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"5"})}),(0,s.jsxs)(n.td,{children:["Set the maximum number of retries for the health check. See ",(0,s.jsx)(n.a,{href:"/configuration-cli#langflow-run",children:(0,s.jsx)(n.code,{children:"langflow run"})}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_WORKERS"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"1"})}),(0,s.jsx)(n.td,{children:"Number of worker processes."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_WORKER_TIMEOUT"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"300"})}),(0,s.jsx)(n.td,{children:"Worker timeout in seconds."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_SSL_CERT_FILE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Path to the SSL certificate file on the local system."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_SSL_KEY_FILE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Path to the SSL key file on the local system."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"telemetry",children:"Telemetry"}),"\n",(0,s.jsxs)(n.p,{children:["For telemetry configuration options, see ",(0,s.jsx)(n.a,{href:"/contributing-telemetry",children:"Telemetry"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configure-env-overrideconf-and-tasksjson-files",children:"Configure .env, override.conf, and tasks.json files"}),"\n",(0,s.jsx)(n.p,{children:"The following examples show how to configure Langflow using environment variables in different scenarios."}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsxs)(i.A,{value:"env",label:".env file",default:!0,children:[(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:".env"})," file is a text file that contains key-value pairs of environment variables."]}),(0,s.jsxs)(n.p,{children:["Create or edit a ",(0,s.jsx)(n.code,{children:".env"})," file in the root directory of your application or Langflow environment, and then add your configuration variables to the file:"]}),(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",title:'".env"',focus:"",code:{lines:[{tokens:[{content:"DO_NOT_TRACK=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_LOGIN=False",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING=True",props:{}}]},{tokens:[{content:"LANGFLOW_AUTO_SAVING_INTERVAL=1000",props:{}}]},{tokens:[{content:"LANGFLOW_BACKEND_ONLY=False",props:{}}]},{tokens:[{content:'LANGFLOW_BUNDLE_URLS=["https://github.com/user/repo/commit/hash"]',props:{}}]},{tokens:[{content:"LANGFLOW_CACHE_TYPE=async",props:{}}]},{tokens:[{content:"LANGFLOW_COMPONENTS_PATH=/path/to/components/",props:{}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR=/path/to/config/",props:{}}]},{tokens:[{content:"LANGFLOW_DATABASE_URL=postgresql://user:password@localhost:5432/langflow",props:{}}]},{tokens:[{content:"LANGFLOW_DEV=False",props:{}}]},{tokens:[{content:"LANGFLOW_FALLBACK_TO_ENV_VAR=False",props:{}}]},{tokens:[{content:"LANGFLOW_HEALTH_CHECK_MAX_RETRIES=5",props:{}}]},{tokens:[{content:"LANGFLOW_HOST=localhost",props:{}}]},{tokens:[{content:"LANGFLOW_LANGCHAIN_CACHE=InMemoryCache",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_FILE_SIZE_UPLOAD=10000",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_ITEMS_LENGTH=100",props:{}}]},{tokens:[{content:"LANGFLOW_MAX_TEXT_LENGTH=1000",props:{}}]},{tokens:[{content:"LANGFLOW_LOG_LEVEL=error",props:{}}]},{tokens:[{content:"LANGFLOW_OPEN_BROWSER=False",props:{}}]},{tokens:[{content:"LANGFLOW_PORT=7860",props:{}}]},{tokens:[{content:"LANGFLOW_REMOVE_API_KEYS=False",props:{}}]},{tokens:[{content:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR=True",props:{}}]},{tokens:[{content:"LANGFLOW_SECRET_KEY=somesecretkey",props:{}}]},{tokens:[{content:"LANGFLOW_STORE=True",props:{}}]},{tokens:[{content:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=True",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER=adminuser",props:{}}]},{tokens:[{content:"LANGFLOW_SUPERUSER_PASSWORD=adminpass",props:{}}]},{tokens:[{content:"LANGFLOW_WORKER_TIMEOUT=60000",props:{}}]},{tokens:[{content:"LANGFLOW_WORKERS=3",props:{}}]}],lang:"text"},annotations:[]}]})]}),(0,s.jsxs)(i.A,{value:"systemd",label:"Systemd service",children:[(0,s.jsx)(n.p,{children:"A systemd service configuration file configures Linux system services."}),(0,s.jsxs)(n.p,{children:["To add environment variables, create or edit a service configuration file and add an ",(0,s.jsx)(n.code,{children:"override.conf"})," file. This file allows you to override the default environment variables for the service."]}),(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",title:'"override.conf"',focus:"",code:{lines:[{tokens:[{content:"[Service]",props:{style:{color:"#FFA657"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"DO_NOT_TRACK=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_AUTO_LOGIN=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_AUTO_SAVING=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_AUTO_SAVING_INTERVAL=1000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_BACKEND_ONLY=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_BUNDLE_URLS=[\\"',props:{style:{color:"#A5D6FF"}}},{content:"https://github.com/user/repo/commit/hash\\",props:{style:{color:"#C9D1D9"}}},{content:'"]"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CACHE_TYPE=async"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_COMPONENTS_PATH=/path/to/components/"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CONFIG_DIR=/path/to/config"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_DATABASE_URL=postgresql://user:password@localhost:5432/langflow"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_DEV=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_FALLBACK_TO_ENV_VAR=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_HEALTH_CHECK_MAX_RETRIES=5"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_HOST=localhost"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LANGCHAIN_CACHE=InMemoryCache"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_MAX_FILE_SIZE_UPLOAD=10000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_MAX_ITEMS_LENGTH=100"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_MAX_TEXT_LENGTH=1000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LOG_ENV=container_json"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LOG_FILE=logs/langflow.log"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_LOG_LEVEL=error"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_OPEN_BROWSER=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_PORT=7860"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_REMOVE_API_KEYS=false"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SAVE_DB_IN_CONFIG_DIR=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SECRET_KEY=somesecretkey"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_STORE=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=true"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SUPERUSER=adminuser"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_SUPERUSER_PASSWORD=adminpass"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_WORKER_TIMEOUT=60000"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"Environment",props:{style:{color:"#FF7B72"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_WORKERS=3"',props:{style:{color:"#A5D6FF"}}}]}],lang:"ini"},annotations:[]}]}),(0,s.jsxs)(n.p,{children:["For more information on systemd, see the ",(0,s.jsx)(n.a,{href:"https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/using_systemd_unit_files_to_customize_and_optimize_your_system/assembly_working-with-systemd-unit-files_working-with-systemd",children:"Red Hat documentation"}),"."]})]}),(0,s.jsxs)(i.A,{value:"vscode",label:"VSCode tasks.json",children:[(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"tasks.json"})," file located in ",(0,s.jsx)(n.code,{children:".vscode/tasks.json"})," is a configuration file for development environments using Visual Studio Code."]}),(0,s.jsxs)(n.p,{children:["Create or edit the ",(0,s.jsx)(n.code,{children:".vscode/tasks.json"})," file in your project root:"]}),(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",title:'".vscode/tasks.json"',focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2.0.0"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "options"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "env"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "DO_NOT_TRACK"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_AUTO_LOGIN"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_AUTO_SAVING"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_AUTO_SAVING_INTERVAL"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_BACKEND_ONLY"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_BUNDLE_URLS"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"[',props:{style:{color:"#A5D6FF"}}},{content:'\\"',props:{style:{color:"#79C0FF"}}},{content:"https://github.com/user/repo/commit/hash",props:{style:{color:"#A5D6FF"}}},{content:'\\"',props:{style:{color:"#79C0FF"}}},{content:']"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_CACHE_TYPE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"async"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_COMPONENTS_PATH"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"D:/path/to/components/"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_CONFIG_DIR"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"D:/path/to/config/"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_DATABASE_URL"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"postgresql://postgres:password@localhost:5432/langflow"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_DEV"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_FALLBACK_TO_ENV_VAR"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_HEALTH_CHECK_MAX_RETRIES"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"5"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_HOST"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"localhost"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LANGCHAIN_CACHE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"InMemoryCache"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_MAX_FILE_SIZE_UPLOAD"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"10000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_MAX_ITEMS_LENGTH"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"100"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_MAX_TEXT_LENGTH"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LOG_ENV"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"container_csv"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LOG_FILE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow.log"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_LOG_LEVEL"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"error"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_OPEN_BROWSER"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_PORT"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"7860"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_REMOVE_API_KEYS"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SAVE_DB_IN_CONFIG_DIR"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"false"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SECRET_KEY"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"somesecretkey"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_STORE"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_STORE_ENVIRONMENT_VARIABLES"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"true"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SUPERUSER"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"adminuser"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_SUPERUSER_PASSWORD"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"adminpass"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_WORKER_TIMEOUT"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"60000"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "LANGFLOW_WORKERS"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"3"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "tasks"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "label"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow backend"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "type"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"shell"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'". ./langflownightly/Scripts/activate && langflow run"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "isBackground"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "problemMatcher"',props:{style:{color:"#7EE787"}}},{content:": []",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),(0,s.jsxs)(n.p,{children:["To run Langflow using the above VSCode ",(0,s.jsx)(n.code,{children:"tasks.json"})," file, in the VSCode command palette, select ",(0,s.jsx)(n.strong,{children:"Tasks: Run Task"})," > ",(0,s.jsx)(n.strong,{children:"langflow backend"}),"."]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"set-environment-variables-for-langflow-desktop",children:"Set environment variables for Langflow Desktop"}),"\n",(0,s.jsx)(n.p,{children:"Environment variables set in your terminal aren't automatically available to GUI-based applications like Langflow Desktop when you launch them from the Windows or macOS GUI."}),"\n",(0,s.jsx)(n.p,{children:"For Windows, this means any GUI-based app launched from the Start menu, desktop shortcuts, or Windows Explorer."}),"\n",(0,s.jsx)(n.p,{children:"For macOS, this means any GUI-based app launched from Finder, Spotlight, Launchpad, or the Dock."}),"\n",(0,s.jsx)(n.p,{children:"To set environment variables for Langflow Desktop, you need to use specific commands or files, depending on your OS."}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsxs)(i.A,{value:"macos",label:"macOS",default:!0,children:[(0,s.jsxs)(n.p,{children:["Langflow Desktop for macOS cannot automatically use variables set in your terminal, such as those in",(0,s.jsx)(n.code,{children:".zshrc"})," or ",(0,s.jsx)(n.code,{children:".bash_profile"}),", when launched from the macOS GUI."]}),(0,s.jsxs)(n.p,{children:["To make environment variables available to GUI apps on macOS, you need to use ",(0,s.jsx)(n.code,{children:"launchctl"})," with a ",(0,s.jsx)(n.code,{children:"plist"})," file:"]}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Create the ",(0,s.jsx)(n.code,{children:"LaunchAgents"})," directory if it doesn't exist:"]}),"\n",(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"mkdir ",props:{style:{color:"#FFA657"}}},{content:"-p ",props:{style:{color:"#79C0FF"}}},{content:"~/Library/LaunchAgents",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.code,{children:"LaunchAgents"})," directory, create a ",(0,s.jsx)(n.code,{children:".plist"})," file called ",(0,s.jsx)(n.code,{children:"dev.langflow.env"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add the following content to ",(0,s.jsx)(n.code,{children:"dev.langflow.env.plist"}),", and then add, change, or remove Langflow environment variables as needed for your configuration."]}),"\n",(0,s.jsx)(n.p,{children:"This example sets multiple environmental variables for all GUI apps launched from the macOS GUI."}),"\n",(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"xml",props:{style:{color:"#7EE787"}}},{content:" version",props:{style:{color:"#79C0FF"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"1.0"',props:{style:{color:"#A5D6FF"}}},{content:" encoding",props:{style:{color:"#79C0FF"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"UTF-8"',props:{style:{color:"#A5D6FF"}}},{content:"?>",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ',props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"plist ",props:{style:{color:"#7EE787"}}},{content:"version",props:{style:{color:"#79C0FF"}}},{content:"=",props:{style:{color:"#C9D1D9"}}},{content:'"1.0"',props:{style:{color:"#A5D6FF"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"dict",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">Label",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">dev.langflow.env",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">ProgramArguments",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"array",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">/bin/sh",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">-c",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" launchctl setenv LANGFLOW_CONFIG_DIR /Users/your_user/custom/config ",props:{style:{color:"#C9D1D9"}}},{content:"&&",props:{style:{color:"#FFA198",fontStyle:"italic"}}}]},{tokens:[{content:" launchctl setenv LANGFLOW_PORT 7860 ",props:{style:{color:"#C9D1D9"}}},{content:"&&",props:{style:{color:"#FFA198",fontStyle:"italic"}}}]},{tokens:[{content:" launchctl setenv LANGFLOW_HOST localhost ",props:{style:{color:"#C9D1D9"}}},{content:"&&",props:{style:{color:"#FFA198",fontStyle:"italic"}}}]},{tokens:[{content:" launchctl setenv ARIZE_API_KEY ak-...",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"string",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"array",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">RunAtLoad",props:{style:{color:"#C9D1D9"}}},{content:"key",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" <",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#7EE787"}}},{content:"/>",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"dict",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ",props:{style:{color:"#C9D1D9"}}},{content:"plist",props:{style:{color:"#7EE787"}}},{content:">",props:{style:{color:"#C9D1D9"}}}]}],lang:"xml"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Load the file with ",(0,s.jsx)(n.code,{children:"launchctl"}),":"]}),"\n",(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"launchctl ",props:{style:{color:"#FFA657"}}},{content:"load ~/Library/LaunchAgents/dev.langflow.env.plist",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n"]})]}),(0,s.jsxs)(i.A,{value:"windows1",label:"Window System Properties",children:[(0,s.jsxs)(n.p,{children:["Langflow Desktop for Windows cannot automatically use variables set in your terminal, such as those defined with ",(0,s.jsx)(n.code,{children:"set"})," in ",(0,s.jsx)(n.code,{children:"cmd"})," or ",(0,s.jsx)(n.code,{children:"$env:VAR=..."})," in PowerShell, when launched from the Windows GUI."]}),(0,s.jsxs)(n.p,{children:["To make environment variables available to the Langflow Desktop app, you must set them at the user or system level using the ",(0,s.jsx)(n.strong,{children:"System Properties"})," interface or the Terminal."]}),(0,s.jsx)(n.p,{children:"To set environment variables using the System Properties interface, do the following:"}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Press ",(0,s.jsx)("kbd",{children:"Win + R"}),", enter ",(0,s.jsx)(n.code,{children:"SystemPropertiesAdvanced"}),", and then press ",(0,s.jsx)("kbd",{children:"Enter"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Environment Variables"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Under ",(0,s.jsx)(n.strong,{children:"User variables"}),", click ",(0,s.jsx)(n.strong,{children:"New"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To apply the setting to all users, select ",(0,s.jsx)(n.strong,{children:"System variables"}),"."]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Enter the name of the Langflow variable you want to set, such as ",(0,s.jsx)(n.code,{children:"LANGFLOW_CONFIG_DIR"}),", and the desired value, such as ",(0,s.jsx)(n.code,{children:"C:\\Users\\your_user\\.langflow_config"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"OK"})," to save the variable."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Repeat until you have set all necessary Langflow environment variables."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Launch or restart Langflow Desktop to apply the environment variables."}),"\n"]}),"\n"]})]}),(0,s.jsxs)(i.A,{value:"windows2",label:"Powershell",children:[(0,s.jsx)(n.p,{children:"To define environment variables for Windows using PowerShell, do the following:"}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Enter the name of the Langflow variable you want to set, such as ",(0,s.jsx)(n.code,{children:"LANGFLOW_CONFIG_DIR"}),", and the desired value, such as ",(0,s.jsx)(n.code,{children:"C:\\Users\\your_user\\.langflow_config"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"To set an environment variable for the current user:"}),"\n",(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"System.Environment",props:{style:{color:"#FF7B72"}}},{content:"]::SetEnvironmentVariable(",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CONFIG_DIR"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"C:\\Users\\your_user\\.langflow_config"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"powershell"},annotations:[]}]}),"\n",(0,s.jsx)(n.p,{children:"To set an environment variable for all users (you must have Administrator priveleges):"}),"\n",(0,s.jsx)(x.Code,{codeConfig:j,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"System.Environment",props:{style:{color:"#FF7B72"}}},{content:"]::SetEnvironmentVariable(",props:{style:{color:"#C9D1D9"}}},{content:'"LANGFLOW_CONFIG_DIR"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"C:\\Langflow\\Config"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#FF7B72"}}},{content:'"Machine"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"powershell"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Repeat until you have set all necessary Langflow environment variables."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Launch or restart Langflow Desktop to apply the environment variables."}),"\n"]}),"\n"]})]})]})]})}function y(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(L,{...e})}):L(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},60500:(e,n,o)=>{o.d(n,{Ay:()=>c,RM:()=>r});var t=o(74848),s=o(28453);const r=[];function l(e){const n={a:"a",code:"code",p:"p",...(0,s.R)(),...e.components},{Details:o}=n;return o||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)(o,{children:[(0,t.jsx)("summary",{children:"Environment variables versus global variables"}),(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"/environment-variables",children:"Environment variables"})," like ",(0,t.jsx)(n.code,{children:"LANGFLOW_PORT"})," or ",(0,t.jsx)(n.code,{children:"LANGFLOW_LOG_LEVEL"})," configure how Langflow runs, while ",(0,t.jsx)(n.a,{href:"/configuration-global-variables",children:"global variables"})," are user-defined values stored in Langflow's database for reuse across flows, like ",(0,t.jsx)(n.code,{children:"OPENAI_API_KEY"}),"."]}),(0,t.jsxs)(n.p,{children:["Some environment variables are automatically converted to global variables when Langflow starts. For more information, see ",(0,t.jsx)(n.a,{href:"/configuration-global-variables#default-environment-variables",children:"Default environment variables"}),"."]}),(0,t.jsxs)(n.p,{children:["To add custom global variables, see ",(0,t.jsx)(n.a,{href:"/configuration-global-variables#add-custom-global-variables-from-the-environment",children:"Add custom global variables from the environment"}),"."]})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/2ab0d4f5.10c9b2f6.js b/assets/js/2ab0d4f5.4e475696.js
similarity index 50%
rename from assets/js/2ab0d4f5.10c9b2f6.js
rename to assets/js/2ab0d4f5.4e475696.js
index 6d306e5b12..3d7f8244e7 100644
--- a/assets/js/2ab0d4f5.10c9b2f6.js
+++ b/assets/js/2ab0d4f5.4e475696.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1845],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.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(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}},83640:(e,n,t)=>{t.r(n),t.d(n,{contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"type":"api","id":"simplified-run-flow","title":"Simplified Run Flow","description":"","slug":"/simplified-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","operationId":"simplified_run_flow_api_v1_run__flow_id_or_name__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id_or_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Id Or Name"}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stream"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value","description":"The input value"},"input_type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Input Type","description":"The input type","default":"chat"},"output_type":{"anyOf":[{"type":"string","enum":["chat","text","any","debug"]},{"type":"null"}],"title":"Output Type","description":"The output type","default":"chat"},"output_component":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Component","description":"If there are multiple output components, you can specify the component to get the output from.","default":""},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}],"description":"The tweaks"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"The session id"}},"type":"object","title":"SimplifiedAPIRequest"},{"type":"null"}],"title":"Input Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/{flow_id_or_name}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"info":{"title":"Langflow","version":"1.5.1"},"postman":{"name":"Simplified Run Flow","description":{"content":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","type":"text/plain"},"url":{"path":["api","v1","run",":flow_id_or_name"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"stream","value":"false"},{"disabled":false,"key":"user_id","value":""}],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id_or_name"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"input_value\\": \\"\\",\\n \\"input_type\\": \\"\\",\\n \\"output_type\\": \\"\\",\\n \\"output_component\\": \\"\\",\\n \\"tweaks\\": {\\n \\"ullamco_e\\": \\"\\",\\n \\"quis100\\": \\"\\",\\n \\"adipisicing_9\\": \\"\\",\\n \\"utd\\": \\"\\"\\n },\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/simplified-run-flow","previous":{"title":"Get All","permalink":"/api/get-all"},"next":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"}}');var s=t(74848),r=t(28453);const a={},o="Simplified Run Flow",l=[];function d(e){const n={h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"simplified-run-flow",children:"Simplified Run Flow"})}),"\n",(0,s.jsx)(n.p,{children:"Executes a specified flow by ID with support for streaming and telemetry."}),"\n",(0,s.jsx)(n.p,{children:"This endpoint executes a flow identified by ID or name, with options for streaming the response\nand tracking execution metrics. It handles both streaming and non-streaming execution modes."}),"\n",(0,s.jsx)(n.p,{children:"Args:\nbackground_tasks (BackgroundTasks): FastAPI background task manager\nflow (FlowRead | None): The flow to execute, loaded via dependency\ninput_request (SimplifiedAPIRequest | None): Input parameters for the flow\nstream (bool): Whether to stream the response\napi_key_user (UserRead): Authenticated user from API key\nrequest (Request): The incoming HTTP request"}),"\n",(0,s.jsx)(n.p,{children:"Returns:\nUnion[StreamingResponse, RunResponse]: Either a streaming response for real-time results\nor a RunResponse with the complete execution results"}),"\n",(0,s.jsx)(n.p,{children:"Raises:\nHTTPException: For flow not found (404) or invalid input (400)\nAPIException: For internal execution errors (500)"}),"\n",(0,s.jsx)(n.p,{children:"Notes:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Supports both streaming and non-streaming execution modes"}),"\n",(0,s.jsx)(n.li,{children:"Tracks execution time and success/failure via telemetry"}),"\n",(0,s.jsx)(n.li,{children:"Handles graceful client disconnection in streaming mode"}),"\n",(0,s.jsx)(n.li,{children:"Provides detailed error handling with appropriate HTTP status codes"}),"\n",(0,s.jsxs)(n.li,{children:["In streaming mode, uses EventManager to handle events:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'"add_message": New messages during execution'}),"\n",(0,s.jsx)(n.li,{children:'"token": Individual tokens during streaming'}),"\n",(0,s.jsx)(n.li,{children:'"end": Final execution result'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"flow_id_or_name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Flow Id Or Name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Query Parameters"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"stream"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"user_id"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" User Id"})]})})]})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Request Body "}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"200"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Successful Response"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]})})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"422"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Validation Error"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"detail"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"loc"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"msg"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"type"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1845],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.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(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}},83640:(e,n,t)=>{t.r(n),t.d(n,{contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"type":"api","id":"simplified-run-flow","title":"Simplified Run Flow","description":"","slug":"/simplified-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","operationId":"simplified_run_flow_api_v1_run__flow_id_or_name__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id_or_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Id Or Name"}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stream"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value","description":"The input value"},"input_type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Input Type","description":"The input type","default":"chat"},"output_type":{"anyOf":[{"type":"string","enum":["chat","text","any","debug"]},{"type":"null"}],"title":"Output Type","description":"The output type","default":"chat"},"output_component":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Component","description":"If there are multiple output components, you can specify the component to get the output from.","default":""},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}],"description":"The tweaks"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"The session id"}},"type":"object","title":"SimplifiedAPIRequest"},{"type":"null"}],"title":"Input Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/{flow_id_or_name}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"info":{"title":"Langflow","version":"1.5.1"},"postman":{"name":"Simplified Run Flow","description":{"content":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","type":"text/plain"},"url":{"path":["api","v1","run",":flow_id_or_name"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"stream","value":"false"},{"disabled":false,"key":"user_id","value":""}],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id_or_name"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"input_value\\": \\"\\",\\n \\"input_type\\": \\"\\",\\n \\"output_type\\": \\"\\",\\n \\"output_component\\": \\"\\",\\n \\"tweaks\\": {\\n \\"minim_b\\": \\"\\",\\n \\"occaecat2e\\": \\"\\",\\n \\"ea0\\": \\"\\",\\n \\"deseruntf\\": \\"\\"\\n },\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/simplified-run-flow","previous":{"title":"Get All","permalink":"/api/get-all"},"next":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"}}');var s=t(74848),r=t(28453);const a={},o="Simplified Run Flow",l=[];function d(e){const n={h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"simplified-run-flow",children:"Simplified Run Flow"})}),"\n",(0,s.jsx)(n.p,{children:"Executes a specified flow by ID with support for streaming and telemetry."}),"\n",(0,s.jsx)(n.p,{children:"This endpoint executes a flow identified by ID or name, with options for streaming the response\nand tracking execution metrics. It handles both streaming and non-streaming execution modes."}),"\n",(0,s.jsx)(n.p,{children:"Args:\nbackground_tasks (BackgroundTasks): FastAPI background task manager\nflow (FlowRead | None): The flow to execute, loaded via dependency\ninput_request (SimplifiedAPIRequest | None): Input parameters for the flow\nstream (bool): Whether to stream the response\napi_key_user (UserRead): Authenticated user from API key\nrequest (Request): The incoming HTTP request"}),"\n",(0,s.jsx)(n.p,{children:"Returns:\nUnion[StreamingResponse, RunResponse]: Either a streaming response for real-time results\nor a RunResponse with the complete execution results"}),"\n",(0,s.jsx)(n.p,{children:"Raises:\nHTTPException: For flow not found (404) or invalid input (400)\nAPIException: For internal execution errors (500)"}),"\n",(0,s.jsx)(n.p,{children:"Notes:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Supports both streaming and non-streaming execution modes"}),"\n",(0,s.jsx)(n.li,{children:"Tracks execution time and success/failure via telemetry"}),"\n",(0,s.jsx)(n.li,{children:"Handles graceful client disconnection in streaming mode"}),"\n",(0,s.jsx)(n.li,{children:"Provides detailed error handling with appropriate HTTP status codes"}),"\n",(0,s.jsxs)(n.li,{children:["In streaming mode, uses EventManager to handle events:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'"add_message": New messages during execution'}),"\n",(0,s.jsx)(n.li,{children:'"token": Individual tokens during streaming'}),"\n",(0,s.jsx)(n.li,{children:'"end": Final execution result'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"flow_id_or_name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Flow Id Or Name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Query Parameters"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"stream"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"user_id"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" User Id"})]})})]})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Request Body "}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"200"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Successful Response"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]})})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"422"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Validation Error"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"detail"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"loc"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"msg"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"type"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/56350599.2c78f81a.js b/assets/js/56350599.2c78f81a.js
deleted file mode 100644
index 2a5818f8c7..0000000000
--- a/assets/js/56350599.2c78f81a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8593],{11470:(e,n,o)=>{o.d(n,{A:()=>L});var t=o(96540),s=o(18215),r=o(23104),l=o(56347),i=o(205),a=o(57485),c=o(31682),d=o(70679);function u(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.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 child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:o}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return u(e).map(({props:{value:e,label:n,attributes:o,default:t}})=>({value:e,label:n,attributes:o,default:t}))}(o);return function(e){const n=(0,c.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 . Every value needs to be unique.`)}(e),e},[n,o])}function g({value:e,tabValues:n}){return n.some(n=>n.value===e)}function p({queryString:e=!1,groupId:n}){const o=(0,l.W6)(),s=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 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,a.aZ)(s),(0,t.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(o.location.search);n.set(s,e),o.replace({...o.location,search:n.toString()})},[s,o])]}function f(e){const{defaultValue:n,queryString:o=!1,groupId:s}=e,r=h(e),[l,a]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!g({value:e,tabValues:n}))throw new Error(`Docusaurus error: The 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 o=n.find(e=>e.default)??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:n,tabValues:r})),[c,u]=p({queryString:o,groupId:s}),[f,m]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[o,s]=(0,d.Dv)(n);return[o,(0,t.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),x=(()=>{const e=c??f;return g({value:e,tabValues:r})?e:null})();(0,i.A)(()=>{x&&a(x)},[x]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!g({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),m(e)},[u,m,r]),tabValues:r}}var m=o(92303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=o(74848);function b({className:e,block:n,selectedValue:o,selectValue:t,tabValues:l}){const i=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=i.indexOf(n),r=l[s].value;r!==o&&(a(n),t(r))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const o=i.indexOf(e.currentTarget)+1;n=i[o]??i[0];break}case"ArrowLeft":{const o=i.indexOf(e.currentTarget)-1;n=i[o]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:t})=>(0,j.jsx)("li",{role:"tab",tabIndex:o===e?0:-1,"aria-selected":o===e,ref:e=>{i.push(e)},onKeyDown:d,onClick:c,...t,className:(0,s.A)("tabs__item",x.tabItem,t?.className,{"tabs__item--active":o===e}),children:n??e},e))})}function v({lazy:e,children:n,selectedValue:o}){const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===o);return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:r.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==o}))})}function w(e){const n=f(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function L(e){const n=(0,m.A)();return(0,j.jsx)(w,{...e,children:u(e.children)},String(n))}},17886:(e,n,o)=>{o.d(n,{A:()=>r});o(96540);var t=o(64058),s=o(74848);function r({name:e,...n}){const o=t[e];return o?(0,s.jsx)(o,{...n}):null}},19365:(e,n,o)=>{o.d(n,{A:()=>l});o(96540);var t=o(18215);const s={tabItem:"tabItem_Ymn6"};var r=o(74848);function l({children:e,hidden:n,className:o}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,o),hidden:n,children:e})}},77232:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/logs-cc30f076e63a5e443cf04855559703a3.png"},88262:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>g,assets:()=>h,chCodeConfig:()=>p,contentTitle:()=>u,default:()=>x,frontMatter:()=>d,metadata:()=>t,toc:()=>f});const t=JSON.parse('{"id":"Develop/logging","title":"Logs","description":"This page provides information about Langflow logs, including logs for individual flows and the Langflow application itself.","source":"@site/docs/Develop/logging.mdx","sourceDirName":"Develop","slug":"/logging","permalink":"/logging","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Logs","slug":"/logging"},"sidebar":"docs","previous":{"title":"Database guide for enterprise administrators","permalink":"/enterprise-database-guide"},"next":{"title":"Arize","permalink":"/integrations-arize"}}');var s=o(74848),r=o(28453),l=o(24754),i=o(17886),a=o(11470),c=o(19365);const d={title:"Logs",slug:"/logging"},u=void 0,h={},g={annotations:l.hk,Code:l.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},f=[{value:"Log storage",id:"log-storage",level:2},{value:"Configure log options",id:"configure-log-options",level:2},{value:"Flow and component logs",id:"flow-and-component-logs",level:2},{value:"View flow logs",id:"view-flow-logs",level:3},{value:"View chat logs",id:"view-chat-logs",level:3},{value:"View output from a single component",id:"view-output-from-a-single-component",level:3},{value:"Access Langflow Desktop logs",id:"desktop-logs",level:2},{value:"See also",id:"see-also",level:2}];function m(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return g||j("CH",!1),g.Code||j("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(n.p,{children:"This page provides information about Langflow logs, including logs for individual flows and the Langflow application itself."}),"\n",(0,s.jsxs)(n.p,{children:["Langflow uses the ",(0,s.jsx)(n.code,{children:"loguru"})," library for logging."]}),"\n",(0,s.jsxs)(n.p,{children:["The default logfile is named ",(0,s.jsx)(n.code,{children:"langflow.log"}),".\nLangflow also produces logfiles for flows."]}),"\n",(0,s.jsx)(n.h2,{id:"log-storage",children:"Log storage"}),"\n",(0,s.jsx)(n.p,{children:"The default logfile storage location depends on your operating system:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"macOS Desktop"}),":",(0,s.jsx)(n.code,{children:"/Users//.langflow/cache"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Windows Desktop"}),":",(0,s.jsx)(n.code,{children:"C:\\Users\\\\AppData\\Roaming\\com.Langflow\\cache"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsxs)(n.strong,{children:["OSS macOS/Windows/Linux/WSL (",(0,s.jsx)(n.code,{children:"uv pip install"}),")"]}),": ",(0,s.jsx)(n.code,{children:"/lib/python3.12/site-packages/langflow/cache"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsxs)(n.strong,{children:["OSS macOS/Windows/Linux/WSL (",(0,s.jsx)(n.code,{children:"git clone"}),")"]}),": ",(0,s.jsx)(n.code,{children:"/src/backend/base/langflow/cache"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To customize log storage, see ",(0,s.jsx)(n.a,{href:"#configure-log-options",children:"Configure log options"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configure-log-options",children:"Configure log options"}),"\n",(0,s.jsxs)(n.p,{children:["Use ",(0,s.jsx)(n.a,{href:"/environment-variables",children:"Langflow environment variables"})," to configure logging options in your Langflow ",(0,s.jsx)(n.code,{children:".env"})," file, and then start Langflow with ",(0,s.jsx)(n.code,{children:"uv run langflow run --env-file .env"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"The following environment variables are available to configure logging:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_LEVEL"}),": Sets the log level as one of ",(0,s.jsx)(n.code,{children:"DEBUG"}),", ",(0,s.jsx)(n.code,{children:"ERROR"})," (default), ",(0,s.jsx)(n.code,{children:"INFO"}),", ",(0,s.jsx)(n.code,{children:"WARNING"}),", and ",(0,s.jsx)(n.code,{children:"CRITICAL"}),". For example, ",(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_LEVEL=DEBUG"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_FILE"}),": Sets the log file storage location if you want to use a non-default location.\nFor example, ",(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_FILE=path/to/logfile.log"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_ENV"}),": Controls log output and formatting."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_ENV=container"}),": Outputs serialized JSON to stdout."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_ENV=container_csv"}),": Outputs CSV-formatted plain text to stdout."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_ENV=default"})," or unset: Outputs prettified output with ",(0,s.jsx)(n.a,{href:"https://rich.readthedocs.io/en/stable/reference/logging.html",children:"RichHandler"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_ROTATION"})," controls when the log file is rotated, either based on time or file size. By default, logs are rotated every 1 day."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'Time-based rotation: "1 day", "12 hours", "1 week"'}),"\n",(0,s.jsx)(n.li,{children:'Size-based rotation: "10 MB", "1 GB"'}),"\n",(0,s.jsx)(n.li,{children:'Disable rotation: "None" (log files will grow without limit)'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["A complete example ",(0,s.jsx)(n.code,{children:".env"})," file is available in the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:"Langflow repository"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"flow-and-component-logs",children:"Flow and component logs"}),"\n",(0,s.jsxs)(n.p,{children:["After you run a flow, you can inspect the logs for the each component and flow run.\nFor example, you can inspect ",(0,s.jsx)(n.code,{children:"Message"})," objects ingested and generated by ",(0,s.jsxs)(n.a,{href:"/components-io",children:[(0,s.jsx)(n.strong,{children:"Input and Output"})," components"]}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"view-flow-logs",children:"View flow logs"}),"\n",(0,s.jsxs)(n.p,{children:["In the visual editor, click ",(0,s.jsx)(n.strong,{children:"Logs"})," to view logs for the entire flow:"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Logs pane",src:o(77232).A+"",width:"4000",height:"2180"})}),"\n",(0,s.jsxs)(n.p,{children:["Then, click the cells in the ",(0,s.jsx)(n.strong,{children:"inputs"})," and ",(0,s.jsx)(n.strong,{children:"outputs"})," columns to inspect the ",(0,s.jsx)(n.code,{children:"Message"})," objects.\nFor example, the following ",(0,s.jsx)(n.code,{children:"Message"})," data could be the output from a ",(0,s.jsx)(n.strong,{children:"Chat Input"})," component:"]}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:' "messages": [',props:{}}]},{tokens:[{content:" {",props:{}}]},{tokens:[{content:' "message": "What\'s the recommended way to install Docker on Mac M1?",',props:{}}]},{tokens:[{content:' "sender": "User",',props:{}}]},{tokens:[{content:' "sender_name": "User",',props:{}}]},{tokens:[{content:' "session_id": "Session Apr 21, 17:37:04",',props:{}}]},{tokens:[{content:' "stream_url": null,',props:{}}]},{tokens:[{content:' "component_id": "ChatInput-4WKag",',props:{}}]},{tokens:[{content:' "files": [],',props:{}}]},{tokens:[{content:' "type": "text"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:" ],",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["In the case of Input/Output components, the original input might not be structured as a ",(0,s.jsx)(n.code,{children:"Message"})," object.\nFor example, a ",(0,s.jsx)(n.strong,{children:"Language Model"})," component might pass a raw text response to a ",(0,s.jsx)(n.strong,{children:"Chat Output"})," component that is then transformed into a ",(0,s.jsx)(n.code,{children:"Message"})," object."]}),"\n",(0,s.jsxs)(n.p,{children:["You can find ",(0,s.jsx)(n.code,{children:".log"})," files for flows at your Langflow installation's log storage location.\nFor filepaths, see ",(0,s.jsx)(n.a,{href:"#log-storage",children:"Log storage"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"view-chat-logs",children:"View chat logs"}),"\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.strong,{children:"Playground"}),", you can inspect the chat history for each chat session.\nFor more information, see ",(0,s.jsx)(n.a,{href:"/concepts-playground#view-chat-history",children:"View chat history"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"view-output-from-a-single-component",children:"View output from a single component"}),"\n",(0,s.jsx)(n.p,{children:"When debugging issues with the format or content of a flow's output, it can help to inspect each component's output to determine where data is being lost or malformed."}),"\n",(0,s.jsxs)(n.p,{children:["To view the output produced by a single component during the most recent run, click ",(0,s.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Inspect output"})," on the component in the visual editor."]}),"\n",(0,s.jsx)(n.h2,{id:"desktop-logs",children:"Access Langflow Desktop logs"}),"\n",(0,s.jsx)(n.p,{children:"If you encounter issues with Langflow Desktop, you might need to access startup logs for debugging.\nFollow the steps for your operating system."}),"\n",(0,s.jsxs)(a.A,{children:[(0,s.jsx)(c.A,{value:"macos",label:"macOS",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Open Terminal and run:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"cd ",props:{style:{color:"#79C0FF"}}},{content:"~/Library/Logs/com.Langflow",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"To open the folder and view the log files, run the command:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"open ",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Locate the ",(0,s.jsx)(n.code,{children:"langflow.log"})," file."]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"windows",label:"Windows",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Open the Command Prompt (CMD), and then run the following command:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"cd ",props:{style:{color:"#C9D1D9"}}},{content:"%",props:{style:{color:"#FF7B72"}}},{content:"LOCALAPPDATA",props:{style:{color:"#C9D1D9"}}},{content:"%",props:{style:{color:"#FF7B72"}}},{content:"\\com.langflow\\logs",props:{style:{color:"#C9D1D9"}}}]}],lang:"cmd"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"To open the folder and view the log files, run the command:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"start .",props:{style:{color:"#C9D1D9"}}}]}],lang:"cmd"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Locate the ",(0,s.jsx)(n.code,{children:"langflow.log"})," file."]}),"\n"]}),"\n"]})})]}),"\n",(0,s.jsxs)(n.p,{children:["You can use the log file to investigate the issue on your own, add context to a ",(0,s.jsx)(n.a,{href:"/contributing-github-issues",children:"GitHub Issue"}),", or send it to ",(0,s.jsx)(n.a,{href:"/luna-for-langflow",children:"support"})," for debugging assistance."]}),"\n",(0,s.jsx)(n.p,{children:"The log file is only created when Langflow Desktop runs. If you don't see a log file, try starting Langflow Desktop first, then check for the log file."}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/memory",children:"Memory management options"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/configuration-custom-database",children:"Configure an external PostgreSQL database"})}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}function j(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/56350599.359d82ad.js b/assets/js/56350599.359d82ad.js
new file mode 100644
index 0000000000..aef6b8b22a
--- /dev/null
+++ b/assets/js/56350599.359d82ad.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8593],{11470:(e,n,o)=>{o.d(n,{A:()=>L});var t=o(96540),s=o(18215),r=o(23104),l=o(56347),i=o(205),a=o(57485),c=o(31682),d=o(70679);function h(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.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 child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function u(e){const{values:n,children:o}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:o,default:t}})=>({value:e,label:n,attributes:o,default:t}))}(o);return function(e){const n=(0,c.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 . Every value needs to be unique.`)}(e),e},[n,o])}function g({value:e,tabValues:n}){return n.some(n=>n.value===e)}function p({queryString:e=!1,groupId:n}){const o=(0,l.W6)(),s=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 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,a.aZ)(s),(0,t.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(o.location.search);n.set(s,e),o.replace({...o.location,search:n.toString()})},[s,o])]}function f(e){const{defaultValue:n,queryString:o=!1,groupId:s}=e,r=u(e),[l,a]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!g({value:e,tabValues:n}))throw new Error(`Docusaurus error: The 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 o=n.find(e=>e.default)??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:n,tabValues:r})),[c,h]=p({queryString:o,groupId:s}),[f,x]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[o,s]=(0,d.Dv)(n);return[o,(0,t.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),j=(()=>{const e=c??f;return g({value:e,tabValues:r})?e:null})();(0,i.A)(()=>{j&&a(j)},[j]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!g({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);a(e),h(e),x(e)},[h,x,r]),tabValues:r}}var x=o(92303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=o(74848);function b({className:e,block:n,selectedValue:o,selectValue:t,tabValues:l}){const i=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=i.indexOf(n),r=l[s].value;r!==o&&(a(n),t(r))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const o=i.indexOf(e.currentTarget)+1;n=i[o]??i[0];break}case"ArrowLeft":{const o=i.indexOf(e.currentTarget)-1;n=i[o]??i[i.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:t})=>(0,m.jsx)("li",{role:"tab",tabIndex:o===e?0:-1,"aria-selected":o===e,ref:e=>{i.push(e)},onKeyDown:d,onClick:c,...t,className:(0,s.A)("tabs__item",j.tabItem,t?.className,{"tabs__item--active":o===e}),children:n??e},e))})}function v({lazy:e,children:n,selectedValue:o}){const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===o);return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:r.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==o}))})}function w(e){const n=f(e);return(0,m.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,m.jsx)(b,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function L(e){const n=(0,x.A)();return(0,m.jsx)(w,{...e,children:h(e.children)},String(n))}},17886:(e,n,o)=>{o.d(n,{A:()=>r});o(96540);var t=o(64058),s=o(74848);function r({name:e,...n}){const o=t[e];return o?(0,s.jsx)(o,{...n}):null}},19365:(e,n,o)=>{o.d(n,{A:()=>l});o(96540);var t=o(18215);const s={tabItem:"tabItem_Ymn6"};var r=o(74848);function l({children:e,hidden:n,className:o}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,o),hidden:n,children:e})}},77232:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/logs-cc30f076e63a5e443cf04855559703a3.png"},88262:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>g,assets:()=>u,chCodeConfig:()=>p,contentTitle:()=>h,default:()=>j,frontMatter:()=>d,metadata:()=>t,toc:()=>f});const t=JSON.parse('{"id":"Develop/logging","title":"Logs","description":"This page provides information about Langflow logs, including logs for individual flows and the Langflow application itself.","source":"@site/docs/Develop/logging.mdx","sourceDirName":"Develop","slug":"/logging","permalink":"/logging","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Logs","slug":"/logging"},"sidebar":"docs","previous":{"title":"Database guide for enterprise administrators","permalink":"/enterprise-database-guide"},"next":{"title":"Arize","permalink":"/integrations-arize"}}');var s=o(74848),r=o(28453),l=o(24754),i=o(17886),a=o(11470),c=o(19365);const d={title:"Logs",slug:"/logging"},h=void 0,u={},g={annotations:l.hk,Code:l.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},f=[{value:"Log storage",id:"log-storage",level:2},{value:"Configure log options",id:"configure-log-options",level:2},{value:"Logging environment variables",id:"logging-environment-variables",level:3},{value:"Flow and component logs",id:"flow-and-component-logs",level:2},{value:"View flow logs",id:"view-flow-logs",level:3},{value:"View chat logs",id:"view-chat-logs",level:3},{value:"View output from a single component",id:"view-output-from-a-single-component",level:3},{value:"Access Langflow Desktop logs",id:"desktop-logs",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return g||m("CH",!1),g.Code||m("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(n.p,{children:"This page provides information about Langflow logs, including logs for individual flows and the Langflow application itself."}),"\n",(0,s.jsxs)(n.p,{children:["Langflow uses the ",(0,s.jsx)(n.code,{children:"loguru"})," library for logging."]}),"\n",(0,s.jsxs)(n.p,{children:["The default logfile is named ",(0,s.jsx)(n.code,{children:"langflow.log"}),".\nLangflow also produces logfiles for flows."]}),"\n",(0,s.jsx)(n.h2,{id:"log-storage",children:"Log storage"}),"\n",(0,s.jsx)(n.p,{children:"The default logfile storage location depends on your operating system:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"macOS Desktop"}),":",(0,s.jsx)(n.code,{children:"/Users//.langflow/cache"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Windows Desktop"}),":",(0,s.jsx)(n.code,{children:"C:\\Users\\\\AppData\\Roaming\\com.Langflow\\cache"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsxs)(n.strong,{children:["OSS macOS/Windows/Linux/WSL (",(0,s.jsx)(n.code,{children:"uv pip install"}),")"]}),": ",(0,s.jsx)(n.code,{children:"/lib/python3.12/site-packages/langflow/cache"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsxs)(n.strong,{children:["OSS macOS/Windows/Linux/WSL (",(0,s.jsx)(n.code,{children:"git clone"}),")"]}),": ",(0,s.jsx)(n.code,{children:"/src/backend/base/langflow/cache"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To customize log storage, see ",(0,s.jsx)(n.a,{href:"#configure-log-options",children:"Configure log options"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configure-log-options",children:"Configure log options"}),"\n",(0,s.jsxs)(n.p,{children:["Use ",(0,s.jsx)(n.a,{href:"/environment-variables",children:"Langflow environment variables"})," to configure logging options in your Langflow ",(0,s.jsx)(n.code,{children:".env"})," file, and then start Langflow with ",(0,s.jsx)(n.code,{children:"uv run langflow run --env-file .env"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"The following environment variables are available to configure logging:"}),"\n",(0,s.jsx)(n.h3,{id:"logging-environment-variables",children:"Logging environment variables"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_LEVEL"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"ERROR"})}),(0,s.jsxs)(n.td,{children:["Sets the log level as one of ",(0,s.jsx)(n.code,{children:"DEBUG"}),", ",(0,s.jsx)(n.code,{children:"ERROR"}),", ",(0,s.jsx)(n.code,{children:"INFO"}),", ",(0,s.jsx)(n.code,{children:"WARNING"}),", and ",(0,s.jsx)(n.code,{children:"CRITICAL"}),". For example, ",(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_LEVEL=DEBUG"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_FILE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["Sets the log file storage location if you want to use a non-default location. For example, ",(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_FILE=path/to/logfile.log"}),". If this option isn't set, logs are written to stdout."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_ENV"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"default"})}),(0,s.jsxs)(n.td,{children:["Controls how logs are formatted and displayed. ",(0,s.jsx)(n.code,{children:"container"}),": JSON format for Docker/structured logging. ",(0,s.jsx)(n.code,{children:"container_csv"}),": CSV format for data analysis. ",(0,s.jsx)(n.code,{children:"default"})," or unset: Pretty, colorful format for development/reading using ",(0,s.jsx)(n.a,{href:"https://rich.readthedocs.io/en/stable/reference/logging.html",children:"RichHandler"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_ROTATION"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"1 day"})}),(0,s.jsx)(n.td,{children:'Controls when the log file is rotated, either based on time or file size. Time-based rotation: "1 day", "12 hours", "1 week". Size-based rotation: "10 MB", "1 GB". Disable rotation: "None" (log files will grow without limit).'})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_RETRIEVER_BUFFER_SIZE"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"10000"})}),(0,s.jsxs)(n.td,{children:["Set the buffer size for log retrieval. Only used if ",(0,s.jsx)(n.code,{children:"LANGFLOW_ENABLE_LOG_RETRIEVAL"})," is enabled."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_LOG_FORMAT"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Set the log format configuration."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_PRETTY_LOGS"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"True"}),(0,s.jsx)(n.td,{children:"Enable pretty log formatting with colors and rich console output."})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["A complete example ",(0,s.jsx)(n.code,{children:".env"})," file is available in the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:"Langflow repository"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"flow-and-component-logs",children:"Flow and component logs"}),"\n",(0,s.jsxs)(n.p,{children:["After you run a flow, you can inspect the logs for the each component and flow run.\nFor example, you can inspect ",(0,s.jsx)(n.code,{children:"Message"})," objects ingested and generated by ",(0,s.jsxs)(n.a,{href:"/components-io",children:[(0,s.jsx)(n.strong,{children:"Input and Output"})," components"]}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"view-flow-logs",children:"View flow logs"}),"\n",(0,s.jsxs)(n.p,{children:["In the visual editor, click ",(0,s.jsx)(n.strong,{children:"Logs"})," to view logs for the entire flow:"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Logs pane",src:o(77232).A+"",width:"4000",height:"2180"})}),"\n",(0,s.jsxs)(n.p,{children:["Then, click the cells in the ",(0,s.jsx)(n.strong,{children:"inputs"})," and ",(0,s.jsx)(n.strong,{children:"outputs"})," columns to inspect the ",(0,s.jsx)(n.code,{children:"Message"})," objects.\nFor example, the following ",(0,s.jsx)(n.code,{children:"Message"})," data could be the output from a ",(0,s.jsx)(n.strong,{children:"Chat Input"})," component:"]}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:' "messages": [',props:{}}]},{tokens:[{content:" {",props:{}}]},{tokens:[{content:' "message": "What\'s the recommended way to install Docker on Mac M1?",',props:{}}]},{tokens:[{content:' "sender": "User",',props:{}}]},{tokens:[{content:' "sender_name": "User",',props:{}}]},{tokens:[{content:' "session_id": "Session Apr 21, 17:37:04",',props:{}}]},{tokens:[{content:' "stream_url": null,',props:{}}]},{tokens:[{content:' "component_id": "ChatInput-4WKag",',props:{}}]},{tokens:[{content:' "files": [],',props:{}}]},{tokens:[{content:' "type": "text"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:" ],",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["In the case of Input/Output components, the original input might not be structured as a ",(0,s.jsx)(n.code,{children:"Message"})," object.\nFor example, a ",(0,s.jsx)(n.strong,{children:"Language Model"})," component might pass a raw text response to a ",(0,s.jsx)(n.strong,{children:"Chat Output"})," component that is then transformed into a ",(0,s.jsx)(n.code,{children:"Message"})," object."]}),"\n",(0,s.jsxs)(n.p,{children:["You can find ",(0,s.jsx)(n.code,{children:".log"})," files for flows at your Langflow installation's log storage location.\nFor filepaths, see ",(0,s.jsx)(n.a,{href:"#log-storage",children:"Log storage"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"view-chat-logs",children:"View chat logs"}),"\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.strong,{children:"Playground"}),", you can inspect the chat history for each chat session.\nFor more information, see ",(0,s.jsx)(n.a,{href:"/concepts-playground#view-chat-history",children:"View chat history"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"view-output-from-a-single-component",children:"View output from a single component"}),"\n",(0,s.jsx)(n.p,{children:"When debugging issues with the format or content of a flow's output, it can help to inspect each component's output to determine where data is being lost or malformed."}),"\n",(0,s.jsxs)(n.p,{children:["To view the output produced by a single component during the most recent run, click ",(0,s.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Inspect output"})," on the component in the visual editor."]}),"\n",(0,s.jsx)(n.h2,{id:"desktop-logs",children:"Access Langflow Desktop logs"}),"\n",(0,s.jsx)(n.p,{children:"If you encounter issues with Langflow Desktop, you might need to access startup logs for debugging.\nFollow the steps for your operating system."}),"\n",(0,s.jsxs)(a.A,{children:[(0,s.jsx)(c.A,{value:"macos",label:"macOS",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Open Terminal and run:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"cd ",props:{style:{color:"#79C0FF"}}},{content:"~/Library/Logs/com.Langflow",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"To open the folder and view the log files, run the command:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"open ",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Locate the ",(0,s.jsx)(n.code,{children:"langflow.log"})," file."]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"windows",label:"Windows",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Open the Command Prompt (CMD), and then run the following command:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"cd ",props:{style:{color:"#C9D1D9"}}},{content:"%",props:{style:{color:"#FF7B72"}}},{content:"LOCALAPPDATA",props:{style:{color:"#C9D1D9"}}},{content:"%",props:{style:{color:"#FF7B72"}}},{content:"\\com.langflow\\logs",props:{style:{color:"#C9D1D9"}}}]}],lang:"cmd"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"To open the folder and view the log files, run the command:"}),"\n",(0,s.jsx)(g.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"start .",props:{style:{color:"#C9D1D9"}}}]}],lang:"cmd"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Locate the ",(0,s.jsx)(n.code,{children:"langflow.log"})," file."]}),"\n"]}),"\n"]})})]}),"\n",(0,s.jsxs)(n.p,{children:["You can use the log file to investigate the issue on your own, add context to a ",(0,s.jsx)(n.a,{href:"/contributing-github-issues",children:"GitHub Issue"}),", or send it to ",(0,s.jsx)(n.a,{href:"/luna-for-langflow",children:"support"})," for debugging assistance."]}),"\n",(0,s.jsx)(n.p,{children:"The log file is only created when Langflow Desktop runs. If you don't see a log file, try starting Langflow Desktop first, then check for the log file."}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/memory",children:"Memory management options"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/configuration-custom-database",children:"Configure an external PostgreSQL database"})}),"\n"]})]})}function j(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}function m(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/6d20d6ec.09a7e86e.js b/assets/js/6d20d6ec.09a7e86e.js
new file mode 100644
index 0000000000..455f8fb354
--- /dev/null
+++ b/assets/js/6d20d6ec.09a7e86e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3549],{11470:(e,n,l)=>{l.d(n,{A:()=>A});var r=l(96540),a=l(18215),t=l(23104),o=l(56347),s=l(205),i=l(57485),c=l(31682),d=l(70679);function h(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.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 child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function u(e){const{values:n,children:l}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:l,default:r}})=>({value:e,label:n,attributes:l,default:r}))}(l);return function(e){const n=(0,c.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 . Every value needs to be unique.`)}(e),e},[n,l])}function b({value:e,tabValues:n}){return n.some(n=>n.value===e)}function p({queryString:e=!1,groupId:n}){const l=(0,o.W6)(),a=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 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)(a),(0,r.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})},[a,l])]}function v(e){const{defaultValue:n,queryString:l=!1,groupId:a}=e,t=u(e),[o,i]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!b({value:e,tabValues:n}))throw new Error(`Docusaurus error: The 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 l=n.find(e=>e.default)??n[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:t})),[c,h]=p({queryString:l,groupId:a}),[v,g]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[l,a]=(0,d.Dv)(n);return[l,(0,r.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),f=(()=>{const e=c??v;return b({value:e,tabValues:t})?e:null})();(0,s.A)(()=>{f&&i(f)},[f]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!b({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);i(e),h(e),g(e)},[h,g,t]),tabValues:t}}var g=l(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=l(74848);function m({className:e,block:n,selectedValue:l,selectValue:r,tabValues:o}){const s=[],{blockElementScrollPositionUntilNextRender:i}=(0,t.a_)(),c=e=>{const n=e.currentTarget,a=s.indexOf(n),t=o[a].value;t!==l&&(i(n),r(t))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const l=s.indexOf(e.currentTarget)+1;n=s[l]??s[0];break}case"ArrowLeft":{const l=s.indexOf(e.currentTarget)-1;n=s[l]??s[s.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:o.map(({value:e,label:n,attributes:r})=>(0,x.jsx)("li",{role:"tab",tabIndex:l===e?0:-1,"aria-selected":l===e,ref:e=>{s.push(e)},onKeyDown:d,onClick:c,...r,className:(0,a.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":l===e}),children:n??e},e))})}function j({lazy:e,children:n,selectedValue:l}){const t=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=t.find(e=>e.props.value===l);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:t.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l}))})}function y(e){const n=v(e);return(0,x.jsxs)("div",{className:(0,a.A)("tabs-container",f.tabList),children:[(0,x.jsx)(m,{...n,...e}),(0,x.jsx)(j,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,x.jsx)(y,{...e,children:h(e.children)},String(n))}},17886:(e,n,l)=>{l.d(n,{A:()=>t});l(96540);var r=l(64058),a=l(74848);function t({name:e,...n}){const l=r[e];return l?(0,a.jsx)(l,{...n}):null}},19365:(e,n,l)=>{l.d(n,{A:()=>o});l(96540);var r=l(18215);const a={tabItem:"tabItem_Ymn6"};var t=l(74848);function o({children:e,hidden:n,className:l}){return(0,t.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:n,children:e})}},39202:(e,n,l)=>{l.r(n),l.d(n,{CH:()=>p,assets:()=>b,chCodeConfig:()=>v,contentTitle:()=>u,default:()=>x,frontMatter:()=>h,metadata:()=>r,toc:()=>g});const r=JSON.parse('{"id":"Configuration/configuration-global-variables","title":"Global variables","description":"Global variables let you store and reuse generic input values and credentials across your Langflow projects.","source":"@site/docs/Configuration/configuration-global-variables.mdx","sourceDirName":"Configuration","slug":"/configuration-global-variables","permalink":"/configuration-global-variables","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Global variables","slug":"/configuration-global-variables"},"sidebar":"docs","previous":{"title":"Install custom dependencies","permalink":"/install-custom-dependencies"},"next":{"title":"Environment variables","permalink":"/environment-variables"}}');var a=l(74848),t=l(28453),o=l(24754),s=l(17886),i=l(11470),c=l(19365),d=l(60500);const h={title:"Global variables",slug:"/configuration-global-variables"},u=void 0,b={},p={annotations:o.hk,Code:o.Cy},v={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[...d.RM,{value:"Create a global variable",id:"create-a-global-variable",level:2},{value:"Edit a global variable",id:"edit-a-global-variable",level:2},{value:"Delete a global variable",id:"delete-a-global-variable",level:2},{value:"Add custom global variables from the environment",id:"add-custom-global-variables-from-the-environment",level:2},{value:"Disallow global variables from the environment",id:"disallow-global-variables-from-the-environment",level:2},{value:"Use environment variables for missing global variables",id:"use-environment-variables-for-missing-global-variables",level:2},{value:"Global variables automatically set by environment variables",id:"default-environment-variables",level:2},{value:"Configure global variable and environment variable handling",id:"configure-global-variable-and-environment-variable-handling",level:2}];function f(e){const n={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return p||m("CH",!1),p.Code||m("CH.Code",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,a.jsxs)(n.p,{children:["Global variables let you store and reuse generic input values and credentials across your ",(0,a.jsx)(n.a,{href:"/concepts-flows#projects",children:"Langflow projects"}),".\nYou can use a global variable in any text input field that displays the ",(0,a.jsx)(s.A,{name:"Globe","aria-hidden":"true"})," ",(0,a.jsx)(n.strong,{children:"Globe"})," icon."]}),"\n",(0,a.jsx)(n.p,{children:"Langflow stores global variables in its internal database, and encrypts the values using a secret key."}),"\n",(0,a.jsx)(d.Ay,{}),"\n",(0,a.jsx)(n.h2,{id:"create-a-global-variable",children:"Create a global variable"}),"\n",(0,a.jsx)(n.p,{children:"To create a new global variable, follow these steps."}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,a.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(n.strong,{children:"Global Variables"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(n.strong,{children:"Add New"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["In the ",(0,a.jsx)(n.strong,{children:"Create Variable"})," dialog, enter a name for your variable in the ",(0,a.jsx)(n.strong,{children:"Variable Name"})," field."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Optional: Select a ",(0,a.jsx)(n.strong,{children:"Type"})," for your global variable. The available types are ",(0,a.jsx)(n.strong,{children:"Generic"})," (default) and ",(0,a.jsx)(n.strong,{children:"Credential"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["Langflow encrypts both ",(0,a.jsx)(n.strong,{children:"Generic"})," and ",(0,a.jsx)(n.strong,{children:"Credential"})," type global variables. The difference is in how the variables are displayed in the visual editor:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Global variables of the ",(0,a.jsx)(n.strong,{children:"Generic"})," type are displayed in a standard input field with no masking."]}),"\n",(0,a.jsxs)(n.li,{children:["Global variables of the ",(0,a.jsx)(n.strong,{children:"Credential"})," type are hidden in the visual editor and entered in a password-style input field that masks the value. This type isn't allowed in session ID fields where the value is exposed."]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["All default environment variables and variables sourced from the environment using ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," are automatically set as ",(0,a.jsx)(n.strong,{children:"Credential"})," type.\nFor more information, see ",(0,a.jsx)(n.a,{href:"#default-environment-variables",children:"Default environment variables"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Enter the ",(0,a.jsx)(n.strong,{children:"Value"})," for your global variable."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Optional: Use the ",(0,a.jsx)(n.strong,{children:"Apply To Fields"})," menu to select one or more fields that you want Langflow to automatically apply your global variable to. For example, if you select ",(0,a.jsx)(n.strong,{children:"OpenAI API Key"}),", Langflow automatically applies the variable to any ",(0,a.jsx)(n.strong,{children:"OpenAI API Key"})," field."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(n.strong,{children:"Save Variable"}),"."]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can now select your global variable from any text input field that displays the ",(0,a.jsx)(s.A,{name:"Globe","aria-hidden":"true"})," ",(0,a.jsx)(n.strong,{children:"Globe"})," icon."]}),"\n",(0,a.jsx)(n.h2,{id:"edit-a-global-variable",children:"Edit a global variable"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,a.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(n.strong,{children:"Global Variables"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Click on the global variable you want to edit."}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["In the ",(0,a.jsx)(n.strong,{children:"Update Variable"})," dialog, you can edit the following fields: ",(0,a.jsx)(n.strong,{children:"Variable Name"}),", ",(0,a.jsx)(n.strong,{children:"Value"}),", and ",(0,a.jsx)(n.strong,{children:"Apply To Fields"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(n.strong,{children:"Update Variable"}),"."]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"delete-a-global-variable",children:"Delete a global variable"}),"\n",(0,a.jsx)(n.p,{children:"Deleting a global variable permanently deletes the value from the database.\nFlows that reference the deleted global variable will fail."}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,a.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(n.strong,{children:"Global Variables"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Click the checkbox next to the global variable that you want to delete."}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(s.A,{name:"Trash2","aria-hidden":"true"})," ",(0,a.jsx)(n.strong,{children:"Delete"}),"."]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:"The global variable is deleted from the database."}),"\n",(0,a.jsx)(n.h2,{id:"add-custom-global-variables-from-the-environment",children:"Add custom global variables from the environment"}),"\n",(0,a.jsxs)(n.p,{children:["You can use the ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," ",(0,a.jsx)(n.a,{href:"/environment-variables#global-variables-and-environment-integration",children:"environment variable"})," to source custom global variables from your runtime environment.\nAll global variables sourced from the environment are automatically set as ",(0,a.jsx)(n.strong,{children:"Credential"})," type global variables."]}),"\n",(0,a.jsxs)(n.p,{children:["Langflow's ",(0,a.jsx)(n.a,{href:"#default-environment-variables",children:"default global variables"})," are already included in this list and are automatically sourced when detected.\nYou can extend this list by setting ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," with your additional variables."]}),"\n",(0,a.jsxs)(i.A,{children:[(0,a.jsxs)(c.A,{value:"local",label:"Local",default:!0,children:[(0,a.jsxs)(n.p,{children:["If you installed Langflow locally, you must define the ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," environment variable in a ",(0,a.jsx)(n.code,{children:".env"})," file."]}),(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create a ",(0,a.jsx)(n.code,{children:".env"})," file and open it in your preferred editor."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Add the ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," environment variable as follows:"]}),"\n",(0,a.jsx)(n.p,{children:"You can specify the variables either as a comma-separated string with no spaces, or as a JSON list:"}),"\n",(0,a.jsx)(p.Code,{codeConfig:v,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# Option 1: Comma-separated string (no spaces)",props:{}}]},{tokens:[{content:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=VARIABLE1,VARIABLE2",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"# Option 2: JSON list format",props:{}}]},{tokens:[{content:'LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=["VARIABLE1", "VARIABLE2"]',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,a.jsxs)(n.p,{children:["Replace ",(0,a.jsx)(n.code,{children:"VARIABLE1,VARIABLE2"})," with your additional variables that you want Langflow to source from the environment, such as ",(0,a.jsx)(n.code,{children:"CUSTOM_API_KEY,INTERNAL_SERVICE_URL"})," or ",(0,a.jsx)(n.code,{children:'["CUSTOM_API_KEY", "INTERNAL_SERVICE_URL"]'}),".\nThese are added to the ",(0,a.jsx)(n.a,{href:"#default-environment-variables",children:"default list of variables"})," that Langflow already monitors, which includes common API keys like ",(0,a.jsx)(n.code,{children:"OPENAI_API_KEY"}),", ",(0,a.jsx)(n.code,{children:"ANTHROPIC_API_KEY"}),", and ",(0,a.jsx)(n.code,{children:"GOOGLE_API_KEY"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Save and close the file."}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start Langflow with the ",(0,a.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,a.jsx)(p.Code,{codeConfig:v,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,a.jsx)(n.p,{children:"Alternatively, you can set environment variables directly in the command line:"}),"\n",(0,a.jsx)(p.Code,{codeConfig:v,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"VARIABLE1",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"VALUE1"',props:{style:{color:"#A5D6FF"}}},{content:" VARIABLE2",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"VALUE2" ',props:{style:{color:"#A5D6FF"}}},{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,a.jsxs)(n.p,{children:["The command-line variables will override any values in the ",(0,a.jsx)(n.code,{children:".env"})," file.\nExpose your environment variables to Langflow in a manner that best suits your own environment."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Confirm that Langflow successfully sourced the global variables from the environment:"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,a.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Click ",(0,a.jsx)(n.strong,{children:"Global Variables"}),", and then make sure that your environment variables appear in the ",(0,a.jsx)(n.strong,{children:"Global Variables"})," list."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]}),(0,a.jsxs)(c.A,{value:"docker",label:"Docker",children:[(0,a.jsxs)(n.p,{children:["If you're using Docker, you can pass ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," directly from the command line or from a ",(0,a.jsx)(n.code,{children:".env"})," file."]}),(0,a.jsxs)(n.p,{children:["To pass ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," directly from the command line:"]}),(0,a.jsx)(p.Code,{codeConfig:v,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT="VARIABLE1,VARIABLE2" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE1="VALUE1" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE2="VALUE2" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),(0,a.jsxs)(n.p,{children:["To pass ",(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," from a ",(0,a.jsx)(n.code,{children:".env"})," file:"]}),(0,a.jsx)(p.Code,{codeConfig:v,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --env-file ",props:{style:{color:"#79C0FF"}}},{content:".env ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE1="VALUE1" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE2="VALUE2" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})]})]}),"\n",(0,a.jsx)(n.p,{children:"When adding global variables from the environment, the following limitations apply:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["You can only source the ",(0,a.jsx)(n.strong,{children:"Name"})," and ",(0,a.jsx)(n.strong,{children:"Value"})," from the environment."]}),"\n",(0,a.jsxs)(n.p,{children:["To add additional parameters, such as the ",(0,a.jsx)(n.strong,{children:"Apply To Fields"})," parameter, you must edit the global variables in your Langflow ",(0,a.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Global variables that you add from the environment always have the ",(0,a.jsx)(n.strong,{children:"Credential"})," type."]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"disallow-global-variables-from-the-environment",children:"Disallow global variables from the environment"}),"\n",(0,a.jsxs)(n.p,{children:["If you want to explicitly prevent Langflow from sourcing global variables from the environment, set ",(0,a.jsx)(n.code,{children:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=False"})," in your ",(0,a.jsx)(n.code,{children:".env"})," file."]}),"\n",(0,a.jsx)(n.h2,{id:"use-environment-variables-for-missing-global-variables",children:"Use environment variables for missing global variables"}),"\n",(0,a.jsxs)(n.p,{children:["If you want to automatically set fallback values for your global variables to environment variables, set ",(0,a.jsx)(n.code,{children:"LANGFLOW_FALLBACK_TO_ENV_VAR=True"})," in your ",(0,a.jsx)(n.code,{children:".env"})," file. When this setting is enabled, if a global variable isn't found, Langflow attempts to use an environment variable with the same name as a backup."]}),"\n",(0,a.jsx)(n.h2,{id:"default-environment-variables",children:"Global variables automatically set by environment variables"}),"\n",(0,a.jsxs)(n.p,{children:["Langflow automatically detects and converts some environment variables into global variables of the type ",(0,a.jsx)(n.strong,{children:"Credential"}),", which are applied to the specific fields in components that require them."]}),"\n",(0,a.jsxs)(n.p,{children:["The supported variables are listed in ",(0,a.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/services/settings/constants.py",children:"constants.py"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"configure-global-variable-and-environment-variable-handling",children:"Configure global variable and environment variable handling"}),"\n",(0,a.jsx)(n.p,{children:"These environment variables configure how Langflow handles the relationship between environment variables and global variables."}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Variable"}),(0,a.jsx)(n.th,{children:"Format"}),(0,a.jsx)(n.th,{children:"Default"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:(0,a.jsx)(n.code,{children:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES"})}),(0,a.jsx)(n.td,{children:"Boolean"}),(0,a.jsx)(n.td,{children:"True"}),(0,a.jsxs)(n.td,{children:["Whether to store environment variables as ",(0,a.jsx)(n.a,{href:"/configuration-global-variables",children:"global variables"})," in the database."]})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:(0,a.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})}),(0,a.jsx)(n.td,{children:"String"}),(0,a.jsx)(n.td,{children:"Not set"}),(0,a.jsxs)(n.td,{children:["Comma-separated list of environment variables to get from the environment and store as ",(0,a.jsx)(n.a,{href:"/configuration-global-variables",children:"global variables"}),"."]})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:(0,a.jsx)(n.code,{children:"LANGFLOW_FALLBACK_TO_ENV_VAR"})}),(0,a.jsx)(n.td,{children:"Boolean"}),(0,a.jsx)(n.td,{children:"True"}),(0,a.jsxs)(n.td,{children:["If enabled, ",(0,a.jsx)(n.a,{href:"/configuration-global-variables",children:"global variables"})," set in your Langflow ",(0,a.jsx)(n.strong,{children:"Settings"})," can use an environment variable with the same name if Langflow can't retrieve the variable value from the global variables."]})]})]})]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}function m(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},60500:(e,n,l)=>{l.d(n,{Ay:()=>s,RM:()=>t});var r=l(74848),a=l(28453);const t=[];function o(e){const n={a:"a",code:"code",p:"p",...(0,a.R)(),...e.components},{Details:l}=n;return l||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,r.jsxs)(l,{children:[(0,r.jsx)("summary",{children:"Environment variables versus global variables"}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/environment-variables",children:"Environment variables"})," like ",(0,r.jsx)(n.code,{children:"LANGFLOW_PORT"})," or ",(0,r.jsx)(n.code,{children:"LANGFLOW_LOG_LEVEL"})," configure how Langflow runs, while ",(0,r.jsx)(n.a,{href:"/configuration-global-variables",children:"global variables"})," are user-defined values stored in Langflow's database for reuse across flows, like ",(0,r.jsx)(n.code,{children:"OPENAI_API_KEY"}),"."]}),(0,r.jsxs)(n.p,{children:["Some environment variables are automatically converted to global variables when Langflow starts. For more information, see ",(0,r.jsx)(n.a,{href:"/configuration-global-variables#default-environment-variables",children:"Default environment variables"}),"."]}),(0,r.jsxs)(n.p,{children:["To add custom global variables, see ",(0,r.jsx)(n.a,{href:"/configuration-global-variables#add-custom-global-variables-from-the-environment",children:"Add custom global variables from the environment"}),"."]})]})}function s(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/6d20d6ec.cc0ea13d.js b/assets/js/6d20d6ec.cc0ea13d.js
deleted file mode 100644
index 0fdcdcad23..0000000000
--- a/assets/js/6d20d6ec.cc0ea13d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3549],{11470:(e,n,l)=>{l.d(n,{A:()=>y});var r=l(96540),t=l(18215),o=l(23104),s=l(56347),a=l(205),i=l(57485),c=l(31682),d=l(70679);function h(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.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 child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function u(e){const{values:n,children:l}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:l,default:r}})=>({value:e,label:n,attributes:l,default:r}))}(l);return function(e){const n=(0,c.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 . Every value needs to be unique.`)}(e),e},[n,l])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function b({queryString:e=!1,groupId:n}){const l=(0,s.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 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,r.useCallback)(e=>{if(!t)return;const n=new URLSearchParams(l.location.search);n.set(t,e),l.replace({...l.location,search:n.toString()})},[t,l])]}function x(e){const{defaultValue:n,queryString:l=!1,groupId:t}=e,o=u(e),[s,i]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The 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 l=n.find(e=>e.default)??n[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:o})),[c,h]=b({queryString:l,groupId:t}),[x,j]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[l,t]=(0,d.Dv)(n);return[l,(0,r.useCallback)(e=>{n&&t.set(e)},[n,t])]}({groupId:t}),f=(()=>{const e=c??x;return p({value:e,tabValues:o})?e:null})();(0,a.A)(()=>{f&&i(f)},[f]);return{selectedValue:s,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);i(e),h(e),j(e)},[h,j,o]),tabValues:o}}var j=l(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=l(74848);function v({className:e,block:n,selectedValue:l,selectValue:r,tabValues:s}){const a=[],{blockElementScrollPositionUntilNextRender:i}=(0,o.a_)(),c=e=>{const n=e.currentTarget,t=a.indexOf(n),o=s[t].value;o!==l&&(i(n),r(o))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const l=a.indexOf(e.currentTarget)+1;n=a[l]??a[0];break}case"ArrowLeft":{const l=a.indexOf(e.currentTarget)-1;n=a[l]??a[a.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:r})=>(0,g.jsx)("li",{role:"tab",tabIndex:l===e?0:-1,"aria-selected":l===e,ref:e=>{a.push(e)},onKeyDown:d,onClick:c,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":l===e}),children:n??e},e))})}function m({lazy:e,children:n,selectedValue:l}){const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=o.find(e=>e.props.value===l);return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l}))})}function A(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(v,{...n,...e}),(0,g.jsx)(m,{...n,...e})]})}function y(e){const n=(0,j.A)();return(0,g.jsx)(A,{...e,children:h(e.children)},String(n))}},17886:(e,n,l)=>{l.d(n,{A:()=>o});l(96540);var r=l(64058),t=l(74848);function o({name:e,...n}){const l=r[e];return l?(0,t.jsx)(l,{...n}):null}},19365:(e,n,l)=>{l.d(n,{A:()=>s});l(96540);var r=l(18215);const t={tabItem:"tabItem_Ymn6"};var o=l(74848);function s({children:e,hidden:n,className:l}){return(0,o.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:n,children:e})}},39202:(e,n,l)=>{l.r(n),l.d(n,{CH:()=>p,assets:()=>u,chCodeConfig:()=>b,contentTitle:()=>h,default:()=>f,frontMatter:()=>d,metadata:()=>r,toc:()=>x});const r=JSON.parse('{"id":"Configuration/configuration-global-variables","title":"Global variables","description":"Global variables let you store and reuse generic input values and credentials across your Langflow projects.","source":"@site/docs/Configuration/configuration-global-variables.mdx","sourceDirName":"Configuration","slug":"/configuration-global-variables","permalink":"/configuration-global-variables","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Global variables","slug":"/configuration-global-variables"},"sidebar":"docs","previous":{"title":"Install custom dependencies","permalink":"/install-custom-dependencies"},"next":{"title":"Environment variables","permalink":"/environment-variables"}}');var t=l(74848),o=l(28453),s=l(24754),a=l(17886),i=l(11470),c=l(19365);const d={title:"Global variables",slug:"/configuration-global-variables"},h=void 0,u={},p={annotations:s.hk,Code:s.Cy},b={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Create a global variable",id:"create-a-global-variable",level:2},{value:"Edit a global variable",id:"edit-a-global-variable",level:2},{value:"Delete a global variable",id:"delete-a-global-variable",level:2},{value:"Add custom global variables from the environment",id:"add-custom-global-variables-from-the-environment",level:2},{value:"Default environment variables",id:"default-environment-variables",level:2}];function j(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return p||g("CH",!1),p.Code||g("CH.Code",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,t.jsxs)(n.p,{children:["Global variables let you store and reuse generic input values and credentials across your ",(0,t.jsx)(n.a,{href:"/concepts-flows#projects",children:"Langflow projects"}),".\nYou can use a global variable in any text input field that displays the ",(0,t.jsx)(a.A,{name:"Globe","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Globe"})," icon."]}),"\n",(0,t.jsx)(n.p,{children:"Langflow stores global variables in its internal database, and encrypts the values using a secret key."}),"\n",(0,t.jsx)(n.h2,{id:"create-a-global-variable",children:"Create a global variable"}),"\n",(0,t.jsx)(n.p,{children:"To create a new global variable, follow these steps."}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,t.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(n.strong,{children:"Global Variables"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(n.strong,{children:"Add New"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In the ",(0,t.jsx)(n.strong,{children:"Create Variable"})," dialog, enter a name for your variable in the ",(0,t.jsx)(n.strong,{children:"Variable Name"})," field."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Optional: Select a ",(0,t.jsx)(n.strong,{children:"Type"})," for your global variable. The available types are ",(0,t.jsx)(n.strong,{children:"Generic"})," (default) and ",(0,t.jsx)(n.strong,{children:"Credential"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Langflow encrypts both ",(0,t.jsx)(n.strong,{children:"Generic"})," and ",(0,t.jsx)(n.strong,{children:"Credential"})," type global variables. The difference is in how the variables are displayed in the visual editor:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Global variables of the ",(0,t.jsx)(n.strong,{children:"Generic"})," type are displayed in a standard input field with no masking."]}),"\n",(0,t.jsxs)(n.li,{children:["Global variables of the ",(0,t.jsx)(n.strong,{children:"Credential"})," type are hidden in the visual editor and entered in a password-style input field that masks the value. This type isn't allowed in session ID fields where the value is exposed."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["All default environment variables and variables sourced from the environment using ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," are automatically set as ",(0,t.jsx)(n.strong,{children:"Credential"})," type."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Enter the ",(0,t.jsx)(n.strong,{children:"Value"})," for your global variable."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Optional: Use the ",(0,t.jsx)(n.strong,{children:"Apply To Fields"})," menu to select one or more fields that you want Langflow to automatically apply your global variable to. For example, if you select ",(0,t.jsx)(n.strong,{children:"OpenAI API Key"}),", Langflow automatically applies the variable to any ",(0,t.jsx)(n.strong,{children:"OpenAI API Key"})," field."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(n.strong,{children:"Save Variable"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["You can now select your global variable from any text input field that displays the ",(0,t.jsx)(a.A,{name:"Globe","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Globe"})," icon."]}),"\n",(0,t.jsx)(n.h2,{id:"edit-a-global-variable",children:"Edit a global variable"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,t.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(n.strong,{children:"Global Variables"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Click on the global variable you want to edit."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In the ",(0,t.jsx)(n.strong,{children:"Update Variable"})," dialog, you can edit the following fields: ",(0,t.jsx)(n.strong,{children:"Variable Name"}),", ",(0,t.jsx)(n.strong,{children:"Value"}),", and ",(0,t.jsx)(n.strong,{children:"Apply To Fields"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(n.strong,{children:"Update Variable"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"delete-a-global-variable",children:"Delete a global variable"}),"\n",(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"Deleting a global variable permanently deletes any references to it from all flows in your Langflow projects."})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,t.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(n.strong,{children:"Global Variables"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Click the checkbox next to the global variable that you want to delete."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(a.A,{name:"Trash2","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Delete"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"The global variable, and any existing references to it, are deleted."}),"\n",(0,t.jsx)(n.h2,{id:"add-custom-global-variables-from-the-environment",children:"Add custom global variables from the environment"}),"\n",(0,t.jsxs)(n.p,{children:["You can use the ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," environment variable to source custom global variables from your runtime environment.\nAll global variables sourced from the environment are automatically set as ",(0,t.jsx)(n.strong,{children:"Credential"})," type global variables."]}),"\n",(0,t.jsxs)(n.p,{children:["Langflow's ",(0,t.jsx)(n.a,{href:"#default-environment-variables",children:"default global variables"})," are already included in this list and are automatically sourced when detected.\nYou can extend this list by setting ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," with your additional variables."]}),"\n",(0,t.jsxs)(i.A,{children:[(0,t.jsxs)(c.A,{value:"local",label:"Local",default:!0,children:[(0,t.jsxs)(n.p,{children:["If you installed Langflow locally, you must define the ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," environment variable in a ",(0,t.jsx)(n.code,{children:".env"})," file."]}),(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Create a ",(0,t.jsx)(n.code,{children:".env"})," file and open it in your preferred editor."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add the ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," environment variable as follows:"]}),"\n",(0,t.jsx)(n.p,{children:"You can specify the variables either as a comma-separated string with no spaces, or as a JSON list:"}),"\n",(0,t.jsx)(p.Code,{codeConfig:b,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# Option 1: Comma-separated string (no spaces)",props:{}}]},{tokens:[{content:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=VARIABLE1,VARIABLE2",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"# Option 2: JSON list format",props:{}}]},{tokens:[{content:'LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=["VARIABLE1", "VARIABLE2"]',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,t.jsxs)(n.p,{children:["Replace ",(0,t.jsx)(n.code,{children:"VARIABLE1,VARIABLE2"})," with your additional variables that you want Langflow to source from the environment, such as ",(0,t.jsx)(n.code,{children:"my_key,some_string"})," or ",(0,t.jsx)(n.code,{children:'["my_key", "some_string"]'}),".\nThese are added to the default list of variables that Langflow already monitors."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Save and close the file."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Start Langflow with the ",(0,t.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,t.jsx)(p.Code,{codeConfig:b,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"VARIABLE1",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"VALUE1"',props:{style:{color:"#A5D6FF"}}},{content:" VARIABLE2",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"VALUE2" ',props:{style:{color:"#A5D6FF"}}},{content:"python ",props:{style:{color:"#FFA657"}}},{content:"-m ",props:{style:{color:"#79C0FF"}}},{content:"langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,t.jsxs)(n.p,{children:["In this example, the environment variables (",(0,t.jsx)(n.code,{children:'VARIABLE1="VALUE1"'})," and ",(0,t.jsx)(n.code,{children:'VARIABLE2="VALUE2"'}),") are prefixed to the startup command.\nThis is a rudimentary method for exposing environment variables to Python on the command line, and is meant for illustrative purposes.\nMake sure to expose your environment variables to Langflow in a manner that best suits your own environment."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Confirm that Langflow successfully sourced the global variables from the environment:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, and then select ",(0,t.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(n.strong,{children:"Global Variables"}),", and then make sure that your environment variables appear in the ",(0,t.jsx)(n.strong,{children:"Global Variables"})," list."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]}),(0,t.jsxs)(c.A,{value:"docker",label:"Docker",children:[(0,t.jsxs)(n.p,{children:["If you're using Docker, you can pass ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," directly from the command line or from a ",(0,t.jsx)(n.code,{children:".env"})," file."]}),(0,t.jsxs)(n.p,{children:["To pass ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," directly from the command line:"]}),(0,t.jsx)(p.Code,{codeConfig:b,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT="VARIABLE1,VARIABLE2" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE1="VALUE1" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE2="VALUE2" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),(0,t.jsxs)(n.p,{children:["To pass ",(0,t.jsx)(n.code,{children:"LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT"})," from a ",(0,t.jsx)(n.code,{children:".env"})," file:"]}),(0,t.jsx)(p.Code,{codeConfig:b,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-it --rm \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --env-file ",props:{style:{color:"#79C0FF"}}},{content:".env ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE1="VALUE1" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -e ",props:{style:{color:"#79C0FF"}}},{content:'VARIABLE2="VALUE2" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]})]})]}),"\n",(0,t.jsxs)(n.admonition,{type:"info",children:[(0,t.jsx)(n.p,{children:"When adding global variables from the environment, the following limitations apply:"}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["You can only source the ",(0,t.jsx)(n.strong,{children:"Name"})," and ",(0,t.jsx)(n.strong,{children:"Value"})," from the environment."]}),"\n",(0,t.jsxs)(n.p,{children:["To add additional parameters, such as the ",(0,t.jsx)(n.strong,{children:"Apply To Fields"})," parameter, you must edit the global variables in your Langflow ",(0,t.jsx)(n.strong,{children:"Settings"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Global variables that you add from the environment always have the ",(0,t.jsx)(n.strong,{children:"Credential"})," type."]}),"\n"]}),"\n"]})]}),"\n",(0,t.jsxs)(n.p,{children:["If you want to explicitly prevent Langflow from sourcing global variables from the environment, set ",(0,t.jsx)(n.code,{children:"LANGFLOW_STORE_ENVIRONMENT_VARIABLES=False"})," in your ",(0,t.jsx)(n.code,{children:".env"})," file."]}),"\n",(0,t.jsxs)(n.p,{children:["If you want to automatically set fallback values for your global variables from environment variables, set ",(0,t.jsx)(n.code,{children:"LANGFLOW_FALLBACK_FROM_ENV_VAR=True"})," in your ",(0,t.jsx)(n.code,{children:".env"})," file. When this setting is enabled, if a global variable isn't found, Langflow attempts to use an environment variable with the same name as a backup."]}),"\n",(0,t.jsx)(n.h2,{id:"default-environment-variables",children:"Default environment variables"}),"\n",(0,t.jsxs)(n.p,{children:["Langflow automatically detects and converts some environment variables into global variables of the type ",(0,t.jsx)(n.strong,{children:"Credential"}),", which are applied to the specific fields in components that require them. Currently, the following variables are supported:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"ANTHROPIC_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"ASTRA_DB_API_ENDPOINT"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"ASTRA_DB_APPLICATION_TOKEN"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"AWS_ACCESS_KEY_ID"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"AWS_SECRET_ACCESS_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"AZURE_OPENAI_API_DEPLOYMENT_NAME"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"AZURE_OPENAI_API_INSTANCE_NAME"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"AZURE_OPENAI_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"AZURE_OPENAI_API_VERSION"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"COHERE_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"COMPOSIO_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"GOOGLE_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"GROQ_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"HUGGINGFACEHUB_API_TOKEN"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"NOVITA_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"OPENAI_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"PINECONE_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"SAMBANOVA_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"SEARCHAPI_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"SERPAPI_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"TAVILY_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"UPSTASH_VECTOR_REST_TOKEN"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"UPSTASH_VECTOR_REST_URL"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"VECTARA_API_KEY"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"VECTARA_CORPUS_ID"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"VECTARA_CUSTOMER_ID"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For information about other environment variables and their usage, see ",(0,t.jsx)(n.a,{href:"/environment-variables",children:"Environment Variables"}),"."]})]})}function f(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(j,{...e})}):j(e)}function g(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/e3230154.126cbc92.js b/assets/js/e3230154.93237aca.js
similarity index 98%
rename from assets/js/e3230154.126cbc92.js
rename to assets/js/e3230154.93237aca.js
index 7ec1ed132d..0d78bb5d4f 100644
--- a/assets/js/e3230154.126cbc92.js
+++ b/assets/js/e3230154.93237aca.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9648],{4595:(e,o,n)=>{n.d(o,{A:()=>t});const t=n.p+"assets/images/mcp-server-tools-ddc0f1dc04109b9f3daf6a2f380073c4.png"},11470:(e,o,n)=>{n.d(o,{A:()=>b});var t=n(96540),s=n(18215),r=n(23104),l=n(56347),c=n(205),i=n(57485),a=n(31682),d=n(70679);function h(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:o}=e;return!!o&&"object"==typeof o&&"value"in o}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:o,children:n}=e;return(0,t.useMemo)(()=>{const e=o??function(e){return h(e).map(({props:{value:e,label:o,attributes:n,default:t}})=>({value:e,label:o,attributes:n,default:t}))}(n);return function(e){const o=(0,a.XI)(e,(e,o)=>e.value===o.value);if(o.length>0)throw new Error(`Docusaurus error: Duplicate values "${o.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[o,n])}function u({value:e,tabValues:o}){return o.some(o=>o.value===e)}function f({queryString:e=!1,groupId:o}){const n=(0,l.W6)(),s=function({queryString:e=!1,groupId:o}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!o)throw new Error('Docusaurus error: The 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 o??null}({queryString:e,groupId:o});return[(0,i.aZ)(s),(0,t.useCallback)(e=>{if(!s)return;const o=new URLSearchParams(n.location.search);o.set(s,e),n.replace({...n.location,search:o.toString()})},[s,n])]}function x(e){const{defaultValue:o,queryString:n=!1,groupId:s}=e,r=p(e),[l,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:o}){if(0===o.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!u({value:e,tabValues:o}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${o.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=o.find(e=>e.default)??o[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:o,tabValues:r})),[a,h]=f({queryString:n,groupId:s}),[x,j]=function({groupId:e}){const o=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,s]=(0,d.Dv)(o);return[n,(0,t.useCallback)(e=>{o&&s.set(e)},[o,s])]}({groupId:s}),g=(()=>{const e=a??x;return u({value:e,tabValues:r})?e:null})();(0,c.A)(()=>{g&&i(g)},[g]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!u({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);i(e),h(e),j(e)},[h,j,r]),tabValues:r}}var j=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=n(74848);function y({className:e,block:o,selectedValue:n,selectValue:t,tabValues:l}){const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,r.a_)(),a=e=>{const o=e.currentTarget,s=c.indexOf(o),r=l[s].value;r!==n&&(i(o),t(r))},d=e=>{let o=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;o=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;o=c[n]??c[c.length-1];break}}o?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":o},e),children:l.map(({value:e,label:o,attributes:t})=>(0,m.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{c.push(e)},onKeyDown:d,onClick:a,...t,className:(0,s.A)("tabs__item",g.tabItem,t?.className,{"tabs__item--active":n===e}),children:o??e},e))})}function C({lazy:e,children:o,selectedValue:n}){const r=(Array.isArray(o)?o:[o]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===n);return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:r.map((e,o)=>(0,t.cloneElement)(e,{key:o,hidden:e.props.value!==n}))})}function v(e){const o=x(e);return(0,m.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,m.jsx)(y,{...o,...e}),(0,m.jsx)(C,{...o,...e})]})}function b(e){const o=(0,j.A)();return(0,m.jsx)(v,{...e,children:h(e.children)},String(o))}},17886:(e,o,n)=>{n.d(o,{A:()=>r});n(96540);var t=n(64058),s=n(74848);function r({name:e,...o}){const n=t[e];return n?(0,s.jsx)(n,{...o}):null}},19365:(e,o,n)=>{n.d(o,{A:()=>l});n(96540);var t=n(18215);const s={tabItem:"tabItem_Ymn6"};var r=n(74848);function l({children:e,hidden:o,className:n}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,n),hidden:o,children:e})}},67577:(e,o,n)=>{n.d(o,{A:()=>t});const t=n.p+"assets/images/mcp-server-53850e4ac7599dec00dd7d01922ba79f.png"},93403:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>u,assets:()=>p,chCodeConfig:()=>f,contentTitle:()=>h,default:()=>g,frontMatter:()=>d,metadata:()=>t,toc:()=>x});const t=JSON.parse('{"id":"Concepts/mcp-server","title":"Use Langflow as an MCP server","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","source":"@site/docs/Concepts/mcp-server.mdx","sourceDirName":"Concepts","slug":"/mcp-server","permalink":"/mcp-server","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Use Langflow as an MCP server","slug":"/mcp-server"},"sidebar":"docs","previous":{"title":"Use Langflow as an MCP client","permalink":"/mcp-client"},"next":{"title":"Connect an Astra DB MCP server to Langflow","permalink":"/mcp-component-astra"}}');var s=n(74848),r=n(28453),l=n(24754),c=n(11470),i=n(19365),a=n(17886);const d={title:"Use Langflow as an MCP server",slug:"/mcp-server"},h=void 0,p={},u={annotations:l.hk,Code:l.Cy},f={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Serve flows as MCP tools",id:"select-flows-to-serve",level:2},{value:"Edit flow tool names and descriptions",id:"edit-flow-tool-names-and-descriptions",level:3},{value:"Importance of tool names and descriptions",id:"importance-of-tool-names-and-descriptions",level:4},{value:"Connect clients to your Langflow MCP server",id:"connect-clients-to-use-the-servers-actions",level:2},{value:"MCP server authentication and environment variables",id:"authentication",level:3},{value:"Deploy your Langflow MCP server externally",id:"deploy-your-server-externally",level:3},{value:"Use MCP Inspector to test and debug flows",id:"test-and-debug-flows",level:2},{value:"Troubleshoot Langflow MCP servers",id:"troubleshooting-mcp-server",level:2},{value:"See also",id:"see-also",level:2}];function j(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components},{Details:t}=o;return u||m("CH",!1),u.Code||m("CH.Code",!0),t||m("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsxs)(o.p,{children:["Langflow integrates with the ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/introduction",children:"Model Context Protocol (MCP)"})," as both an MCP server and an MCP client."]}),"\n",(0,s.jsxs)(o.p,{children:["This page describes how to use Langflow as an MCP server that exposes your flows as ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/docs/concepts/tools",children:"tools"})," that ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/clients",children:"MCP clients"})," can use when generating responses."]}),"\n",(0,s.jsxs)(o.p,{children:["For information about using Langflow as an MCP client and managing MCP server connections within flows, see ",(0,s.jsx)(o.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["A ",(0,s.jsx)(o.a,{href:"/concepts-flows#projects",children:"Langflow project"})," with at least one flow that has a ",(0,s.jsxs)(o.a,{href:"/components-io#chat-output",children:[(0,s.jsx)(o.strong,{children:"Chat Output"})," component"]}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.strong,{children:"Chat Output"})," component is required to use a flow as an MCP tool."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Any LTS version of ",(0,s.jsx)(o.a,{href:"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm",children:"Node.js"})," installed on your computer if you want to use MCP Inspector to ",(0,s.jsx)(o.a,{href:"#test-and-debug-flows",children:"test and debug flows"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.a,{href:"https://ngrok.com/docs/getting-started/#1-install-ngrok",children:"ngrok installed"})," and an ",(0,s.jsx)(o.a,{href:"https://dashboard.ngrok.com/get-started/your-authtoken",children:"ngrok authtoken"})," if you want to ",(0,s.jsx)(o.a,{href:"/deployment-public-server",children:"deploy a public Langflow server"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"select-flows-to-serve",children:"Serve flows as MCP tools"}),"\n",(0,s.jsx)(o.admonition,{title:"MCP flow requirements",type:"important",children:(0,s.jsxs)(o.p,{children:["A flow must contain a ",(0,s.jsxs)(o.a,{href:"/components-io#chat-output",children:[(0,s.jsx)(o.strong,{children:"Chat Output"})," component"]})," to be used as a tool by MCP clients."]})}),"\n",(0,s.jsxs)(o.p,{children:["Each ",(0,s.jsx)(o.a,{href:"/concepts-flows#projects",children:"Langflow project"})," has an MCP server that exposes the project's flows as tools for use by MCP clients."]}),"\n",(0,s.jsx)(o.p,{children:"By default, all flows in a project are exposed as tools on the project's MCP server.\nYou can change the exposed flows and tool metadata by managing the MCP server settings:"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab on the ",(0,s.jsxs)(o.a,{href:"/concepts-flows#projects",children:[(0,s.jsx)(o.strong,{children:"Projects"})," page"]}),", or, when editing a flow, click ",(0,s.jsx)(o.strong,{children:"Share"}),", and then select ",(0,s.jsx)(o.strong,{children:"MCP Server"}),"."]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"MCP server projects page",src:n(67577).A+"",width:"4000",height:"2174"})}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.strong,{children:"Flows/Tools"})," section lists the flows that are currently being served as tools on this MCP server."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To toggle exposed flows, click ",(0,s.jsx)(a.A,{name:"Settings2","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Edit Tools"}),", and then select the flows that you want exposed as tools.\nTo prevent a flow from being used as a tool, clear the checkbox in the first column."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Close the ",(0,s.jsx)(o.strong,{children:"MCP Server Tools"})," dialog to save your changes."]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"MCP Server Tools",src:n(4595).A+"",width:"4000",height:"2030"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"edit-flow-tool-names-and-descriptions",children:"Edit flow tool names and descriptions"}),"\n",(0,s.jsx)(o.p,{children:"Tool names and descriptions help MCP clients determine which actions your flows provide and when to use those actions.\nIt is recommended to provide clear, descriptive names and descriptions for all tools that you serve to MCP clients."}),"\n",(0,s.jsx)(o.p,{children:"To edit the names and descriptions of flow tools on a Langflow MCP server, do the following:"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab on the ",(0,s.jsxs)(o.a,{href:"/concepts-flows#projects",children:[(0,s.jsx)(o.strong,{children:"Projects"})," page"]}),", or, when editing a flow, click ",(0,s.jsx)(o.strong,{children:"Share"}),", and then select ",(0,s.jsx)(o.strong,{children:"MCP Server"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(a.A,{name:"Settings2","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Edit Tools"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"Description"})," or ",(0,s.jsx)(o.strong,{children:"Tool"})," that you want to edit:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool name"}),": Enter a name that makes it clear what the flow does when used as a tool by an agent."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool description"}),": Enter a description that completely and accurately describes the specific actions the flow performs."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Close the ",(0,s.jsx)(o.strong,{children:"MCP Server Tools"})," dialog to save your changes."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h4,{id:"importance-of-tool-names-and-descriptions",children:"Importance of tool names and descriptions"}),"\n",(0,s.jsx)(o.p,{children:"MCP clients use tool names and descriptions to determine which actions to use when generating responses."}),"\n",(0,s.jsx)(o.p,{children:"Because MCP clients treat your Langflow project as a single MCP server with all of your enabled flows listed as tools, unclear names and descriptions can cause the agent to select tools incorrectly or inconsistently."}),"\n",(0,s.jsxs)(o.p,{children:["For example, a flow's default tool name is the flow ID, such as ",(0,s.jsx)(o.code,{children:"adbbf8c7-0a34-493b-90ea-5e8b42f78b66"}),".\nThis provides no information to an agent about the type of flow or its purpose."]}),"\n",(0,s.jsx)(o.p,{children:"To provide more context about your flows, make sure to name and describe your flows clearly when configuring your Langflow project's MCP server."}),"\n",(0,s.jsx)(o.p,{children:"Think of these names and descriptions as function names and code comments.\nUse clear statements to describe the problems your flows solve."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:"Example: Tool name and description usage"}),(0,s.jsxs)(o.p,{children:["For example, assume you create a flow based on the ",(0,s.jsx)(o.strong,{children:"Document Q&A"})," template that uses an LLM to chat about resumes, and then you give the flow the following name and description:"]}),(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool name"}),": ",(0,s.jsx)(o.code,{children:"document_qa_for_resume"})]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool description"}),": ",(0,s.jsx)(o.code,{children:"A flow for analyzing Emily's resume."})]}),"\n"]}),"\n"]}),(0,s.jsxs)(o.p,{children:["After connecting your Langflow MCP server to Cursor, you can ask Cursor about the resume, such as ",(0,s.jsx)(o.code,{children:"What job experience does Emily have?"}),".\nUsing the context provided by your tool name and description, the agent can decide to use the ",(0,s.jsx)(o.code,{children:"document_qa_for_resume"})," MCP tool to create a response about Emily's resume.\nIf necessary, the agent asks permission to use the flow tool before generating the response."]}),(0,s.jsxs)(o.p,{children:["If you ask about a different resume, such as ",(0,s.jsx)(o.code,{children:"What job experience does Alex have?"}),", the agent can decide that ",(0,s.jsx)(o.code,{children:"document_qa_for_resume"})," isn't relevant to this request, because the tool description specifies that the flow is for Emily's resume.\nIn this case, the agent might use another available tool, or it can inform you that it doesn't have access to information about Alex's.\nFor example:"]}),(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"I notice you're asking about Alex's job experience.",props:{}}]},{tokens:[{content:"Based on the available tools, I can see there is a Document QA for Resume flow that's designed for analyzing resumes.",props:{}}]},{tokens:[{content:"However, the description mentions it's for \"Emily's resume\" not Alex's. I don't have access to Alex's resume or job experience information.",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n","\n",(0,s.jsx)(o.h2,{id:"connect-clients-to-use-the-servers-actions",children:"Connect clients to your Langflow MCP server"}),"\n",(0,s.jsx)(o.p,{children:"Langflow provides automatic installation and code snippets to help you deploy your Langflow MCP servers to your local MCP clients."}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsxs)(i.A,{value:"auto",label:"Auto install",default:!0,children:[(0,s.jsx)(o.admonition,{type:"info",children:(0,s.jsxs)(o.p,{children:["The auto install option is available only for specific MCP clients, and the client must be installed locally to your Langflow server.\nIf your client isn't supported or installed remotely from your Langflow server, use the ",(0,s.jsx)(o.strong,{children:"JSON"})," option."]})}),(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Install ",(0,s.jsx)(o.a,{href:"https://docs.cursor.com/get-started/installation",children:"Cursor"}),", Claude, or Windsurf local to your Langflow instance."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Recommended: Configure ",(0,s.jsx)(o.a,{href:"#authentication",children:"authentication"})," for your MCP server."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Langflow, on the ",(0,s.jsx)(o.strong,{children:"Projects"})," page, click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["On the ",(0,s.jsx)(o.strong,{children:"Auto install"})," tab, find your MCP client provider, and then click ",(0,s.jsx)(a.A,{name:"Plus","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Add"}),"."]}),"\n"]}),"\n"]}),(0,s.jsxs)(o.p,{children:["Your Langflow project's MCP server is automatically added to the configuration file for your local Cursor, Claude, or Windsurf client.\nFor example, with Cursor, the server configuration is added to the ",(0,s.jsx)(o.code,{children:"mcp.json"})," configuration file."]}),(0,s.jsx)(o.p,{children:"Langflow attempts to add this configuration even if the selected client isn't installed.\nTo verify the installation, check the available MCP servers in your client."})]}),(0,s.jsxs)(i.A,{value:"JSON",label:"JSON",children:[(0,s.jsx)(o.p,{children:"The JSON option allows you to connect a Langflow MCP server to any local or remote MCP client."}),(0,s.jsxs)(o.p,{children:["You can modify this process for any ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/clients",children:"MCP-compatible client"}),"."]}),(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Install ",(0,s.jsx)(o.a,{href:"https://docs.cursor.com/get-started/installation",children:"Cursor"})," or any other ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/clients",children:"MCP-compatible client"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"These steps use Cursor as an example.\nModify them as needed for other clients."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Cursor, go to ",(0,s.jsx)(o.strong,{children:"Cursor Settings"}),", select ",(0,s.jsx)(o.strong,{children:"MCP"}),", and then click ",(0,s.jsx)(o.strong,{children:"Add New Global MCP Server"})," to open Cursor's global ",(0,s.jsx)(o.code,{children:"mcp.json"})," configuration file."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Recommended: Configure ",(0,s.jsx)(o.a,{href:"#authentication",children:"authentication"})," for your MCP server."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Langflow, on the ",(0,s.jsx)(o.strong,{children:"Projects"})," page, click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"JSON"})," tab, copy the code snippet for your operating system, and then paste it into Cursor's ",(0,s.jsx)(o.code,{children:"mcp.json"})," file.\nFor example:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"uvx"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab automatically populates the ",(0,s.jsx)(o.code,{children:"PROJECT_NAME"}),", ",(0,s.jsx)(o.code,{children:"LANGFLOW_SERVER_ADDRESS"}),", and ",(0,s.jsx)(o.code,{children:"PROJECT_ID"})," values."]}),"\n",(0,s.jsxs)(o.p,{children:["The default Langflow server address is ",(0,s.jsx)(o.code,{children:"http://localhost:7860"}),".\nIf you are using a ",(0,s.jsx)(o.a,{href:"/deployment-public-server",children:"public Langflow server"}),", the server address is automatically included."]}),"\n",(0,s.jsxs)(o.p,{children:["If your Langflow server requires authentication, you must include your Langflow API key in the configuration.\nFor more information, see ",(0,s.jsx)(o.a,{href:"#authentication",children:"MCP server authentication and environment variables"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Cursor, save and close the ",(0,s.jsx)(o.code,{children:"mcp.json"})," file."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Confirm that your Langflow MCP server is on Cursor's ",(0,s.jsx)(o.strong,{children:"MCP Servers"})," list."]}),"\n"]}),"\n"]})]})]}),"\n",(0,s.jsxs)(o.p,{children:["Once your MCP client is connected to your Langflow project's MCP server, your flows are registered as tools.\nCursor determines when to use tools based on your queries, and requests permissions when necessary.\nFor more information, see the MCP documentation for your client, such as ",(0,s.jsx)(o.a,{href:"https://docs.cursor.com/context/model-context-protocol",children:"Cursor's MCP documentation"}),"."]}),"\n",(0,s.jsx)(o.h3,{id:"authentication",children:"MCP server authentication and environment variables"}),"\n",(0,s.jsxs)(o.p,{children:["You must provide a Langflow API key in your MCP client configuration if your ",(0,s.jsx)(o.a,{href:"/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server has authentication enabled"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["When this is the case, the code template in your project's ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab automatically includes the ",(0,s.jsx)(o.code,{children:"--header"})," and ",(0,s.jsx)(o.code,{children:"x-api-key"})," arguments:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"uvx"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "--headers"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "x-api-key"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "YOUR_API_KEY"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(a.A,{name:"key","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Generate API key"})," to automatically insert a new Langflow API key into the code template.\nAlternatively, you can replace ",(0,s.jsx)(o.code,{children:"YOUR_API_KEY"})," with an existing Langflow API key."]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"MCP server tab showing Generate API key button",src:n(95288).A+"",width:"4000",height:"2188"})}),"\n",(0,s.jsxs)(o.p,{children:["To include other environment variables with your MCP server command, use the ",(0,s.jsx)(o.code,{children:"env"})," object with key-value pairs of environment variables:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"uvx"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "env"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "KEY"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"VALUE"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n","\n",(0,s.jsx)(o.h3,{id:"deploy-your-server-externally",children:"Deploy your Langflow MCP server externally"}),"\n",(0,s.jsxs)(o.p,{children:["To deploy your Langflow MCP server externally, see ",(0,s.jsx)(o.a,{href:"/deployment-public-server",children:"Deploy a public Langflow server"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"test-and-debug-flows",children:"Use MCP Inspector to test and debug flows"}),"\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/docs/tools/inspector",children:"MCP Inspector"})," is a common tool for testing and debugging MCP servers.\nYou can use MCP Inspector to monitor your flows and get insights into how they are being consumed by the MCP server:"]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Install MCP Inspector:"}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"npx ",props:{style:{color:"#FFA657"}}},{content:"@modelcontextprotocol/inspector",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For more information about configuring MCP Inspector, including specifying a proxy port, see the ",(0,s.jsx)(o.a,{href:"https://github.com/modelcontextprotocol/inspector",children:"MCP Inspector GitHub project"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Open a web browser and navigate to the MCP Inspector UI.\nThe default address is ",(0,s.jsx)(o.code,{children:"http://localhost:6274"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"In the MCP Inspector UI, enter the connection details for your Langflow project's MCP server:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Transport Type"}),": Select ",(0,s.jsx)(o.strong,{children:"SSE"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"URL"}),": Enter the Langflow MCP server's ",(0,s.jsx)(o.code,{children:"sse"})," endpoint. For example: ",(0,s.jsx)(o.code,{children:"http://localhost:7860/api/v1/mcp/project/d359cbd4-6fa2-4002-9d53-fa05c645319c/sse"})]}),"\n"]}),"\n",(0,s.jsxs)(o.p,{children:["If you've ",(0,s.jsx)(o.a,{href:"#authentication",children:"configured authentication for your MCP server"}),", fill out the following additional fields:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Transport Type"}),": Select ",(0,s.jsx)(o.strong,{children:"STDIO"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Command"}),": ",(0,s.jsx)(o.code,{children:"uvx"})]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Arguments"}),": Enter the following list of arguments, separated by spaces. Replace the values for ",(0,s.jsx)(o.code,{children:"YOUR_API_KEY"}),", ",(0,s.jsx)(o.code,{children:"LANGFLOW_SERVER_ADDRESS"}),", and ",(0,s.jsx)(o.code,{children:"PROJECT_ID"})," with the values from your Langflow MCP server. For example:"]}),"\n"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"mcp-proxy ",props:{style:{color:"#FFA657"}}},{content:"--headers ",props:{style:{color:"#79C0FF"}}},{content:"x-api-key YOUR_API_KEY http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(o.strong,{children:"Connect"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["If the connection was successful, you should see your project's flows in the ",(0,s.jsx)(o.strong,{children:"Tools"})," tab.\nFrom this tab, you can monitor how your flows are being registered as tools by MCP, as well as test the tools with custom input values."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To quit MCP Inspector, press ",(0,s.jsx)("kbd",{children:"Control+C"})," in the same terminal window where you started it."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"troubleshooting-mcp-server",children:"Troubleshoot Langflow MCP servers"}),"\n",(0,s.jsxs)(o.p,{children:["If Claude for Desktop isn't using your server's tools correctly, you may need to explicitly define the path to your local ",(0,s.jsx)(o.code,{children:"uvx"})," or ",(0,s.jsx)(o.code,{children:"npx"})," executable file in the ",(0,s.jsx)(o.code,{children:"claude_desktop_config.json"})," configuration file."]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To find your UVX path, run ",(0,s.jsx)(o.code,{children:"which uvx"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["To find your NPX path, run ",(0,s.jsx)(o.code,{children:"which npx"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Copy the path, and then replace ",(0,s.jsx)(o.code,{children:"PATH_TO_UVX"})," or ",(0,s.jsx)(o.code,{children:"PATH_TO_NPX"})," in your ",(0,s.jsx)(o.code,{children:"claude_desktop_config.json"})," file."]}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsx)(i.A,{value:"uvx",label:"uvx",default:!0,children:(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"PATH_TO_UVX"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"npx",label:"npx",children:(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"PATH_TO_NPX"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "-y"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "supergateway"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "--sse"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})})]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/mcp-component-astra",children:"Use a DataStax Astra DB MCP server"})}),"\n"]})]})}function g(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(j,{...e})}):j(e)}function m(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},95288:(e,o,n)=>{n.d(o,{A:()=>t});const t=n.p+"assets/images/mcp-server-api-key-5a39d0de10227381df269c4595d4d896.png"}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9648],{4595:(e,o,n)=>{n.d(o,{A:()=>t});const t=n.p+"assets/images/mcp-server-tools-ddc0f1dc04109b9f3daf6a2f380073c4.png"},11470:(e,o,n)=>{n.d(o,{A:()=>b});var t=n(96540),s=n(18215),r=n(23104),l=n(56347),c=n(205),i=n(57485),a=n(31682),d=n(70679);function h(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:o}=e;return!!o&&"object"==typeof o&&"value"in o}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:o,children:n}=e;return(0,t.useMemo)(()=>{const e=o??function(e){return h(e).map(({props:{value:e,label:o,attributes:n,default:t}})=>({value:e,label:o,attributes:n,default:t}))}(n);return function(e){const o=(0,a.XI)(e,(e,o)=>e.value===o.value);if(o.length>0)throw new Error(`Docusaurus error: Duplicate values "${o.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[o,n])}function u({value:e,tabValues:o}){return o.some(o=>o.value===e)}function f({queryString:e=!1,groupId:o}){const n=(0,l.W6)(),s=function({queryString:e=!1,groupId:o}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!o)throw new Error('Docusaurus error: The 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 o??null}({queryString:e,groupId:o});return[(0,i.aZ)(s),(0,t.useCallback)(e=>{if(!s)return;const o=new URLSearchParams(n.location.search);o.set(s,e),n.replace({...n.location,search:o.toString()})},[s,n])]}function x(e){const{defaultValue:o,queryString:n=!1,groupId:s}=e,r=p(e),[l,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:o}){if(0===o.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!u({value:e,tabValues:o}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${o.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=o.find(e=>e.default)??o[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:o,tabValues:r})),[a,h]=f({queryString:n,groupId:s}),[x,j]=function({groupId:e}){const o=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,s]=(0,d.Dv)(o);return[n,(0,t.useCallback)(e=>{o&&s.set(e)},[o,s])]}({groupId:s}),g=(()=>{const e=a??x;return u({value:e,tabValues:r})?e:null})();(0,c.A)(()=>{g&&i(g)},[g]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!u({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);i(e),h(e),j(e)},[h,j,r]),tabValues:r}}var j=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=n(74848);function y({className:e,block:o,selectedValue:n,selectValue:t,tabValues:l}){const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,r.a_)(),a=e=>{const o=e.currentTarget,s=c.indexOf(o),r=l[s].value;r!==n&&(i(o),t(r))},d=e=>{let o=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;o=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;o=c[n]??c[c.length-1];break}}o?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":o},e),children:l.map(({value:e,label:o,attributes:t})=>(0,m.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{c.push(e)},onKeyDown:d,onClick:a,...t,className:(0,s.A)("tabs__item",g.tabItem,t?.className,{"tabs__item--active":n===e}),children:o??e},e))})}function C({lazy:e,children:o,selectedValue:n}){const r=(Array.isArray(o)?o:[o]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===n);return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:r.map((e,o)=>(0,t.cloneElement)(e,{key:o,hidden:e.props.value!==n}))})}function v(e){const o=x(e);return(0,m.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,m.jsx)(y,{...o,...e}),(0,m.jsx)(C,{...o,...e})]})}function b(e){const o=(0,j.A)();return(0,m.jsx)(v,{...e,children:h(e.children)},String(o))}},17886:(e,o,n)=>{n.d(o,{A:()=>r});n(96540);var t=n(64058),s=n(74848);function r({name:e,...o}){const n=t[e];return n?(0,s.jsx)(n,{...o}):null}},19365:(e,o,n)=>{n.d(o,{A:()=>l});n(96540);var t=n(18215);const s={tabItem:"tabItem_Ymn6"};var r=n(74848);function l({children:e,hidden:o,className:n}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,n),hidden:o,children:e})}},67577:(e,o,n)=>{n.d(o,{A:()=>t});const t=n.p+"assets/images/mcp-server-53850e4ac7599dec00dd7d01922ba79f.png"},93403:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>u,assets:()=>p,chCodeConfig:()=>f,contentTitle:()=>h,default:()=>g,frontMatter:()=>d,metadata:()=>t,toc:()=>x});const t=JSON.parse('{"id":"Concepts/mcp-server","title":"Use Langflow as an MCP server","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","source":"@site/docs/Concepts/mcp-server.mdx","sourceDirName":"Concepts","slug":"/mcp-server","permalink":"/mcp-server","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Use Langflow as an MCP server","slug":"/mcp-server"},"sidebar":"docs","previous":{"title":"Use Langflow as an MCP client","permalink":"/mcp-client"},"next":{"title":"Connect an Astra DB MCP server to Langflow","permalink":"/mcp-component-astra"}}');var s=n(74848),r=n(28453),l=n(24754),c=n(11470),i=n(19365),a=n(17886);const d={title:"Use Langflow as an MCP server",slug:"/mcp-server"},h=void 0,p={},u={annotations:l.hk,Code:l.Cy},f={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Serve flows as MCP tools",id:"select-flows-to-serve",level:2},{value:"Edit flow tool names and descriptions",id:"edit-flow-tool-names-and-descriptions",level:3},{value:"Importance of tool names and descriptions",id:"importance-of-tool-names-and-descriptions",level:4},{value:"Connect clients to your Langflow MCP server",id:"connect-clients-to-use-the-servers-actions",level:2},{value:"MCP server authentication and environment variables",id:"authentication",level:3},{value:"Deploy your Langflow MCP server externally",id:"deploy-your-server-externally",level:3},{value:"Use MCP Inspector to test and debug flows",id:"test-and-debug-flows",level:2},{value:"Troubleshoot Langflow MCP servers",id:"troubleshooting-mcp-server",level:2},{value:"See also",id:"see-also",level:2}];function j(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components},{Details:t}=o;return u||m("CH",!1),u.Code||m("CH.Code",!0),t||m("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsxs)(o.p,{children:["Langflow integrates with the ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/introduction",children:"Model Context Protocol (MCP)"})," as both an MCP server and an MCP client."]}),"\n",(0,s.jsxs)(o.p,{children:["This page describes how to use Langflow as an MCP server that exposes your flows as ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/docs/concepts/tools",children:"tools"})," that ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/clients",children:"MCP clients"})," can use when generating responses."]}),"\n",(0,s.jsxs)(o.p,{children:["For information about using Langflow as an MCP client and managing MCP server connections within flows, see ",(0,s.jsx)(o.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["A ",(0,s.jsx)(o.a,{href:"/concepts-flows#projects",children:"Langflow project"})," with at least one flow that has a ",(0,s.jsxs)(o.a,{href:"/components-io#chat-output",children:[(0,s.jsx)(o.strong,{children:"Chat Output"})," component"]}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.strong,{children:"Chat Output"})," component is required to use a flow as an MCP tool."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Any LTS version of ",(0,s.jsx)(o.a,{href:"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm",children:"Node.js"})," installed on your computer if you want to use MCP Inspector to ",(0,s.jsx)(o.a,{href:"#test-and-debug-flows",children:"test and debug flows"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.a,{href:"https://ngrok.com/docs/getting-started/#1-install-ngrok",children:"ngrok installed"})," and an ",(0,s.jsx)(o.a,{href:"https://dashboard.ngrok.com/get-started/your-authtoken",children:"ngrok authtoken"})," if you want to ",(0,s.jsx)(o.a,{href:"/deployment-public-server",children:"deploy a public Langflow server"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"select-flows-to-serve",children:"Serve flows as MCP tools"}),"\n",(0,s.jsx)(o.admonition,{title:"MCP flow requirements",type:"important",children:(0,s.jsxs)(o.p,{children:["A flow must contain a ",(0,s.jsxs)(o.a,{href:"/components-io#chat-output",children:[(0,s.jsx)(o.strong,{children:"Chat Output"})," component"]})," to be used as a tool by MCP clients."]})}),"\n",(0,s.jsxs)(o.p,{children:["Each ",(0,s.jsx)(o.a,{href:"/concepts-flows#projects",children:"Langflow project"})," has an MCP server that exposes the project's flows as tools for use by MCP clients."]}),"\n",(0,s.jsx)(o.p,{children:"By default, all flows in a project are exposed as tools on the project's MCP server.\nYou can change the exposed flows and tool metadata by managing the MCP server settings:"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab on the ",(0,s.jsxs)(o.a,{href:"/concepts-flows#projects",children:[(0,s.jsx)(o.strong,{children:"Projects"})," page"]}),", or, when editing a flow, click ",(0,s.jsx)(o.strong,{children:"Share"}),", and then select ",(0,s.jsx)(o.strong,{children:"MCP Server"}),"."]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"MCP server projects page",src:n(67577).A+"",width:"4000",height:"2174"})}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.strong,{children:"Flows/Tools"})," section lists the flows that are currently being served as tools on this MCP server."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To toggle exposed flows, click ",(0,s.jsx)(a.A,{name:"Settings2","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Edit Tools"}),", and then select the flows that you want exposed as tools.\nTo prevent a flow from being used as a tool, clear the checkbox in the first column."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Close the ",(0,s.jsx)(o.strong,{children:"MCP Server Tools"})," dialog to save your changes."]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"MCP Server Tools",src:n(4595).A+"",width:"4000",height:"2030"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"edit-flow-tool-names-and-descriptions",children:"Edit flow tool names and descriptions"}),"\n",(0,s.jsx)(o.p,{children:"Tool names and descriptions help MCP clients determine which actions your flows provide and when to use those actions.\nIt is recommended to provide clear, descriptive names and descriptions for all tools that you serve to MCP clients."}),"\n",(0,s.jsx)(o.p,{children:"To edit the names and descriptions of flow tools on a Langflow MCP server, do the following:"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab on the ",(0,s.jsxs)(o.a,{href:"/concepts-flows#projects",children:[(0,s.jsx)(o.strong,{children:"Projects"})," page"]}),", or, when editing a flow, click ",(0,s.jsx)(o.strong,{children:"Share"}),", and then select ",(0,s.jsx)(o.strong,{children:"MCP Server"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(a.A,{name:"Settings2","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Edit Tools"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"Description"})," or ",(0,s.jsx)(o.strong,{children:"Tool"})," that you want to edit:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool name"}),": Enter a name that makes it clear what the flow does when used as a tool by an agent."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool description"}),": Enter a description that completely and accurately describes the specific actions the flow performs."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Close the ",(0,s.jsx)(o.strong,{children:"MCP Server Tools"})," dialog to save your changes."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h4,{id:"importance-of-tool-names-and-descriptions",children:"Importance of tool names and descriptions"}),"\n",(0,s.jsx)(o.p,{children:"MCP clients use tool names and descriptions to determine which actions to use when generating responses."}),"\n",(0,s.jsx)(o.p,{children:"Because MCP clients treat your Langflow project as a single MCP server with all of your enabled flows listed as tools, unclear names and descriptions can cause the agent to select tools incorrectly or inconsistently."}),"\n",(0,s.jsxs)(o.p,{children:["For example, a flow's default tool name is the flow ID, such as ",(0,s.jsx)(o.code,{children:"adbbf8c7-0a34-493b-90ea-5e8b42f78b66"}),".\nThis provides no information to an agent about the type of flow or its purpose."]}),"\n",(0,s.jsx)(o.p,{children:"To provide more context about your flows, make sure to name and describe your flows clearly when configuring your Langflow project's MCP server."}),"\n",(0,s.jsx)(o.p,{children:"Think of these names and descriptions as function names and code comments.\nUse clear statements to describe the problems your flows solve."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:"Example: Tool name and description usage"}),(0,s.jsxs)(o.p,{children:["For example, assume you create a flow based on the ",(0,s.jsx)(o.strong,{children:"Document Q&A"})," template that uses an LLM to chat about resumes, and then you give the flow the following name and description:"]}),(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool name"}),": ",(0,s.jsx)(o.code,{children:"document_qa_for_resume"})]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Tool description"}),": ",(0,s.jsx)(o.code,{children:"A flow for analyzing Emily's resume."})]}),"\n"]}),"\n"]}),(0,s.jsxs)(o.p,{children:["After connecting your Langflow MCP server to Cursor, you can ask Cursor about the resume, such as ",(0,s.jsx)(o.code,{children:"What job experience does Emily have?"}),".\nUsing the context provided by your tool name and description, the agent can decide to use the ",(0,s.jsx)(o.code,{children:"document_qa_for_resume"})," MCP tool to create a response about Emily's resume.\nIf necessary, the agent asks permission to use the flow tool before generating the response."]}),(0,s.jsxs)(o.p,{children:["If you ask about a different resume, such as ",(0,s.jsx)(o.code,{children:"What job experience does Alex have?"}),", the agent can decide that ",(0,s.jsx)(o.code,{children:"document_qa_for_resume"})," isn't relevant to this request, because the tool description specifies that the flow is for Emily's resume.\nIn this case, the agent might use another available tool, or it can inform you that it doesn't have access to information about Alex's.\nFor example:"]}),(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"I notice you're asking about Alex's job experience.",props:{}}]},{tokens:[{content:"Based on the available tools, I can see there is a Document QA for Resume flow that's designed for analyzing resumes.",props:{}}]},{tokens:[{content:"However, the description mentions it's for \"Emily's resume\" not Alex's. I don't have access to Alex's resume or job experience information.",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n","\n",(0,s.jsx)(o.h2,{id:"connect-clients-to-use-the-servers-actions",children:"Connect clients to your Langflow MCP server"}),"\n",(0,s.jsx)(o.p,{children:"Langflow provides automatic installation and code snippets to help you deploy your Langflow MCP servers to your local MCP clients."}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsxs)(i.A,{value:"auto",label:"Auto install",default:!0,children:[(0,s.jsx)(o.admonition,{type:"info",children:(0,s.jsxs)(o.p,{children:["The auto install option is available only for specific MCP clients, and the client must be installed locally to your Langflow server.\nIf your client isn't supported or installed remotely from your Langflow server, use the ",(0,s.jsx)(o.strong,{children:"JSON"})," option."]})}),(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Install ",(0,s.jsx)(o.a,{href:"https://docs.cursor.com/get-started/installation",children:"Cursor"}),", Claude, or Windsurf local to your Langflow instance."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Recommended: Configure ",(0,s.jsx)(o.a,{href:"#authentication",children:"authentication"})," for your MCP server."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Langflow, on the ",(0,s.jsx)(o.strong,{children:"Projects"})," page, click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["On the ",(0,s.jsx)(o.strong,{children:"Auto install"})," tab, find your MCP client provider, and then click ",(0,s.jsx)(a.A,{name:"Plus","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Add"}),"."]}),"\n"]}),"\n"]}),(0,s.jsxs)(o.p,{children:["Your Langflow project's MCP server is automatically added to the configuration file for your local Cursor, Claude, or Windsurf client.\nFor example, with Cursor, the server configuration is added to the ",(0,s.jsx)(o.code,{children:"mcp.json"})," configuration file."]}),(0,s.jsx)(o.p,{children:"Langflow attempts to add this configuration even if the selected client isn't installed.\nTo verify the installation, check the available MCP servers in your client."})]}),(0,s.jsxs)(i.A,{value:"JSON",label:"JSON",children:[(0,s.jsx)(o.p,{children:"The JSON option allows you to connect a Langflow MCP server to any local or remote MCP client."}),(0,s.jsxs)(o.p,{children:["You can modify this process for any ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/clients",children:"MCP-compatible client"}),"."]}),(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Install ",(0,s.jsx)(o.a,{href:"https://docs.cursor.com/get-started/installation",children:"Cursor"})," or any other ",(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/clients",children:"MCP-compatible client"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"These steps use Cursor as an example.\nModify them as needed for other clients."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Cursor, go to ",(0,s.jsx)(o.strong,{children:"Cursor Settings"}),", select ",(0,s.jsx)(o.strong,{children:"MCP"}),", and then click ",(0,s.jsx)(o.strong,{children:"Add New Global MCP Server"})," to open Cursor's global ",(0,s.jsx)(o.code,{children:"mcp.json"})," configuration file."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Recommended: Configure ",(0,s.jsx)(o.a,{href:"#authentication",children:"authentication"})," for your MCP server."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Langflow, on the ",(0,s.jsx)(o.strong,{children:"Projects"})," page, click the ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click the ",(0,s.jsx)(o.strong,{children:"JSON"})," tab, copy the code snippet for your operating system, and then paste it into Cursor's ",(0,s.jsx)(o.code,{children:"mcp.json"})," file.\nFor example:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"uvx"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab automatically populates the ",(0,s.jsx)(o.code,{children:"PROJECT_NAME"}),", ",(0,s.jsx)(o.code,{children:"LANGFLOW_SERVER_ADDRESS"}),", and ",(0,s.jsx)(o.code,{children:"PROJECT_ID"})," values."]}),"\n",(0,s.jsxs)(o.p,{children:["The default Langflow server address is ",(0,s.jsx)(o.code,{children:"http://localhost:7860"}),".\nIf you are using a ",(0,s.jsx)(o.a,{href:"/deployment-public-server",children:"public Langflow server"}),", the server address is automatically included."]}),"\n",(0,s.jsxs)(o.p,{children:["If your Langflow server requires authentication, you must include your Langflow API key in the configuration.\nFor more information, see ",(0,s.jsx)(o.a,{href:"#authentication",children:"MCP server authentication and environment variables"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In Cursor, save and close the ",(0,s.jsx)(o.code,{children:"mcp.json"})," file."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Confirm that your Langflow MCP server is on Cursor's ",(0,s.jsx)(o.strong,{children:"MCP Servers"})," list."]}),"\n"]}),"\n"]})]})]}),"\n",(0,s.jsxs)(o.p,{children:["Once your MCP client is connected to your Langflow project's MCP server, your flows are registered as tools.\nCursor determines when to use tools based on your queries, and requests permissions when necessary.\nFor more information, see the MCP documentation for your client, such as ",(0,s.jsx)(o.a,{href:"https://docs.cursor.com/context/model-context-protocol",children:"Cursor's MCP documentation"}),"."]}),"\n",(0,s.jsx)(o.h3,{id:"authentication",children:"MCP server authentication and environment variables"}),"\n",(0,s.jsxs)(o.p,{children:["You must provide a Langflow API key in your MCP client configuration if your ",(0,s.jsx)(o.a,{href:"/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server has authentication enabled"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["When this is the case, the code template in your project's ",(0,s.jsx)(o.strong,{children:"MCP Server"})," tab automatically includes the ",(0,s.jsx)(o.code,{children:"--header"})," and ",(0,s.jsx)(o.code,{children:"x-api-key"})," arguments:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"uvx"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "--headers"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "x-api-key"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "YOUR_API_KEY"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(a.A,{name:"key","aria-hidden":"true"})," ",(0,s.jsx)(o.strong,{children:"Generate API key"})," to automatically insert a new Langflow API key into the code template.\nAlternatively, you can replace ",(0,s.jsx)(o.code,{children:"YOUR_API_KEY"})," with an existing Langflow API key."]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"MCP server tab showing Generate API key button",src:n(95288).A+"",width:"4000",height:"2188"})}),"\n",(0,s.jsxs)(o.p,{children:["To include other environment variables with your MCP server command, use the ",(0,s.jsx)(o.code,{children:"env"})," object with key-value pairs of environment variables:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"uvx"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "env"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "KEY"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"VALUE"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n","\n",(0,s.jsx)(o.h3,{id:"deploy-your-server-externally",children:"Deploy your Langflow MCP server externally"}),"\n",(0,s.jsxs)(o.p,{children:["To deploy your Langflow MCP server externally, see ",(0,s.jsx)(o.a,{href:"/deployment-public-server",children:"Deploy a public Langflow server"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"test-and-debug-flows",children:"Use MCP Inspector to test and debug flows"}),"\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.a,{href:"https://modelcontextprotocol.io/docs/tools/inspector",children:"MCP Inspector"})," is a common tool for testing and debugging MCP servers.\nYou can use MCP Inspector to monitor your flows and get insights into how they are being consumed by the MCP server:"]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Install MCP Inspector:"}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"npx ",props:{style:{color:"#FFA657"}}},{content:"@modelcontextprotocol/inspector",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For more information about configuring MCP Inspector, including specifying a proxy port, see the ",(0,s.jsx)(o.a,{href:"https://github.com/modelcontextprotocol/inspector",children:"MCP Inspector GitHub project"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Open a web browser and navigate to the MCP Inspector UI.\nThe default address is ",(0,s.jsx)(o.code,{children:"http://localhost:6274"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"In the MCP Inspector UI, enter the connection details for your Langflow project's MCP server:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Transport Type"}),": Select ",(0,s.jsx)(o.strong,{children:"SSE"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"URL"}),": Enter the Langflow MCP server's ",(0,s.jsx)(o.code,{children:"sse"})," endpoint. For example: ",(0,s.jsx)(o.code,{children:"http://localhost:7860/api/v1/mcp/project/d359cbd4-6fa2-4002-9d53-fa05c645319c/sse"})]}),"\n"]}),"\n",(0,s.jsxs)(o.p,{children:["If you've ",(0,s.jsx)(o.a,{href:"#authentication",children:"configured authentication for your MCP server"}),", fill out the following additional fields:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Transport Type"}),": Select ",(0,s.jsx)(o.strong,{children:"STDIO"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Command"}),": ",(0,s.jsx)(o.code,{children:"uvx"})]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.strong,{children:"Arguments"}),": Enter the following list of arguments, separated by spaces. Replace the values for ",(0,s.jsx)(o.code,{children:"YOUR_API_KEY"}),", ",(0,s.jsx)(o.code,{children:"LANGFLOW_SERVER_ADDRESS"}),", and ",(0,s.jsx)(o.code,{children:"PROJECT_ID"})," with the values from your Langflow MCP server. For example:"]}),"\n"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"mcp-proxy ",props:{style:{color:"#FFA657"}}},{content:"--headers ",props:{style:{color:"#79C0FF"}}},{content:"x-api-key YOUR_API_KEY http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Click ",(0,s.jsx)(o.strong,{children:"Connect"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["If the connection was successful, you should see your project's flows in the ",(0,s.jsx)(o.strong,{children:"Tools"})," tab.\nFrom this tab, you can monitor how your flows are being registered as tools by MCP, as well as test the tools with custom input values."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To quit MCP Inspector, press ",(0,s.jsx)("kbd",{children:"Control+C"})," in the same terminal window where you started it."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"troubleshooting-mcp-server",children:"Troubleshoot Langflow MCP servers"}),"\n",(0,s.jsxs)(o.p,{children:["If Claude for Desktop isn't using your server's tools correctly, you may need to explicitly define the path to your local ",(0,s.jsx)(o.code,{children:"uvx"})," or ",(0,s.jsx)(o.code,{children:"npx"})," executable file in the ",(0,s.jsx)(o.code,{children:"claude_desktop_config.json"})," configuration file."]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To find your UVX path, run ",(0,s.jsx)(o.code,{children:"which uvx"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["To find your NPX path, run ",(0,s.jsx)(o.code,{children:"which npx"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Copy the path, and then replace ",(0,s.jsx)(o.code,{children:"PATH_TO_UVX"})," or ",(0,s.jsx)(o.code,{children:"PATH_TO_NPX"})," in your ",(0,s.jsx)(o.code,{children:"claude_desktop_config.json"})," file."]}),"\n",(0,s.jsxs)(c.A,{children:[(0,s.jsx)(i.A,{value:"uvx",label:"uvx",default:!0,children:(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"PATH_TO_UVX"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcp-proxy"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})}),(0,s.jsx)(i.A,{value:"npx",label:"npx",children:(0,s.jsx)(u.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "mcpServers"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "PROJECT_NAME"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "command"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"PATH_TO_NPX"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "args"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "-y"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "supergateway"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "--sse"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})})]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/mcp-component-astra",children:"Use a DataStax Astra DB MCP server"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/environment-variables#mcp",children:"MCP server environment variables"})}),"\n"]})]})}function g(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(j,{...e})}):j(e)}function m(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},95288:(e,o,n)=>{n.d(o,{A:()=>t});const t=n.p+"assets/images/mcp-server-api-key-5a39d0de10227381df269c4595d4d896.png"}}]);
\ No newline at end of file
diff --git a/assets/js/e6c6a4d2.aa87f68a.js b/assets/js/e6c6a4d2.f15453c7.js
similarity index 56%
rename from assets/js/e6c6a4d2.aa87f68a.js
rename to assets/js/e6c6a4d2.f15453c7.js
index 4b65a7569b..93b540490a 100644
--- a/assets/js/e6c6a4d2.aa87f68a.js
+++ b/assets/js/e6c6a4d2.f15453c7.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8504],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var s=n(96540);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},94910:(e,t,n)=>{n.r(t),n.d(t,{contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});const s=JSON.parse('{"type":"api","id":"experimental-run-flow","title":"Experimental Run Flow","description":"","slug":"/experimental-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","operationId":"experimental_run_flow_api_v1_run_advanced__flow_id__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flow Id"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"inputs":{"anyOf":[{"items":{"properties":{"components":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Components","default":[]},"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Type","description":"Defines on which components the input value should be applied. \'any\' applies to all input components.","default":"any"}},"additionalProperties":false,"type":"object","title":"InputValueRequest","examples":[{"components":["components_id","Component Name"],"input_value":"input_value","session":"session_id"},{"components":["Component Name"],"input_value":"input_value"},{"input_value":"input_value"},{"components":["Component Name"],"input_value":"input_value","session":"session_id"},{"input_value":"input_value","session":"session_id"},{"input_value":"input_value","type":"chat"},{"input_value":"{\\"key\\": \\"value\\"}","type":"json"}]},"type":"array"},{"type":"null"}],"title":"Inputs"},"outputs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outputs"},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}]},"stream":{"type":"boolean","title":"Stream","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"Body_experimental_run_flow_api_v1_run_advanced__flow_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"outputs":{"anyOf":[{"items":{"properties":{"inputs":{"type":"object","title":"Inputs"},"outputs":{"items":{"anyOf":[{"properties":{"results":{"anyOf":[{},{"type":"null"}],"title":"Results"},"artifacts":{"anyOf":[{},{"type":"null"}],"title":"Artifacts"},"outputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Outputs"},"logs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Logs"},"messages":{"anyOf":[{"items":{"properties":{"message":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"array"}],"title":"Message"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","default":"Machine"},"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name","default":"AI"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"files":{"items":{"properties":{"path":{"type":"string","title":"Path"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["path","name","type"],"title":"File","description":"File schema."},"type":"array","title":"Files","default":[]},"type":{"type":"string","title":"Type"}},"type":"object","required":["message","type"],"title":"ChatOutputResponse","description":"Chat output response schema."},"type":"array"},{"type":"null"}],"title":"Messages"},"timedelta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timedelta"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"component_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Display Name"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"used_frozen_result":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Used Frozen Result","default":false}},"type":"object","title":"ResultData"},{"type":"null"}]},"type":"array","title":"Outputs"}},"type":"object","title":"RunOutputs"},"type":"array"},{"type":"null"}],"title":"Outputs","default":[]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"RunResponse","description":"Run response schema."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/advanced/{flow_id}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"jsonRequestBodyExample":{"stream":false},"info":{"title":"Langflow","version":"1.5.1"},"postman":{"name":"Experimental Run Flow","description":{"content":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","type":"text/plain"},"url":{"path":["api","v1","run","advanced",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"inputs\\": [\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n },\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n }\\n ],\\n \\"outputs\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"tweaks\\": {\\n \\"tempor67\\": \\"\\",\\n \\"eiusmod42\\": \\"\\"\\n },\\n \\"stream\\": false,\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/experimental-run-flow","previous":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"},"next":{"title":"Process","permalink":"/api/process"}}');var i=n(74848),o=n(28453);const a={},l="Experimental Run Flow",r=[{value:"Parameters:",id:"parameters",level:3},{value:"Returns:",id:"returns",level:3},{value:"Raises:",id:"raises",level:3},{value:"Example usage:",id:"example-usage",level:3}];function p(e){const t={code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"experimental-run-flow",children:"Experimental Run Flow"})}),"\n",(0,i.jsx)(t.p,{children:"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability."}),"\n",(0,i.jsx)(t.p,{children:"This endpoint supports running flows with caching to enhance performance and efficiency."}),"\n",(0,i.jsx)(t.h3,{id:"parameters",children:"Parameters:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"flow_id"})," (str): The unique identifier of the flow to be executed."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"inputs"})," (List[InputValueRequest], optional): A list of inputs specifying the input values and components\nfor the flow. Each input can target specific components and provide custom values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"outputs"})," (List[str], optional): A list of output names to retrieve from the executed flow.\nIf not provided, all outputs are returned."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"tweaks"})," (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\nThe tweaks can be used to modify the flow's parameters and components.\nTweaks can be overridden by the input values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"stream"})," (bool, optional): Specifies whether the results should be streamed. Defaults to False."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"session_id"})," (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\nexecution."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"api_key_user"})," (User): The user associated with the current API key. Automatically resolved from the API key."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"returns",children:"Returns:"}),"\n",(0,i.jsxs)(t.p,{children:["A ",(0,i.jsx)(t.code,{children:"RunResponse"})," object containing the selected outputs (or all if not specified) of the executed flow\nand the session ID.\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input."]}),"\n",(0,i.jsx)(t.h3,{id:"raises",children:"Raises:"}),"\n",(0,i.jsx)(t.p,{children:"HTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\nflow execution."}),"\n",(0,i.jsx)(t.h3,{id:"example-usage",children:"Example usage:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-json",children:'POST /run/flow_id\nx-api-key: YOUR_API_KEY\nPayload:\n{\n "inputs": [\n {"components": ["component1"], "input_value": "value1"},\n {"components": ["component3"], "input_value": "value2"}\n ],\n "outputs": ["Component Name", "component_id"],\n "tweaks": {"parameter_name": "value", "Component Name": {"parameter_name": "value"}, "component_id": {"parameter_name": "value"}}\n "stream": false\n}\n'})}),"\n",(0,i.jsx)(t.p,{children:"This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\ncatering to diverse application requirements."}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"flow_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" uuid"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Request Body "}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"inputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Inputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"tweaks"}),(0,i.jsx)("span",{style:{opacity:"0.6"}})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"stream"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"})]})})]})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"200"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Successful Response"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})})]})]})})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"422"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Validation Error"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"detail"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"loc"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"msg"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"type"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8504],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var s=n(96540);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},94910:(e,t,n)=>{n.r(t),n.d(t,{contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});const s=JSON.parse('{"type":"api","id":"experimental-run-flow","title":"Experimental Run Flow","description":"","slug":"/experimental-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","operationId":"experimental_run_flow_api_v1_run_advanced__flow_id__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flow Id"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"inputs":{"anyOf":[{"items":{"properties":{"components":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Components","default":[]},"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Type","description":"Defines on which components the input value should be applied. \'any\' applies to all input components.","default":"any"}},"additionalProperties":false,"type":"object","title":"InputValueRequest","examples":[{"components":["components_id","Component Name"],"input_value":"input_value","session":"session_id"},{"components":["Component Name"],"input_value":"input_value"},{"input_value":"input_value"},{"components":["Component Name"],"input_value":"input_value","session":"session_id"},{"input_value":"input_value","session":"session_id"},{"input_value":"input_value","type":"chat"},{"input_value":"{\\"key\\": \\"value\\"}","type":"json"}]},"type":"array"},{"type":"null"}],"title":"Inputs"},"outputs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outputs"},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}]},"stream":{"type":"boolean","title":"Stream","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"Body_experimental_run_flow_api_v1_run_advanced__flow_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"outputs":{"anyOf":[{"items":{"properties":{"inputs":{"type":"object","title":"Inputs"},"outputs":{"items":{"anyOf":[{"properties":{"results":{"anyOf":[{},{"type":"null"}],"title":"Results"},"artifacts":{"anyOf":[{},{"type":"null"}],"title":"Artifacts"},"outputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Outputs"},"logs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Logs"},"messages":{"anyOf":[{"items":{"properties":{"message":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"array"}],"title":"Message"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","default":"Machine"},"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name","default":"AI"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"files":{"items":{"properties":{"path":{"type":"string","title":"Path"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["path","name","type"],"title":"File","description":"File schema."},"type":"array","title":"Files","default":[]},"type":{"type":"string","title":"Type"}},"type":"object","required":["message","type"],"title":"ChatOutputResponse","description":"Chat output response schema."},"type":"array"},{"type":"null"}],"title":"Messages"},"timedelta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timedelta"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"component_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Display Name"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"used_frozen_result":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Used Frozen Result","default":false}},"type":"object","title":"ResultData"},{"type":"null"}]},"type":"array","title":"Outputs"}},"type":"object","title":"RunOutputs"},"type":"array"},{"type":"null"}],"title":"Outputs","default":[]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"RunResponse","description":"Run response schema."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/advanced/{flow_id}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"jsonRequestBodyExample":{"stream":false},"info":{"title":"Langflow","version":"1.5.1"},"postman":{"name":"Experimental Run Flow","description":{"content":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","type":"text/plain"},"url":{"path":["api","v1","run","advanced",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"inputs\\": [\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n },\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n }\\n ],\\n \\"outputs\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"tweaks\\": {\\n \\"dolore_\\": \\"\\",\\n \\"labore8\\": \\"\\",\\n \\"occaecat_9\\": \\"\\"\\n },\\n \\"stream\\": false,\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/experimental-run-flow","previous":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"},"next":{"title":"Process","permalink":"/api/process"}}');var i=n(74848),o=n(28453);const a={},l="Experimental Run Flow",r=[{value:"Parameters:",id:"parameters",level:3},{value:"Returns:",id:"returns",level:3},{value:"Raises:",id:"raises",level:3},{value:"Example usage:",id:"example-usage",level:3}];function p(e){const t={code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"experimental-run-flow",children:"Experimental Run Flow"})}),"\n",(0,i.jsx)(t.p,{children:"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability."}),"\n",(0,i.jsx)(t.p,{children:"This endpoint supports running flows with caching to enhance performance and efficiency."}),"\n",(0,i.jsx)(t.h3,{id:"parameters",children:"Parameters:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"flow_id"})," (str): The unique identifier of the flow to be executed."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"inputs"})," (List[InputValueRequest], optional): A list of inputs specifying the input values and components\nfor the flow. Each input can target specific components and provide custom values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"outputs"})," (List[str], optional): A list of output names to retrieve from the executed flow.\nIf not provided, all outputs are returned."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"tweaks"})," (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\nThe tweaks can be used to modify the flow's parameters and components.\nTweaks can be overridden by the input values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"stream"})," (bool, optional): Specifies whether the results should be streamed. Defaults to False."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"session_id"})," (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\nexecution."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"api_key_user"})," (User): The user associated with the current API key. Automatically resolved from the API key."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"returns",children:"Returns:"}),"\n",(0,i.jsxs)(t.p,{children:["A ",(0,i.jsx)(t.code,{children:"RunResponse"})," object containing the selected outputs (or all if not specified) of the executed flow\nand the session ID.\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input."]}),"\n",(0,i.jsx)(t.h3,{id:"raises",children:"Raises:"}),"\n",(0,i.jsx)(t.p,{children:"HTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\nflow execution."}),"\n",(0,i.jsx)(t.h3,{id:"example-usage",children:"Example usage:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-json",children:'POST /run/flow_id\nx-api-key: YOUR_API_KEY\nPayload:\n{\n "inputs": [\n {"components": ["component1"], "input_value": "value1"},\n {"components": ["component3"], "input_value": "value2"}\n ],\n "outputs": ["Component Name", "component_id"],\n "tweaks": {"parameter_name": "value", "Component Name": {"parameter_name": "value"}, "component_id": {"parameter_name": "value"}}\n "stream": false\n}\n'})}),"\n",(0,i.jsx)(t.p,{children:"This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\ncatering to diverse application requirements."}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"flow_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" uuid"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Request Body "}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"inputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Inputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"tweaks"}),(0,i.jsx)("span",{style:{opacity:"0.6"}})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"stream"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"})]})})]})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"200"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Successful Response"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})})]})]})})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"422"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Validation Error"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"detail"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"loc"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"msg"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"type"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/f735f5f3.82190a3e.js b/assets/js/f735f5f3.82190a3e.js
deleted file mode 100644
index 14b9937885..0000000000
--- a/assets/js/f735f5f3.82190a3e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2495],{17886:(e,n,o)=>{o.d(n,{A:()=>l});o(96540);var t=o(64058),s=o(74848);function l({name:e,...n}){const o=t[e];return o?(0,s.jsx)(o,{...n}):null}},41884:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>c,default:()=>m,frontMatter:()=>a,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Concepts/concepts-file-management","title":"Manage files","description":"Each Langflow server has a file management system where you can store files that you want to use in your flows.","source":"@site/docs/Concepts/concepts-file-management.mdx","sourceDirName":"Concepts","slug":"/concepts-file-management","permalink":"/concepts-file-management","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Manage files","slug":"/concepts-file-management"},"sidebar":"docs","previous":{"title":"Environment variables","permalink":"/environment-variables"},"next":{"title":"Manage memory","permalink":"/memory"}}');var s=o(74848),l=o(28453),i=o(24754),r=o(17886);const a={title:"Manage files",slug:"/concepts-file-management"},c=void 0,d={},h={annotations:i.hk,Code:i.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Use the file management UI",id:"use-the-file-management-ui",level:2},{value:"Upload and manage files with the Langflow API",id:"upload-and-manage-files-with-the-langflow-api",level:2},{value:"Use files in a flow",id:"use-files-in-a-flow",level:2},{value:"Load files at runtime",id:"load-files-at-runtime",level:3},{value:"Upload images",id:"upload-images",level:2},{value:"Work with video files",id:"work-with-video-files",level:2},{value:"Set the maximum file size",id:"set-the-maximum-file-size",level:2},{value:"See also",id:"see-also",level:2}];function f(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return h||g("CH",!1),h.Code||g("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(n.p,{children:"Each Langflow server has a file management system where you can store files that you want to use in your flows."}),"\n",(0,s.jsx)(n.p,{children:"Files uploaded to Langflow file management are stored locally to your Langflow server, and they are available to all of your flows."}),"\n",(0,s.jsx)(n.p,{children:"Uploading files to Langflow file management keeps your files in a central location, and allows you to reuse files across flows without repeated manual uploads."}),"\n",(0,s.jsx)(n.h2,{id:"use-the-file-management-ui",children:"Use the file management UI"}),"\n",(0,s.jsx)(n.p,{children:"You can use the file management UI to upload files from your local machine to your own Langflow server.\nYou can also manage all files that have been uploaded to your Langflow server."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Navigate to Langflow file management:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["In Langflow, on the ",(0,s.jsxs)(n.a,{href:"/concepts-flows#projects",children:[(0,s.jsx)(n.strong,{children:"Projects"})," page"]})," page, click ",(0,s.jsx)(n.strong,{children:"My Files"})," below the list of projects."]}),"\n",(0,s.jsxs)(n.li,{children:["From a browser, navigate to your Langflow server's ",(0,s.jsx)(n.code,{children:"/files"})," endpoint, such as ",(0,s.jsx)(n.code,{children:"http://localhost:7860/files"}),". Modify the base URL as needed for your Langflow server."]}),"\n",(0,s.jsxs)(n.li,{children:["For programmatic file management, use the ",(0,s.jsx)(n.a,{href:"/api-files",children:"Langflow API files endpoints"}),". However, the following steps assume you're using the file management UI."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["On the ",(0,s.jsx)(n.strong,{children:"My Files"})," page, click ",(0,s.jsx)(n.strong,{children:"Upload"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Select one or more files to upload."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"After uploading files, you can rename, download, copy, or delete files within the file management UI:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["To delete a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(r.A,{name:"Trash2","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Delete"}),".\nYou can delete multiple files in a single action."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["To download a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(r.A,{name:"Download","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Download"}),".\nIf you download multiple files in a single action, they are saved together in a zip file."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"upload-and-manage-files-with-the-langflow-api",children:"Upload and manage files with the Langflow API"}),"\n",(0,s.jsx)(n.p,{children:"With the Langflow API, you can upload and manage files in Langflow file management, and you can send files to flows programmatically at runtime."}),"\n",(0,s.jsxs)(n.p,{children:["For more information and examples, see ",(0,s.jsx)(n.a,{href:"/api-files",children:"Files endpoints"})," and ",(0,s.jsx)(n.a,{href:"/chat-with-files",children:"Create a chatbot that can ingest files"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"use-files-in-a-flow",children:"Use files in a flow"}),"\n",(0,s.jsxs)(n.p,{children:["To use files in your Langflow file management system in a flow, add a component that accepts file input to your flow, such as the ",(0,s.jsx)(n.strong,{children:"File"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, add a ",(0,s.jsx)(n.strong,{children:"File"})," component to your flow, click ",(0,s.jsx)(n.strong,{children:"Select files"}),", and then select files from the ",(0,s.jsx)(n.strong,{children:"My Files"})," list."]}),"\n",(0,s.jsxs)(n.p,{children:["This list includes all files in your server's file management system, but you can only select ",(0,s.jsxs)(n.a,{href:"/components-data#file",children:["file types that are supported by the ",(0,s.jsx)(n.strong,{children:"File"})," component"]}),".\nIf you need another file type, you must use a different component that supports that file type, or you need to convert it to a supported type before uploading it."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about the ",(0,s.jsx)(n.strong,{children:"File"})," component and other data loading components, see ",(0,s.jsxs)(n.a,{href:"/components-data",children:[(0,s.jsx)(n.strong,{children:"Data"})," components"]}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"load-files-at-runtime",children:"Load files at runtime"}),"\n",(0,s.jsx)(n.p,{children:"You can use preloaded files in your flows, and you can load files at runtime, if your flow accepts file input.\nTo enable file input in your flow, do the following:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add a ",(0,s.jsxs)(n.a,{href:"/components-data#file",children:[(0,s.jsx)(n.strong,{children:"File"})," component"]})," to your flow."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Share"}),", select ",(0,s.jsx)(n.strong,{children:"API access"}),", and then click ",(0,s.jsx)(n.strong,{children:"Input Schema"})," to add ",(0,s.jsx)(n.a,{href:"/concepts-publish#input-schema",children:(0,s.jsx)(n.code,{children:"tweaks"})})," to the request payload in the flow's automatically generated code snippets."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Expand the ",(0,s.jsx)(n.strong,{children:"File"})," section, find the ",(0,s.jsx)(n.strong,{children:"Files"})," row, and then enable ",(0,s.jsx)(n.strong,{children:"Expose Input"})," to allow the parameter to be set at runtime through the Langflow API."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Close the ",(0,s.jsx)(n.strong,{children:"Input Schema"})," pane to return to the ",(0,s.jsx)(n.strong,{children:"API access"})," pane.\nThe payload in each code snippet now includes ",(0,s.jsx)(n.code,{children:"tweaks"}),", your ",(0,s.jsx)(n.strong,{children:"File"})," component's ID, and the ",(0,s.jsx)(n.code,{children:"path"})," key that you enabled in ",(0,s.jsx)(n.strong,{children:"Input Schema"}),":"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"tweaks"',props:{style:{color:"#A5D6FF"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "File-qYD5w"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:'\t "path"',props:{style:{color:"#7EE787"}}},{content:": []",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["When you run this flow programmatically, your script must upload a file to Langflow file management, and then pass the returned ",(0,s.jsx)(n.code,{children:"file_path"})," to the ",(0,s.jsx)(n.code,{children:"path"})," tweak in the ",(0,s.jsx)(n.code,{children:"/run"})," request:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"tweaks"',props:{style:{color:"#A5D6FF"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "FILE_COMPONENT_ID"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "path"',props:{style:{color:"#7EE787"}}},{content:": [ ",props:{style:{color:"#C9D1D9"}}},{content:'"file_path"',props:{style:{color:"#A5D6FF"}}},{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["For a complete example see ",(0,s.jsx)(n.a,{href:"/chat-with-files",children:"Create a chatbot that can ingest files"})," and ",(0,s.jsx)(n.a,{href:"/api-files",children:"Files endpoints"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["If you want to upload multiple files, you can pass multiple ",(0,s.jsx)(n.code,{children:"file_path"})," values in the ",(0,s.jsx)(n.code,{children:"path"})," array, such as ",(0,s.jsx)(n.code,{children:'[ "path1", "path2" ]'}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"upload-images",children:"Upload images"}),"\n",(0,s.jsx)(n.p,{children:"Langflow supports base64 images in the following formats:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"PNG"}),"\n",(0,s.jsx)(n.li,{children:"JPG/JPEG"}),"\n",(0,s.jsx)(n.li,{children:"GIF"}),"\n",(0,s.jsx)(n.li,{children:"BMP"}),"\n",(0,s.jsx)(n.li,{children:"WebP"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["You can upload images to the ",(0,s.jsx)(n.strong,{children:"Playground"})," chat interface and as runtime input with the Langflow API."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.strong,{children:"Playground"}),", you can drag-and-drop images into the chat input area, or you can click the ",(0,s.jsx)(n.strong,{children:"Attach image"})," icon to select an image to upload."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["When you trigger a flow with the ",(0,s.jsx)(n.code,{children:"/api/v1/run/$FLOW_ID"})," endpoint, you can use the ",(0,s.jsx)(n.code,{children:"files"})," parameter to attach image data as a base64-encoded string:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:'POST "http://',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_SERVER_ADDRESS",props:{style:{color:"#C9D1D9"}}},{content:"/api/v1/run/",props:{style:{color:"#A5D6FF"}}},{content:"$FLOW_ID",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"Content-Type: application/json" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"x-api-key: ',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_API_KEY",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-d ",props:{style:{color:"#C9D1D9"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "session_id": "custom_session_123",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "What is in this image?",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "files": ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."]',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For more specialized image processing, browse third-party ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:"bundles"})," or ",(0,s.jsx)(n.a,{href:"/components-custom-components",children:"create your own components"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"work-with-video-files",children:"Work with video files"}),"\n",(0,s.jsxs)(n.p,{children:["For videos, see the ",(0,s.jsx)(n.strong,{children:"Twelve Labs"})," and ",(0,s.jsx)(n.strong,{children:"YouTube"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:"bundles"})," in the Langflow ",(0,s.jsx)(n.strong,{children:"Components"})," menu."]}),"\n",(0,s.jsx)(n.h2,{id:"set-the-maximum-file-size",children:"Set the maximum file size"}),"\n",(0,s.jsxs)(n.p,{children:["By default, the maximum file size is 100 MB.\nTo modify this value, change the ",(0,s.jsx)(n.code,{children:"--max-file-size-upload"})," ",(0,s.jsx)(n.a,{href:"/environment-variables",children:"environment variable"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/components-data",children:[(0,s.jsx)(n.strong,{children:"Data"})," components"]})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/components-processing",children:[(0,s.jsx)(n.strong,{children:"Processing"})," components"]})}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(f,{...e})}):f(e)}function g(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/f735f5f3.88533d24.js b/assets/js/f735f5f3.88533d24.js
new file mode 100644
index 0000000000..b98f464d2a
--- /dev/null
+++ b/assets/js/f735f5f3.88533d24.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2495],{17886:(e,n,o)=>{o.d(n,{A:()=>l});o(96540);var t=o(64058),s=o(74848);function l({name:e,...n}){const o=t[e];return o?(0,s.jsx)(o,{...n}):null}},41884:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>c,default:()=>m,frontMatter:()=>a,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Concepts/concepts-file-management","title":"Manage files","description":"Each Langflow server has a file management system where you can store files that you want to use in your flows.","source":"@site/docs/Concepts/concepts-file-management.mdx","sourceDirName":"Concepts","slug":"/concepts-file-management","permalink":"/concepts-file-management","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Manage files","slug":"/concepts-file-management"},"sidebar":"docs","previous":{"title":"Environment variables","permalink":"/environment-variables"},"next":{"title":"Manage memory","permalink":"/memory"}}');var s=o(74848),l=o(28453),i=o(24754),r=o(17886);const a={title:"Manage files",slug:"/concepts-file-management"},c=void 0,d={},h={annotations:i.hk,Code:i.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Use the file management UI",id:"use-the-file-management-ui",level:2},{value:"Upload and manage files with the Langflow API",id:"upload-and-manage-files-with-the-langflow-api",level:2},{value:"Use files in a flow",id:"use-files-in-a-flow",level:2},{value:"Load files at runtime",id:"load-files-at-runtime",level:3},{value:"Upload images",id:"upload-images",level:2},{value:"Work with video files",id:"work-with-video-files",level:2},{value:"Set the maximum file size",id:"set-the-maximum-file-size",level:2},{value:"File management configuration",id:"file-management-configuration",level:2},{value:"See also",id:"see-also",level:2}];function f(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return h||g("CH",!1),h.Code||g("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(n.p,{children:"Each Langflow server has a file management system where you can store files that you want to use in your flows."}),"\n",(0,s.jsx)(n.p,{children:"Files uploaded to Langflow file management are stored locally to your Langflow server, and they are available to all of your flows."}),"\n",(0,s.jsx)(n.p,{children:"Uploading files to Langflow file management keeps your files in a central location, and allows you to reuse files across flows without repeated manual uploads."}),"\n",(0,s.jsx)(n.h2,{id:"use-the-file-management-ui",children:"Use the file management UI"}),"\n",(0,s.jsx)(n.p,{children:"You can use the file management UI to upload files from your local machine to your own Langflow server.\nYou can also manage all files that have been uploaded to your Langflow server."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Navigate to Langflow file management:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["In Langflow, on the ",(0,s.jsxs)(n.a,{href:"/concepts-flows#projects",children:[(0,s.jsx)(n.strong,{children:"Projects"})," page"]})," page, click ",(0,s.jsx)(n.strong,{children:"My Files"})," below the list of projects."]}),"\n",(0,s.jsxs)(n.li,{children:["From a browser, navigate to your Langflow server's ",(0,s.jsx)(n.code,{children:"/files"})," endpoint, such as ",(0,s.jsx)(n.code,{children:"http://localhost:7860/files"}),". Modify the base URL as needed for your Langflow server."]}),"\n",(0,s.jsxs)(n.li,{children:["For programmatic file management, use the ",(0,s.jsx)(n.a,{href:"/api-files",children:"Langflow API files endpoints"}),". However, the following steps assume you're using the file management UI."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["On the ",(0,s.jsx)(n.strong,{children:"My Files"})," page, click ",(0,s.jsx)(n.strong,{children:"Upload"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Select one or more files to upload."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"After uploading files, you can rename, download, copy, or delete files within the file management UI:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["To delete a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(r.A,{name:"Trash2","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Delete"}),".\nYou can delete multiple files in a single action."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["To download a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(r.A,{name:"Download","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Download"}),".\nIf you download multiple files in a single action, they are saved together in a zip file."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"upload-and-manage-files-with-the-langflow-api",children:"Upload and manage files with the Langflow API"}),"\n",(0,s.jsx)(n.p,{children:"With the Langflow API, you can upload and manage files in Langflow file management, and you can send files to flows programmatically at runtime."}),"\n",(0,s.jsxs)(n.p,{children:["For more information and examples, see ",(0,s.jsx)(n.a,{href:"/api-files",children:"Files endpoints"})," and ",(0,s.jsx)(n.a,{href:"/chat-with-files",children:"Create a chatbot that can ingest files"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"use-files-in-a-flow",children:"Use files in a flow"}),"\n",(0,s.jsxs)(n.p,{children:["To use files in your Langflow file management system in a flow, add a component that accepts file input to your flow, such as the ",(0,s.jsx)(n.strong,{children:"File"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, add a ",(0,s.jsx)(n.strong,{children:"File"})," component to your flow, click ",(0,s.jsx)(n.strong,{children:"Select files"}),", and then select files from the ",(0,s.jsx)(n.strong,{children:"My Files"})," list."]}),"\n",(0,s.jsxs)(n.p,{children:["This list includes all files in your server's file management system, but you can only select ",(0,s.jsxs)(n.a,{href:"/components-data#file",children:["file types that are supported by the ",(0,s.jsx)(n.strong,{children:"File"})," component"]}),".\nIf you need another file type, you must use a different component that supports that file type, or you need to convert it to a supported type before uploading it."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about the ",(0,s.jsx)(n.strong,{children:"File"})," component and other data loading components, see ",(0,s.jsxs)(n.a,{href:"/components-data",children:[(0,s.jsx)(n.strong,{children:"Data"})," components"]}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"load-files-at-runtime",children:"Load files at runtime"}),"\n",(0,s.jsx)(n.p,{children:"You can use preloaded files in your flows, and you can load files at runtime, if your flow accepts file input.\nTo enable file input in your flow, do the following:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add a ",(0,s.jsxs)(n.a,{href:"/components-data#file",children:[(0,s.jsx)(n.strong,{children:"File"})," component"]})," to your flow."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Share"}),", select ",(0,s.jsx)(n.strong,{children:"API access"}),", and then click ",(0,s.jsx)(n.strong,{children:"Input Schema"})," to add ",(0,s.jsx)(n.a,{href:"/concepts-publish#input-schema",children:(0,s.jsx)(n.code,{children:"tweaks"})})," to the request payload in the flow's automatically generated code snippets."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Expand the ",(0,s.jsx)(n.strong,{children:"File"})," section, find the ",(0,s.jsx)(n.strong,{children:"Files"})," row, and then enable ",(0,s.jsx)(n.strong,{children:"Expose Input"})," to allow the parameter to be set at runtime through the Langflow API."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Close the ",(0,s.jsx)(n.strong,{children:"Input Schema"})," pane to return to the ",(0,s.jsx)(n.strong,{children:"API access"})," pane.\nThe payload in each code snippet now includes ",(0,s.jsx)(n.code,{children:"tweaks"})," with your ",(0,s.jsx)(n.strong,{children:"File"})," component's ID and the ",(0,s.jsx)(n.code,{children:"path"})," key that you enabled in ",(0,s.jsx)(n.strong,{children:"Input Schema"}),":"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"tweaks"',props:{style:{color:"#A5D6FF"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "File-qYD5w"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:'\t "path"',props:{style:{color:"#7EE787"}}},{content:": []",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["When you run this flow programmatically, your script must upload a file to Langflow file management, and then pass the returned ",(0,s.jsx)(n.code,{children:"file_path"})," to the ",(0,s.jsx)(n.code,{children:"path"})," tweak in the ",(0,s.jsx)(n.code,{children:"/run"})," request:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"tweaks"',props:{style:{color:"#A5D6FF"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "FILE_COMPONENT_ID"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "path"',props:{style:{color:"#7EE787"}}},{content:": [ ",props:{style:{color:"#C9D1D9"}}},{content:'"file_path"',props:{style:{color:"#A5D6FF"}}},{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["For a complete example see ",(0,s.jsx)(n.a,{href:"/chat-with-files",children:"Create a chatbot that can ingest files"})," and ",(0,s.jsx)(n.a,{href:"/api-files",children:"Files endpoints"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["If you want to upload multiple files, you can pass multiple ",(0,s.jsx)(n.code,{children:"file_path"})," values in the ",(0,s.jsx)(n.code,{children:"path"})," array, such as ",(0,s.jsx)(n.code,{children:'[ "path1", "path2" ]'}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"upload-images",children:"Upload images"}),"\n",(0,s.jsx)(n.p,{children:"Langflow supports base64 images in the following formats:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"PNG"}),"\n",(0,s.jsx)(n.li,{children:"JPG/JPEG"}),"\n",(0,s.jsx)(n.li,{children:"GIF"}),"\n",(0,s.jsx)(n.li,{children:"BMP"}),"\n",(0,s.jsx)(n.li,{children:"WebP"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["You can upload images to the ",(0,s.jsx)(n.strong,{children:"Playground"})," chat interface and as runtime input with the Langflow API."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.strong,{children:"Playground"}),", you can drag-and-drop images into the chat input area, or you can click the ",(0,s.jsx)(n.strong,{children:"Attach image"})," icon to select an image to upload."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["When you trigger a flow with the ",(0,s.jsx)(n.code,{children:"/api/v1/run/$FLOW_ID"})," endpoint, you can use the ",(0,s.jsx)(n.code,{children:"files"})," parameter to attach image data as a base64-encoded string:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:'POST "http://',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_SERVER_ADDRESS",props:{style:{color:"#C9D1D9"}}},{content:"/api/v1/run/",props:{style:{color:"#A5D6FF"}}},{content:"$FLOW_ID",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"Content-Type: application/json" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"x-api-key: ',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_API_KEY",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-d ",props:{style:{color:"#C9D1D9"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "session_id": "custom_session_123",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "What is in this image?",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "files": ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."]',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For more specialized image processing, browse third-party ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:"bundles"})," or ",(0,s.jsx)(n.a,{href:"/components-custom-components",children:"create your own components"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"work-with-video-files",children:"Work with video files"}),"\n",(0,s.jsxs)(n.p,{children:["For videos, see the ",(0,s.jsx)(n.strong,{children:"Twelve Labs"})," and ",(0,s.jsx)(n.strong,{children:"YouTube"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:"bundles"})," in the Langflow ",(0,s.jsx)(n.strong,{children:"Components"})," menu."]}),"\n",(0,s.jsx)(n.h2,{id:"set-the-maximum-file-size",children:"Set the maximum file size"}),"\n",(0,s.jsxs)(n.p,{children:["By default, the maximum file size is 100 MB.\nTo modify this value, change the ",(0,s.jsx)(n.code,{children:"--max-file-size-upload"})," ",(0,s.jsx)(n.a,{href:"/environment-variables",children:"environment variable"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"file-management-configuration",children:"File management configuration"}),"\n",(0,s.jsxs)(n.p,{children:["You can configure file management behavior using the following ",(0,s.jsx)(n.a,{href:"/environment-variables",children:"environment variables"}),":"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Variable"}),(0,s.jsx)(n.th,{children:"Format"}),(0,s.jsx)(n.th,{children:"Default"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_FILE_SIZE_UPLOAD"})}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"100"})}),(0,s.jsx)(n.td,{children:"Set the maximum file size for the upload in megabytes."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"local"})}),(0,s.jsx)(n.td,{children:"Type of storage to use for file uploads and data."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/components-data",children:[(0,s.jsx)(n.strong,{children:"Data"})," components"]})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/components-processing",children:[(0,s.jsx)(n.strong,{children:"Processing"})," components"]})}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(f,{...e})}):f(e)}function g(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.299616b1.js b/assets/js/runtime~main.e77c9791.js
similarity index 97%
rename from assets/js/runtime~main.299616b1.js
rename to assets/js/runtime~main.e77c9791.js
index 357c8f11f7..772d71d509 100644
--- a/assets/js/runtime~main.299616b1.js
+++ b/assets/js/runtime~main.e77c9791.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,f,d,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every(e=>r.O[e](f[o]))?f.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach(a=>b[a]=()=>e[a]);return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((a,f)=>(r.f[f](e,a),a),[])),r.u=e=>"assets/js/"+({11:"d2df9b4e",15:"d803fa53",31:"03e862ce",38:"a99a45c9",78:"b768a3a5",118:"650a6085",126:"ae70dfbf",129:"dfa3dc90",188:"7f7a8893",191:"c643a6d5",230:"bc63ae25",253:"bb45d4f9",299:"9b5a408c",351:"b9acb8d9",368:"07c30ae4",375:"3d81f1cf",417:"93e16042",548:"37f47bc1",598:"db4f3bbd",606:"1d59d55f",692:"393c45a3",743:"e0f2017c",750:"33b5ee95",768:"6d684b63",785:"5f59ded8",787:"672a0eba",800:"a4c0ff01",824:"5015646b",879:"8bee5443",957:"c141421f",964:"05d835b4",1006:"47e58a89",1022:"1f19c1a1",1035:"24d32e91",1068:"f4c28b6b",1162:"f7e6b9d6",1185:"c2de64b8",1193:"444a6da6",1303:"41d45d82",1308:"ec030ab7",1361:"ff296c8d",1399:"16ceb5d2",1408:"2fc7e024",1426:"220d55f5",1488:"ac3cc3f5",1490:"0f761898",1500:"1e9025f7",1515:"2c05a87f",1556:"264ffc80",1567:"22dd74f7",1625:"92852ade",1628:"07e388ca",1690:"41a97a99",1845:"2ab0d4f5",1895:"d375ca1d",1956:"fe6f9601",2073:"7b7db446",2089:"ad06d5f0",2100:"9cc9f218",2138:"1a4e3797",2272:"ca5faf5d",2273:"e756fa26",2307:"8bd4a540",2323:"b9f9404d",2348:"f2da9399",2360:"017d425f",2423:"19bcb67f",2457:"46abd5bb",2469:"cd086441",2475:"1ab69cbd",2495:"f735f5f3",2551:"394022bb",2565:"622fd833",2624:"5aaddd60",2642:"ad13630c",2651:"8cd0650d",2777:"b3ba68b4",2818:"a9b73094",3094:"46d346a5",3147:"4e56251d",3164:"67f2dc6c",3225:"99a4401d",3240:"b079b393",3247:"f0b67137",3263:"730da84e",3274:"564a0250",3347:"b5257597",3361:"8f633f11",3468:"c76bd485",3549:"6d20d6ec",3576:"64045095",3694:"c2b1730c",3795:"c85076de",3832:"c3d82421",3859:"7679ca6e",3934:"e190040d",3953:"238e6167",4036:"fbcfc90d",4085:"cb17b4e0",4218:"d5bb0e16",4223:"f01590dc",4314:"f6a246db",4341:"e1a0f423",4384:"622bdc6f",4573:"baacc2a1",4614:"e55b8e98",4645:"fef056e9",4656:"b37620f5",4778:"e189eece",4784:"438e4337",4841:"8298c1cb",4867:"d73246f8",4876:"44691977",4891:"ca67d85f",4907:"86116998",4954:"a71efd4a",5107:"10156854",5110:"e9fe1d10",5138:"309383dc",5144:"944c5f91",5179:"41e3c105",5200:"ff7f32ba",5281:"a0511a5b",5284:"64ca91f1",5339:"9447891f",5352:"e627b1b2",5412:"a6d50436",5467:"40d13080",5474:"d175aa8b",5482:"9895db20",5513:"20d49d07",5514:"02955c09",5628:"bd7ab245",5657:"e82d58ff",5673:"73af8c33",5716:"946d1cee",5739:"69079906",5742:"aba21aa0",5757:"ad42ff54",5761:"7f193c41",5772:"4e7126f8",5799:"364e949f",5838:"bbb8ec1d",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",6003:"4d983c8e",6006:"7819cc1c",6010:"60c70af6",6053:"dfc50084",6063:"464a5f06",6080:"4d15791b",6108:"2fed9fb3",6214:"b1220dbd",6224:"ef9aa223",6281:"c96ce3ed",6311:"cce672fb",6332:"873508e7",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6559:"6f13807a",6608:"391afd3f",6649:"02e43f39",6682:"5a6d6120",6688:"388c3769",6753:"ff349d2f",6757:"86bd0a2e",6801:"acefda8b",6855:"0d8750f2",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",7098:"a7bd4aaa",7108:"688feaef",7142:"d0c1f670",7165:"547df4a1",7253:"709203b3",7257:"8321259f",7324:"ab072087",7339:"7a774ddf",7356:"2ea623f2",7414:"7a88e433",7472:"744aaf8b",7507:"651ef245",7512:"4c09a7b3",7713:"3a82b27e",7774:"8e9a8774",7800:"f48363a4",7807:"1a8a0a64",7824:"2b56b65e",7841:"0132780e",7859:"593d9d00",7894:"0f44198a",7902:"619c7267",7968:"9b0af131",8064:"274fd934",8069:"e267ad05",8082:"08d5c80a",8085:"cc44357e",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8268:"a4b6c971",8298:"153f2b62",8304:"73d1a090",8323:"b109d082",8374:"261f8123",8392:"20177945",8401:"17896441",8483:"a84e1c02",8504:"e6c6a4d2",8571:"da1ad91e",8593:"56350599",8607:"681e5335",8641:"8a61012d",8649:"7de42fc9",8667:"4bc8c03c",8679:"3705a9c0",8702:"42962acd",8750:"8a484c94",8790:"bfca1e36",8963:"56c23a02",8978:"aeae39fc",8990:"5f1a63c6",9033:"9f55b2fc",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9213:"62d1268c",9227:"7e40e6b3",9264:"c7f32161",9315:"16faf8bf",9331:"ffcd190c",9363:"f3312674",9371:"991799c5",9431:"cd8dccb5",9459:"97254d1d",9476:"57c9a2b8",9479:"4e038a6a",9483:"7823fa72",9509:"49311ca0",9555:"dedd5914",9592:"e24b341f",9610:"453ae64a",9619:"29b8e27a",9640:"3b25a2ae",9647:"5e95c892",9648:"e3230154",9705:"ee3b5967",9712:"d8c8efb9",9731:"52edee88",9751:"25255263",9752:"72d61395",9781:"b796be74",9839:"54980a8a",9857:"09f5326a",9888:"be76515e",9897:"f0eeb72e",9905:"43df3697",9976:"230d5fdc",9986:"d1f3cfe5"}[e]||e)+"."+{11:"d5ff4a36",15:"de4e342e",31:"78b50a4c",38:"97d1f5d1",78:"4574df70",118:"79568170",126:"f4f9387d",129:"aed5ad3e",188:"a8581ef5",191:"06742bab",230:"89c910c4",253:"88866337",299:"7f27e9b0",351:"7d92181c",368:"52ece150",375:"3139e828",416:"3c613765",417:"8f2aad0f",548:"0c5a2ccd",598:"0aa82d65",606:"1d972c5c",692:"14cdec29",743:"fbeb6a8b",750:"15800d8b",768:"9cf95467",785:"ddbc79b6",787:"61de6127",800:"3590ed9d",824:"6772f6d8",879:"d30ebdcb",957:"da9e1d2b",964:"2c95f308",1006:"91756e3c",1022:"a3a1b6a9",1035:"537b6cad",1068:"1aa07666",1162:"846917f8",1185:"d3dd3b47",1193:"45ad0c8d",1303:"61261f80",1308:"5c14cd9a",1361:"829ab8ba",1399:"5dc54cce",1408:"dc12de8f",1426:"83c9e864",1488:"feb8009a",1490:"e2579c56",1500:"939bd059",1515:"0452f57f",1556:"dab86421",1567:"f3e875be",1625:"14cdddbe",1628:"d1e23d1c",1690:"233f9ea1",1845:"10c9b2f6",1895:"5ee6b671",1956:"bad0948c",2073:"908ae64e",2089:"8d6bbf3a",2100:"7620fbc7",2138:"f62f93d0",2237:"8bc4ac99",2272:"6cc0e60c",2273:"869d0cd0",2307:"12907f81",2323:"ecbc4bd3",2348:"0a8e65d8",2360:"8f8d01b2",2423:"8b04bffc",2457:"d3b58293",2469:"48985967",2475:"2adece5b",2495:"82190a3e",2551:"8d428f35",2565:"1361199d",2624:"260a6367",2642:"93efaedc",2651:"6337b7d2",2777:"ea4ac225",2818:"749ec2f7",3094:"7813004f",3147:"a2691196",3164:"c41fea74",3225:"5d5c6c59",3240:"77fcc6f2",3247:"bc9be628",3263:"5c11b90a",3274:"91369ce9",3347:"0cb92093",3361:"a08cd1a6",3468:"816a0ed4",3477:"a7eba177",3549:"cc0ea13d",3576:"7effeb6f",3694:"e49ae4f2",3795:"8922e3a4",3832:"188494ba",3859:"fe9642bf",3934:"60d1fa30",3953:"ca32a726",4036:"b12cb74d",4085:"8fd20b57",4218:"6999489d",4223:"cd2d7fa9",4314:"499c51f9",4341:"c2d39d8a",4384:"2afcdb64",4573:"4632d92a",4614:"0b8884b3",4645:"90f165b9",4656:"28b34199",4754:"5b9f9c4a",4778:"05c0a98c",4784:"50569749",4841:"59d02440",4867:"2b2ad468",4876:"86f58a3f",4891:"390a6e31",4907:"55c92890",4954:"2783d86b",5107:"815ec989",5110:"e0d499d5",5138:"9eabd8c1",5144:"34cdb9e6",5179:"218a0f52",5200:"15da425f",5281:"f7dbe404",5284:"70b0fd8d",5339:"625a4df3",5352:"51bf40a8",5412:"88abe60b",5467:"15021cf2",5474:"fefcc336",5482:"ebb58851",5513:"589a75b8",5514:"2253cbd9",5628:"577f580a",5657:"41285f40",5673:"1b4d72ab",5716:"0263ef7b",5739:"fc012235",5742:"60b1d5b2",5757:"64d37952",5761:"c7ac6369",5772:"3e9c54c0",5799:"af1e8ee8",5838:"3fda98cf",5865:"3e108d34",5866:"656169e0",5883:"ce124431",5894:"8bd35b39",6003:"88b5ae24",6006:"057c63d7",6010:"0548b1ac",6053:"f0ef4b60",6063:"7158d571",6080:"ee762398",6108:"fe18abd0",6214:"bddc61db",6224:"6a6d3be5",6281:"7b4c11aa",6311:"3c1f85b9",6332:"80b65183",6350:"b5266339",6419:"3a113e81",6445:"01501475",6473:"b5e32ff9",6559:"61c3b369",6608:"963a3f2b",6649:"8c08c095",6682:"553b82ee",6688:"94eedc0d",6753:"21cd6866",6757:"b5693997",6801:"0bc5f127",6855:"ae79082f",6920:"e6592c1b",6934:"80a34a76",6949:"f53658de",7098:"fc1f6434",7108:"f3483d74",7142:"36655dba",7165:"8960ad8b",7253:"87a87a83",7257:"13c9c8f5",7324:"38ca3a01",7339:"1c2df3a0",7356:"13e0e74f",7397:"385da999",7414:"72fe3438",7472:"0b0a5a2d",7507:"26567835",7512:"e8c30b47",7713:"8936c8d8",7774:"8abc7031",7800:"04f79cf2",7807:"1614d6c0",7824:"c88c4b56",7841:"7a7d2c66",7859:"bfb7b6ef",7894:"da9118e9",7902:"5b0ca992",7968:"c9a8f1d4",8064:"f87e91fe",8069:"a0b07365",8082:"d5616cb6",8085:"a52f9777",8102:"880b800f",8158:"20de8b80",8184:"2cfa1e91",8188:"e9ecdb7d",8196:"2d4fce49",8208:"d167542f",8268:"d001e931",8298:"b27a6e24",8304:"e7ec2758",8323:"2ba7e517",8374:"94a69c0f",8392:"2985f669",8401:"23c55f2d",8483:"27434cb1",8504:"aa87f68a",8571:"362e3c9b",8593:"2c78f81a",8607:"6cbf7b90",8641:"20035178",8649:"4a780e8f",8667:"aa64adbd",8679:"17fe083a",8702:"021175a9",8750:"f3f3c257",8790:"6089c12e",8913:"47209f3b",8963:"7edd1f17",8978:"87dbf693",8990:"0f204179",9033:"89b869ca",9036:"4511c466",9048:"bdc69ee3",9099:"52569916",9126:"49ea8054",9148:"2b76b49f",9213:"9067f8f7",9227:"c1f98c4b",9264:"e2c79c9c",9315:"6bd06b19",9331:"ae254b82",9363:"9fe9d801",9371:"0c49b9ff",9431:"49b50a59",9459:"6cd30cd4",9476:"85415d9a",9479:"8f7257f5",9483:"7fb4c888",9495:"49162ef8",9509:"ff091211",9555:"fa95ab3d",9592:"656dec8d",9610:"37a1ad59",9619:"61531ad1",9640:"b4e56f6c",9647:"5cb928a1",9648:"126cbc92",9705:"46865692",9712:"7594c043",9731:"f1bacc22",9751:"38357c8c",9752:"61c90f27",9781:"43b74263",9839:"228637e3",9857:"33e763ea",9888:"4b26dfe8",9897:"da7686fd",9905:"b9989c34",9976:"bdc0515f",9986:"c86f00ba"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="langflow-docs:",r.l=(e,a,f,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach(e=>e(f)),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={10156854:"5107",17896441:"8401",20177945:"8392",25255263:"9751",44691977:"4876",56350599:"8593",64045095:"3576",69079906:"5739",86116998:"4907",d2df9b4e:"11",d803fa53:"15","03e862ce":"31",a99a45c9:"38",b768a3a5:"78","650a6085":"118",ae70dfbf:"126",dfa3dc90:"129","7f7a8893":"188",c643a6d5:"191",bc63ae25:"230",bb45d4f9:"253","9b5a408c":"299",b9acb8d9:"351","07c30ae4":"368","3d81f1cf":"375","93e16042":"417","37f47bc1":"548",db4f3bbd:"598","1d59d55f":"606","393c45a3":"692",e0f2017c:"743","33b5ee95":"750","6d684b63":"768","5f59ded8":"785","672a0eba":"787",a4c0ff01:"800","5015646b":"824","8bee5443":"879",c141421f:"957","05d835b4":"964","47e58a89":"1006","1f19c1a1":"1022","24d32e91":"1035",f4c28b6b:"1068",f7e6b9d6:"1162",c2de64b8:"1185","444a6da6":"1193","41d45d82":"1303",ec030ab7:"1308",ff296c8d:"1361","16ceb5d2":"1399","2fc7e024":"1408","220d55f5":"1426",ac3cc3f5:"1488","0f761898":"1490","1e9025f7":"1500","2c05a87f":"1515","264ffc80":"1556","22dd74f7":"1567","92852ade":"1625","07e388ca":"1628","41a97a99":"1690","2ab0d4f5":"1845",d375ca1d:"1895",fe6f9601:"1956","7b7db446":"2073",ad06d5f0:"2089","9cc9f218":"2100","1a4e3797":"2138",ca5faf5d:"2272",e756fa26:"2273","8bd4a540":"2307",b9f9404d:"2323",f2da9399:"2348","017d425f":"2360","19bcb67f":"2423","46abd5bb":"2457",cd086441:"2469","1ab69cbd":"2475",f735f5f3:"2495","394022bb":"2551","622fd833":"2565","5aaddd60":"2624",ad13630c:"2642","8cd0650d":"2651",b3ba68b4:"2777",a9b73094:"2818","46d346a5":"3094","4e56251d":"3147","67f2dc6c":"3164","99a4401d":"3225",b079b393:"3240",f0b67137:"3247","730da84e":"3263","564a0250":"3274",b5257597:"3347","8f633f11":"3361",c76bd485:"3468","6d20d6ec":"3549",c2b1730c:"3694",c85076de:"3795",c3d82421:"3832","7679ca6e":"3859",e190040d:"3934","238e6167":"3953",fbcfc90d:"4036",cb17b4e0:"4085",d5bb0e16:"4218",f01590dc:"4223",f6a246db:"4314",e1a0f423:"4341","622bdc6f":"4384",baacc2a1:"4573",e55b8e98:"4614",fef056e9:"4645",b37620f5:"4656",e189eece:"4778","438e4337":"4784","8298c1cb":"4841",d73246f8:"4867",ca67d85f:"4891",a71efd4a:"4954",e9fe1d10:"5110","309383dc":"5138","944c5f91":"5144","41e3c105":"5179",ff7f32ba:"5200",a0511a5b:"5281","64ca91f1":"5284","9447891f":"5339",e627b1b2:"5352",a6d50436:"5412","40d13080":"5467",d175aa8b:"5474","9895db20":"5482","20d49d07":"5513","02955c09":"5514",bd7ab245:"5628",e82d58ff:"5657","73af8c33":"5673","946d1cee":"5716",aba21aa0:"5742",ad42ff54:"5757","7f193c41":"5761","4e7126f8":"5772","364e949f":"5799",bbb8ec1d:"5838",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894","4d983c8e":"6003","7819cc1c":"6006","60c70af6":"6010",dfc50084:"6053","464a5f06":"6063","4d15791b":"6080","2fed9fb3":"6108",b1220dbd:"6214",ef9aa223:"6224",c96ce3ed:"6281",cce672fb:"6311","873508e7":"6332","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473","6f13807a":"6559","391afd3f":"6608","02e43f39":"6649","5a6d6120":"6682","388c3769":"6688",ff349d2f:"6753","86bd0a2e":"6757",acefda8b:"6801","0d8750f2":"6855",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949",a7bd4aaa:"7098","688feaef":"7108",d0c1f670:"7142","547df4a1":"7165","709203b3":"7253","8321259f":"7257",ab072087:"7324","7a774ddf":"7339","2ea623f2":"7356","7a88e433":"7414","744aaf8b":"7472","651ef245":"7507","4c09a7b3":"7512","3a82b27e":"7713","8e9a8774":"7774",f48363a4:"7800","1a8a0a64":"7807","2b56b65e":"7824","0132780e":"7841","593d9d00":"7859","0f44198a":"7894","619c7267":"7902","9b0af131":"7968","274fd934":"8064",e267ad05:"8069","08d5c80a":"8082",cc44357e:"8085","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208",a4b6c971:"8268","153f2b62":"8298","73d1a090":"8304",b109d082:"8323","261f8123":"8374",a84e1c02:"8483",e6c6a4d2:"8504",da1ad91e:"8571","681e5335":"8607","8a61012d":"8641","7de42fc9":"8649","4bc8c03c":"8667","3705a9c0":"8679","42962acd":"8702","8a484c94":"8750",bfca1e36:"8790","56c23a02":"8963",aeae39fc:"8978","5f1a63c6":"8990","9f55b2fc":"9033","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126","62d1268c":"9213","7e40e6b3":"9227",c7f32161:"9264","16faf8bf":"9315",ffcd190c:"9331",f3312674:"9363","991799c5":"9371",cd8dccb5:"9431","97254d1d":"9459","57c9a2b8":"9476","4e038a6a":"9479","7823fa72":"9483","49311ca0":"9509",dedd5914:"9555",e24b341f:"9592","453ae64a":"9610","29b8e27a":"9619","3b25a2ae":"9640","5e95c892":"9647",e3230154:"9648",ee3b5967:"9705",d8c8efb9:"9712","52edee88":"9731","72d61395":"9752",b796be74:"9781","54980a8a":"9839","09f5326a":"9857",be76515e:"9888",f0eeb72e:"9897","43df3697":"9905","230d5fdc":"9976",d1f3cfe5:"9986"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise((f,c)=>d=e[a]=[f,c]);f.push(d[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,b=f[0],t=f[1],o=f[2],n=0;if(b.some(a=>0!==e[a])){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,a,f,d,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every(e=>r.O[e](f[o]))?f.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach(a=>b[a]=()=>e[a]);return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((a,f)=>(r.f[f](e,a),a),[])),r.u=e=>"assets/js/"+({11:"d2df9b4e",15:"d803fa53",31:"03e862ce",38:"a99a45c9",78:"b768a3a5",118:"650a6085",126:"ae70dfbf",129:"dfa3dc90",188:"7f7a8893",191:"c643a6d5",230:"bc63ae25",253:"bb45d4f9",299:"9b5a408c",351:"b9acb8d9",368:"07c30ae4",375:"3d81f1cf",417:"93e16042",548:"37f47bc1",598:"db4f3bbd",606:"1d59d55f",692:"393c45a3",743:"e0f2017c",750:"33b5ee95",768:"6d684b63",785:"5f59ded8",787:"672a0eba",800:"a4c0ff01",824:"5015646b",879:"8bee5443",957:"c141421f",964:"05d835b4",1006:"47e58a89",1022:"1f19c1a1",1035:"24d32e91",1068:"f4c28b6b",1162:"f7e6b9d6",1185:"c2de64b8",1193:"444a6da6",1303:"41d45d82",1308:"ec030ab7",1361:"ff296c8d",1399:"16ceb5d2",1408:"2fc7e024",1426:"220d55f5",1488:"ac3cc3f5",1490:"0f761898",1500:"1e9025f7",1515:"2c05a87f",1556:"264ffc80",1567:"22dd74f7",1625:"92852ade",1628:"07e388ca",1690:"41a97a99",1845:"2ab0d4f5",1895:"d375ca1d",1956:"fe6f9601",2073:"7b7db446",2089:"ad06d5f0",2100:"9cc9f218",2138:"1a4e3797",2272:"ca5faf5d",2273:"e756fa26",2307:"8bd4a540",2323:"b9f9404d",2348:"f2da9399",2360:"017d425f",2423:"19bcb67f",2457:"46abd5bb",2469:"cd086441",2475:"1ab69cbd",2495:"f735f5f3",2551:"394022bb",2565:"622fd833",2624:"5aaddd60",2642:"ad13630c",2651:"8cd0650d",2777:"b3ba68b4",2818:"a9b73094",3094:"46d346a5",3147:"4e56251d",3164:"67f2dc6c",3225:"99a4401d",3240:"b079b393",3247:"f0b67137",3263:"730da84e",3274:"564a0250",3347:"b5257597",3361:"8f633f11",3468:"c76bd485",3549:"6d20d6ec",3576:"64045095",3694:"c2b1730c",3795:"c85076de",3832:"c3d82421",3859:"7679ca6e",3934:"e190040d",3953:"238e6167",4036:"fbcfc90d",4085:"cb17b4e0",4218:"d5bb0e16",4223:"f01590dc",4314:"f6a246db",4341:"e1a0f423",4384:"622bdc6f",4573:"baacc2a1",4614:"e55b8e98",4645:"fef056e9",4656:"b37620f5",4778:"e189eece",4784:"438e4337",4841:"8298c1cb",4867:"d73246f8",4876:"44691977",4891:"ca67d85f",4907:"86116998",4954:"a71efd4a",5107:"10156854",5110:"e9fe1d10",5138:"309383dc",5144:"944c5f91",5179:"41e3c105",5200:"ff7f32ba",5281:"a0511a5b",5284:"64ca91f1",5339:"9447891f",5352:"e627b1b2",5412:"a6d50436",5467:"40d13080",5474:"d175aa8b",5482:"9895db20",5513:"20d49d07",5514:"02955c09",5628:"bd7ab245",5657:"e82d58ff",5673:"73af8c33",5716:"946d1cee",5739:"69079906",5742:"aba21aa0",5757:"ad42ff54",5761:"7f193c41",5772:"4e7126f8",5799:"364e949f",5838:"bbb8ec1d",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",6003:"4d983c8e",6006:"7819cc1c",6010:"60c70af6",6053:"dfc50084",6063:"464a5f06",6080:"4d15791b",6108:"2fed9fb3",6214:"b1220dbd",6224:"ef9aa223",6281:"c96ce3ed",6311:"cce672fb",6332:"873508e7",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6559:"6f13807a",6608:"391afd3f",6649:"02e43f39",6682:"5a6d6120",6688:"388c3769",6753:"ff349d2f",6757:"86bd0a2e",6801:"acefda8b",6855:"0d8750f2",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",7098:"a7bd4aaa",7108:"688feaef",7142:"d0c1f670",7165:"547df4a1",7253:"709203b3",7257:"8321259f",7324:"ab072087",7339:"7a774ddf",7356:"2ea623f2",7414:"7a88e433",7472:"744aaf8b",7507:"651ef245",7512:"4c09a7b3",7713:"3a82b27e",7774:"8e9a8774",7800:"f48363a4",7807:"1a8a0a64",7824:"2b56b65e",7841:"0132780e",7859:"593d9d00",7894:"0f44198a",7902:"619c7267",7968:"9b0af131",8064:"274fd934",8069:"e267ad05",8082:"08d5c80a",8085:"cc44357e",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8268:"a4b6c971",8298:"153f2b62",8304:"73d1a090",8323:"b109d082",8374:"261f8123",8392:"20177945",8401:"17896441",8483:"a84e1c02",8504:"e6c6a4d2",8571:"da1ad91e",8593:"56350599",8607:"681e5335",8641:"8a61012d",8649:"7de42fc9",8667:"4bc8c03c",8679:"3705a9c0",8702:"42962acd",8750:"8a484c94",8790:"bfca1e36",8963:"56c23a02",8978:"aeae39fc",8990:"5f1a63c6",9033:"9f55b2fc",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9213:"62d1268c",9227:"7e40e6b3",9264:"c7f32161",9315:"16faf8bf",9331:"ffcd190c",9363:"f3312674",9371:"991799c5",9431:"cd8dccb5",9459:"97254d1d",9476:"57c9a2b8",9479:"4e038a6a",9483:"7823fa72",9509:"49311ca0",9555:"dedd5914",9592:"e24b341f",9610:"453ae64a",9619:"29b8e27a",9640:"3b25a2ae",9647:"5e95c892",9648:"e3230154",9705:"ee3b5967",9712:"d8c8efb9",9731:"52edee88",9751:"25255263",9752:"72d61395",9781:"b796be74",9839:"54980a8a",9857:"09f5326a",9888:"be76515e",9897:"f0eeb72e",9905:"43df3697",9976:"230d5fdc",9986:"d1f3cfe5"}[e]||e)+"."+{11:"d5ff4a36",15:"de4e342e",31:"78b50a4c",38:"97d1f5d1",78:"4574df70",118:"79568170",126:"f4f9387d",129:"aed5ad3e",188:"a8581ef5",191:"06742bab",230:"89c910c4",253:"88866337",299:"7f27e9b0",351:"7d92181c",368:"52ece150",375:"3139e828",416:"3c613765",417:"8f2aad0f",548:"0c5a2ccd",598:"0aa82d65",606:"1d972c5c",692:"14cdec29",743:"fbeb6a8b",750:"15800d8b",768:"9cf95467",785:"ddbc79b6",787:"61de6127",800:"3590ed9d",824:"6772f6d8",879:"d30ebdcb",957:"da9e1d2b",964:"2c95f308",1006:"91756e3c",1022:"a3a1b6a9",1035:"537b6cad",1068:"1aa07666",1162:"846917f8",1185:"d3dd3b47",1193:"45ad0c8d",1303:"61261f80",1308:"5c14cd9a",1361:"829ab8ba",1399:"5e136772",1408:"dc12de8f",1426:"83c9e864",1488:"feb8009a",1490:"e2579c56",1500:"939bd059",1515:"0452f57f",1556:"dab86421",1567:"f3e875be",1625:"14cdddbe",1628:"d1e23d1c",1690:"233f9ea1",1845:"4e475696",1895:"5ee6b671",1956:"bad0948c",2073:"908ae64e",2089:"8d6bbf3a",2100:"7620fbc7",2138:"f62f93d0",2237:"8bc4ac99",2272:"6cc0e60c",2273:"869d0cd0",2307:"12907f81",2323:"ecbc4bd3",2348:"0a8e65d8",2360:"8f8d01b2",2423:"8b04bffc",2457:"d3b58293",2469:"48985967",2475:"2adece5b",2495:"88533d24",2551:"8d428f35",2565:"1361199d",2624:"260a6367",2642:"93efaedc",2651:"6337b7d2",2777:"ea4ac225",2818:"749ec2f7",3094:"7813004f",3147:"a2691196",3164:"c41fea74",3225:"5d5c6c59",3240:"77fcc6f2",3247:"bc9be628",3263:"5c11b90a",3274:"91369ce9",3347:"0cb92093",3361:"a08cd1a6",3468:"816a0ed4",3477:"a7eba177",3549:"09a7e86e",3576:"7effeb6f",3694:"e49ae4f2",3795:"8922e3a4",3832:"188494ba",3859:"fe9642bf",3934:"60d1fa30",3953:"ca32a726",4036:"b12cb74d",4085:"8fd20b57",4218:"6999489d",4223:"cd2d7fa9",4314:"499c51f9",4341:"c2d39d8a",4384:"2afcdb64",4573:"4632d92a",4614:"0b8884b3",4645:"90f165b9",4656:"28b34199",4754:"5b9f9c4a",4778:"05c0a98c",4784:"50569749",4841:"59d02440",4867:"2b2ad468",4876:"86f58a3f",4891:"390a6e31",4907:"55c92890",4954:"2783d86b",5107:"815ec989",5110:"e0d499d5",5138:"9eabd8c1",5144:"34cdb9e6",5179:"218a0f52",5200:"15da425f",5281:"f7dbe404",5284:"70b0fd8d",5339:"625a4df3",5352:"51bf40a8",5412:"88abe60b",5467:"15021cf2",5474:"fefcc336",5482:"ebb58851",5513:"589a75b8",5514:"2253cbd9",5628:"577f580a",5657:"41285f40",5673:"1b4d72ab",5716:"0263ef7b",5739:"fc012235",5742:"60b1d5b2",5757:"64d37952",5761:"c7ac6369",5772:"3e9c54c0",5799:"af1e8ee8",5838:"3fda98cf",5865:"3e108d34",5866:"656169e0",5883:"ce124431",5894:"8bd35b39",6003:"88b5ae24",6006:"057c63d7",6010:"0548b1ac",6053:"f0ef4b60",6063:"7158d571",6080:"ee762398",6108:"fe18abd0",6214:"bddc61db",6224:"6a6d3be5",6281:"7b4c11aa",6311:"3c1f85b9",6332:"80b65183",6350:"b5266339",6419:"3a113e81",6445:"01501475",6473:"b5e32ff9",6559:"61c3b369",6608:"963a3f2b",6649:"8c08c095",6682:"553b82ee",6688:"94eedc0d",6753:"21cd6866",6757:"b5693997",6801:"0bc5f127",6855:"ae79082f",6920:"e6592c1b",6934:"80a34a76",6949:"f53658de",7098:"fc1f6434",7108:"f3483d74",7142:"36655dba",7165:"8960ad8b",7253:"87a87a83",7257:"13c9c8f5",7324:"38ca3a01",7339:"1c2df3a0",7356:"13e0e74f",7397:"385da999",7414:"72fe3438",7472:"0b0a5a2d",7507:"26567835",7512:"e8c30b47",7713:"8936c8d8",7774:"8abc7031",7800:"04f79cf2",7807:"1614d6c0",7824:"c88c4b56",7841:"7a7d2c66",7859:"bfb7b6ef",7894:"da9118e9",7902:"5b0ca992",7968:"c9a8f1d4",8064:"f87e91fe",8069:"a0b07365",8082:"d5616cb6",8085:"a52f9777",8102:"880b800f",8158:"20de8b80",8184:"2cfa1e91",8188:"e9ecdb7d",8196:"2d4fce49",8208:"d167542f",8268:"d001e931",8298:"b27a6e24",8304:"e7ec2758",8323:"2ba7e517",8374:"94a69c0f",8392:"2985f669",8401:"23c55f2d",8483:"27434cb1",8504:"f15453c7",8571:"362e3c9b",8593:"359d82ad",8607:"6cbf7b90",8641:"20035178",8649:"4a780e8f",8667:"aa64adbd",8679:"17fe083a",8702:"021175a9",8750:"f3f3c257",8790:"6089c12e",8913:"47209f3b",8963:"7edd1f17",8978:"87dbf693",8990:"0f204179",9033:"89b869ca",9036:"4511c466",9048:"bdc69ee3",9099:"52569916",9126:"49ea8054",9148:"2b76b49f",9213:"9067f8f7",9227:"c1f98c4b",9264:"e2c79c9c",9315:"6bd06b19",9331:"ae254b82",9363:"9fe9d801",9371:"0c49b9ff",9431:"49b50a59",9459:"6cd30cd4",9476:"85415d9a",9479:"8f7257f5",9483:"7fb4c888",9495:"49162ef8",9509:"ff091211",9555:"fa95ab3d",9592:"656dec8d",9610:"37a1ad59",9619:"61531ad1",9640:"b4e56f6c",9647:"5cb928a1",9648:"93237aca",9705:"46865692",9712:"7594c043",9731:"f1bacc22",9751:"38357c8c",9752:"61c90f27",9781:"43b74263",9839:"228637e3",9857:"33e763ea",9888:"4b26dfe8",9897:"da7686fd",9905:"b9989c34",9976:"bdc0515f",9986:"c86f00ba"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="langflow-docs:",r.l=(e,a,f,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach(e=>e(f)),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={10156854:"5107",17896441:"8401",20177945:"8392",25255263:"9751",44691977:"4876",56350599:"8593",64045095:"3576",69079906:"5739",86116998:"4907",d2df9b4e:"11",d803fa53:"15","03e862ce":"31",a99a45c9:"38",b768a3a5:"78","650a6085":"118",ae70dfbf:"126",dfa3dc90:"129","7f7a8893":"188",c643a6d5:"191",bc63ae25:"230",bb45d4f9:"253","9b5a408c":"299",b9acb8d9:"351","07c30ae4":"368","3d81f1cf":"375","93e16042":"417","37f47bc1":"548",db4f3bbd:"598","1d59d55f":"606","393c45a3":"692",e0f2017c:"743","33b5ee95":"750","6d684b63":"768","5f59ded8":"785","672a0eba":"787",a4c0ff01:"800","5015646b":"824","8bee5443":"879",c141421f:"957","05d835b4":"964","47e58a89":"1006","1f19c1a1":"1022","24d32e91":"1035",f4c28b6b:"1068",f7e6b9d6:"1162",c2de64b8:"1185","444a6da6":"1193","41d45d82":"1303",ec030ab7:"1308",ff296c8d:"1361","16ceb5d2":"1399","2fc7e024":"1408","220d55f5":"1426",ac3cc3f5:"1488","0f761898":"1490","1e9025f7":"1500","2c05a87f":"1515","264ffc80":"1556","22dd74f7":"1567","92852ade":"1625","07e388ca":"1628","41a97a99":"1690","2ab0d4f5":"1845",d375ca1d:"1895",fe6f9601:"1956","7b7db446":"2073",ad06d5f0:"2089","9cc9f218":"2100","1a4e3797":"2138",ca5faf5d:"2272",e756fa26:"2273","8bd4a540":"2307",b9f9404d:"2323",f2da9399:"2348","017d425f":"2360","19bcb67f":"2423","46abd5bb":"2457",cd086441:"2469","1ab69cbd":"2475",f735f5f3:"2495","394022bb":"2551","622fd833":"2565","5aaddd60":"2624",ad13630c:"2642","8cd0650d":"2651",b3ba68b4:"2777",a9b73094:"2818","46d346a5":"3094","4e56251d":"3147","67f2dc6c":"3164","99a4401d":"3225",b079b393:"3240",f0b67137:"3247","730da84e":"3263","564a0250":"3274",b5257597:"3347","8f633f11":"3361",c76bd485:"3468","6d20d6ec":"3549",c2b1730c:"3694",c85076de:"3795",c3d82421:"3832","7679ca6e":"3859",e190040d:"3934","238e6167":"3953",fbcfc90d:"4036",cb17b4e0:"4085",d5bb0e16:"4218",f01590dc:"4223",f6a246db:"4314",e1a0f423:"4341","622bdc6f":"4384",baacc2a1:"4573",e55b8e98:"4614",fef056e9:"4645",b37620f5:"4656",e189eece:"4778","438e4337":"4784","8298c1cb":"4841",d73246f8:"4867",ca67d85f:"4891",a71efd4a:"4954",e9fe1d10:"5110","309383dc":"5138","944c5f91":"5144","41e3c105":"5179",ff7f32ba:"5200",a0511a5b:"5281","64ca91f1":"5284","9447891f":"5339",e627b1b2:"5352",a6d50436:"5412","40d13080":"5467",d175aa8b:"5474","9895db20":"5482","20d49d07":"5513","02955c09":"5514",bd7ab245:"5628",e82d58ff:"5657","73af8c33":"5673","946d1cee":"5716",aba21aa0:"5742",ad42ff54:"5757","7f193c41":"5761","4e7126f8":"5772","364e949f":"5799",bbb8ec1d:"5838",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894","4d983c8e":"6003","7819cc1c":"6006","60c70af6":"6010",dfc50084:"6053","464a5f06":"6063","4d15791b":"6080","2fed9fb3":"6108",b1220dbd:"6214",ef9aa223:"6224",c96ce3ed:"6281",cce672fb:"6311","873508e7":"6332","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473","6f13807a":"6559","391afd3f":"6608","02e43f39":"6649","5a6d6120":"6682","388c3769":"6688",ff349d2f:"6753","86bd0a2e":"6757",acefda8b:"6801","0d8750f2":"6855",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949",a7bd4aaa:"7098","688feaef":"7108",d0c1f670:"7142","547df4a1":"7165","709203b3":"7253","8321259f":"7257",ab072087:"7324","7a774ddf":"7339","2ea623f2":"7356","7a88e433":"7414","744aaf8b":"7472","651ef245":"7507","4c09a7b3":"7512","3a82b27e":"7713","8e9a8774":"7774",f48363a4:"7800","1a8a0a64":"7807","2b56b65e":"7824","0132780e":"7841","593d9d00":"7859","0f44198a":"7894","619c7267":"7902","9b0af131":"7968","274fd934":"8064",e267ad05:"8069","08d5c80a":"8082",cc44357e:"8085","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208",a4b6c971:"8268","153f2b62":"8298","73d1a090":"8304",b109d082:"8323","261f8123":"8374",a84e1c02:"8483",e6c6a4d2:"8504",da1ad91e:"8571","681e5335":"8607","8a61012d":"8641","7de42fc9":"8649","4bc8c03c":"8667","3705a9c0":"8679","42962acd":"8702","8a484c94":"8750",bfca1e36:"8790","56c23a02":"8963",aeae39fc:"8978","5f1a63c6":"8990","9f55b2fc":"9033","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126","62d1268c":"9213","7e40e6b3":"9227",c7f32161:"9264","16faf8bf":"9315",ffcd190c:"9331",f3312674:"9363","991799c5":"9371",cd8dccb5:"9431","97254d1d":"9459","57c9a2b8":"9476","4e038a6a":"9479","7823fa72":"9483","49311ca0":"9509",dedd5914:"9555",e24b341f:"9592","453ae64a":"9610","29b8e27a":"9619","3b25a2ae":"9640","5e95c892":"9647",e3230154:"9648",ee3b5967:"9705",d8c8efb9:"9712","52edee88":"9731","72d61395":"9752",b796be74:"9781","54980a8a":"9839","09f5326a":"9857",be76515e:"9888",f0eeb72e:"9897","43df3697":"9905","230d5fdc":"9976",d1f3cfe5:"9986"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise((f,c)=>d=e[a]=[f,c]);f.push(d[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,b=f[0],t=f[1],o=f[2],n=0;if(b.some(a=>0!==e[a])){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n
-
-
+
+
diff --git a/bundles-amazon.html b/bundles-amazon.html
index 993ad01296..1ef3ae0766 100644
--- a/bundles-amazon.html
+++ b/bundles-amazon.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-anthropic.html b/bundles-anthropic.html
index 3e231e7643..b449fe47dd 100644
--- a/bundles-anthropic.html
+++ b/bundles-anthropic.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-arxiv.html b/bundles-arxiv.html
index 2569fdb51b..dcc8aded52 100644
--- a/bundles-arxiv.html
+++ b/bundles-arxiv.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-azure.html b/bundles-azure.html
index b3c38fc9c1..85e8f772de 100644
--- a/bundles-azure.html
+++ b/bundles-azure.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-baidu.html b/bundles-baidu.html
index 6fdd4d423b..88ff8eae41 100644
--- a/bundles-baidu.html
+++ b/bundles-baidu.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-bing.html b/bundles-bing.html
index 67e7f587cb..17dbf7ef92 100644
--- a/bundles-bing.html
+++ b/bundles-bing.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-cloudflare.html b/bundles-cloudflare.html
index ebd2a63fe5..8d3ed401cc 100644
--- a/bundles-cloudflare.html
+++ b/bundles-cloudflare.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-cohere.html b/bundles-cohere.html
index 01baf9135e..2164f6aed6 100644
--- a/bundles-cohere.html
+++ b/bundles-cohere.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-datastax.html b/bundles-datastax.html
index fe6a57c5fa..711f8249df 100644
--- a/bundles-datastax.html
+++ b/bundles-datastax.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-deepseek.html b/bundles-deepseek.html
index 20bc35d2ec..5a67eec995 100644
--- a/bundles-deepseek.html
+++ b/bundles-deepseek.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-duckduckgo.html b/bundles-duckduckgo.html
index 39517fb713..429b1939f7 100644
--- a/bundles-duckduckgo.html
+++ b/bundles-duckduckgo.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-exa.html b/bundles-exa.html
index 9313c00652..10078987e1 100644
--- a/bundles-exa.html
+++ b/bundles-exa.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-glean.html b/bundles-glean.html
index 6db499c647..d1125a197a 100644
--- a/bundles-glean.html
+++ b/bundles-glean.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-google.html b/bundles-google.html
index 4cde010419..8973bb8d49 100644
--- a/bundles-google.html
+++ b/bundles-google.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-groq.html b/bundles-groq.html
index f4b67b229e..85969123f3 100644
--- a/bundles-groq.html
+++ b/bundles-groq.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-huggingface.html b/bundles-huggingface.html
index aabb8d0851..8c49b6509c 100644
--- a/bundles-huggingface.html
+++ b/bundles-huggingface.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-ibm.html b/bundles-ibm.html
index 6ce504a069..b2f57dee9f 100644
--- a/bundles-ibm.html
+++ b/bundles-ibm.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-icosacomputing.html b/bundles-icosacomputing.html
index 323e71eeef..5ba52535a6 100644
--- a/bundles-icosacomputing.html
+++ b/bundles-icosacomputing.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-langchain.html b/bundles-langchain.html
index 8e2654bb91..4f95ac9dad 100644
--- a/bundles-langchain.html
+++ b/bundles-langchain.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-lmstudio.html b/bundles-lmstudio.html
index e9bdd9ccb2..c3143bf237 100644
--- a/bundles-lmstudio.html
+++ b/bundles-lmstudio.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-maritalk.html b/bundles-maritalk.html
index 9da94564ce..fa1205eda4 100644
--- a/bundles-maritalk.html
+++ b/bundles-maritalk.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-mem0.html b/bundles-mem0.html
index d0d528436c..5beec4da67 100644
--- a/bundles-mem0.html
+++ b/bundles-mem0.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-mistralai.html b/bundles-mistralai.html
index 09ff6a9b96..e6356c7e89 100644
--- a/bundles-mistralai.html
+++ b/bundles-mistralai.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-novita.html b/bundles-novita.html
index f75552d5b3..04fbe66a2c 100644
--- a/bundles-novita.html
+++ b/bundles-novita.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-nvidia.html b/bundles-nvidia.html
index f0715f7e8e..a923bf92d2 100644
--- a/bundles-nvidia.html
+++ b/bundles-nvidia.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-ollama.html b/bundles-ollama.html
index ec434a9f02..1312dd4d7e 100644
--- a/bundles-ollama.html
+++ b/bundles-ollama.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-openai.html b/bundles-openai.html
index 1c3f8d9ffb..30086495cf 100644
--- a/bundles-openai.html
+++ b/bundles-openai.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-openrouter.html b/bundles-openrouter.html
index 57dfb7514f..5d72fdd70c 100644
--- a/bundles-openrouter.html
+++ b/bundles-openrouter.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-perplexity.html b/bundles-perplexity.html
index c42514511a..939a4ae3d3 100644
--- a/bundles-perplexity.html
+++ b/bundles-perplexity.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-redis.html b/bundles-redis.html
index 808e994917..6d1f102e78 100644
--- a/bundles-redis.html
+++ b/bundles-redis.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-sambanova.html b/bundles-sambanova.html
index 1103d8e418..0b095a2ef9 100644
--- a/bundles-sambanova.html
+++ b/bundles-sambanova.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-searchapi.html b/bundles-searchapi.html
index 8e63141766..e21ab4fd3d 100644
--- a/bundles-searchapi.html
+++ b/bundles-searchapi.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-vertexai.html b/bundles-vertexai.html
index dc14410843..c57af87cc2 100644
--- a/bundles-vertexai.html
+++ b/bundles-vertexai.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-wikipedia.html b/bundles-wikipedia.html
index 70484016d7..d6852136c8 100644
--- a/bundles-wikipedia.html
+++ b/bundles-wikipedia.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/bundles-xai.html b/bundles-xai.html
index 420bb05f13..9cd52fd109 100644
--- a/bundles-xai.html
+++ b/bundles-xai.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/chat-with-files.html b/chat-with-files.html
index 7bf4759313..bfb18192ee 100644
--- a/chat-with-files.html
+++ b/chat-with-files.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/chat-with-rag.html b/chat-with-rag.html
index dff7688254..aee8e12160 100644
--- a/chat-with-rag.html
+++ b/chat-with-rag.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-agents.html b/components-agents.html
index 97a55c0239..d6eea8a26b 100644
--- a/components-agents.html
+++ b/components-agents.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-bundle-components.html b/components-bundle-components.html
index 7d9172e78e..e3cb510d6b 100644
--- a/components-bundle-components.html
+++ b/components-bundle-components.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-custom-components.html b/components-custom-components.html
index fd120c4c96..60c8211d7a 100644
--- a/components-custom-components.html
+++ b/components-custom-components.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-data.html b/components-data.html
index 6372c6569b..99a38edd76 100644
--- a/components-data.html
+++ b/components-data.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-embedding-models.html b/components-embedding-models.html
index 3b1a762d0f..a74b08b788 100644
--- a/components-embedding-models.html
+++ b/components-embedding-models.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-helpers.html b/components-helpers.html
index 1104a0363a..208eb7eb2f 100644
--- a/components-helpers.html
+++ b/components-helpers.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-io.html b/components-io.html
index e6663cf131..bc93af195c 100644
--- a/components-io.html
+++ b/components-io.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-logic.html b/components-logic.html
index ae32336c36..f89a8651a0 100644
--- a/components-logic.html
+++ b/components-logic.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-memories.html b/components-memories.html
index 5d176a4b1a..8fa0004e34 100644
--- a/components-memories.html
+++ b/components-memories.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-models.html b/components-models.html
index 45c6ef758b..3332683320 100644
--- a/components-models.html
+++ b/components-models.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-processing.html b/components-processing.html
index 69191e7df5..f2c4034e62 100644
--- a/components-processing.html
+++ b/components-processing.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-prompts.html b/components-prompts.html
index cb330a52e1..816e48b185 100644
--- a/components-prompts.html
+++ b/components-prompts.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-tools.html b/components-tools.html
index b5c84f16b4..de881f4465 100644
--- a/components-tools.html
+++ b/components-tools.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/components-vector-stores.html b/components-vector-stores.html
index 0bc9d305a0..20fcc15018 100644
--- a/components-vector-stores.html
+++ b/components-vector-stores.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/concepts-components.html b/concepts-components.html
index 15c34dae1d..0cd843a825 100644
--- a/concepts-components.html
+++ b/concepts-components.html
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/concepts-file-management.html b/concepts-file-management.html
index 94d349910e..1026ecb438 100644
--- a/concepts-file-management.html
+++ b/concepts-file-management.html
@@ -22,8 +22,8 @@
-
-
+
+
@@ -106,7 +106,7 @@ To enable file input in your flow, do the following:
Close the Input Schema pane to return to the API access pane.
-The payload in each code snippet now includes tweaks, your File component's ID, and the path key that you enabled in Input Schema:
+The payload in each code snippet now includes tweaks with your File component's ID and the path key that you enabled in Input Schema:
_10
"tweaks": {
_10
"File-qYD5w": {
_10
"path": []
_10
}
_10
}
@@ -141,11 +141,14 @@ The payload in each code snippet now includes tweaks, your
Global variables of the Credential type are hidden in the visual editor and entered in a password-style input field that masks the value. This type isn't allowed in session ID fields where the value is exposed.
-
All default environment variables and variables sourced from the environment using LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT are automatically set as Credential type.
+
All default environment variables and variables sourced from the environment using LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT are automatically set as Credential type.
+For more information, see Default environment variables.
Enter the Value for your global variable.
@@ -106,7 +108,8 @@ You can use a global variable in any text input field that displays the
Save and close the file.
Start Langflow with the .env file:
-
_10
VARIABLE1="VALUE1" VARIABLE2="VALUE2" python -m langflow run --env-file .env
-
In this example, the environment variables (VARIABLE1="VALUE1" and VARIABLE2="VALUE2") are prefixed to the startup command.
-This is a rudimentary method for exposing environment variables to Python on the command line, and is meant for illustrative purposes.
-Make sure to expose your environment variables to Langflow in a manner that best suits your own environment.
+
_10
uv run langflow run --env-file .env
+
Alternatively, you can set environment variables directly in the command line:
+
_10
VARIABLE1="VALUE1" VARIABLE2="VALUE2" uv run langflow run --env-file .env
+
The command-line variables will override any values in the .env file.
+Expose your environment variables to Langflow in a manner that best suits your own environment.
Confirm that Langflow successfully sourced the global variables from the environment:
@@ -160,7 +164,8 @@ Make sure to expose your environment variables to Langflow in a manner that best
If you're using Docker, you can pass LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT directly from the command line or from a .env file.
To pass LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT directly from the command line:
To pass LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT from a .env file:
_10
docker run -it --rm \
_10
-p 7860:7860 \
_10
--env-file .env \
_10
-e VARIABLE1="VALUE1" \
_10
-e VARIABLE2="VALUE2" \
_10
langflowai/langflow:latest
-
info
When adding global variables from the environment, the following limitations apply:
+
When adding global variables from the environment, the following limitations apply:
+
You can only source the Name and Value from the environment.
To add additional parameters, such as the Apply To Fields parameter, you must edit the global variables in your Langflow Settings.
@@ -168,41 +173,17 @@ Make sure to expose your environment variables to Langflow in a manner that best
Global variables that you add from the environment always have the Credential type.
-
-
If you want to explicitly prevent Langflow from sourcing global variables from the environment, set LANGFLOW_STORE_ENVIRONMENT_VARIABLES=False in your .env file.
-
If you want to automatically set fallback values for your global variables from environment variables, set LANGFLOW_FALLBACK_FROM_ENV_VAR=True in your .env file. When this setting is enabled, if a global variable isn't found, Langflow attempts to use an environment variable with the same name as a backup.
Langflow automatically detects and converts some environment variables into global variables of the type Credential, which are applied to the specific fields in components that require them. Currently, the following variables are supported:
-
-
ANTHROPIC_API_KEY
-
ASTRA_DB_API_ENDPOINT
-
ASTRA_DB_APPLICATION_TOKEN
-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
-
AZURE_OPENAI_API_DEPLOYMENT_NAME
-
AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME
-
AZURE_OPENAI_API_INSTANCE_NAME
-
AZURE_OPENAI_API_KEY
-
AZURE_OPENAI_API_VERSION
-
COHERE_API_KEY
-
COMPOSIO_API_KEY
-
GOOGLE_API_KEY
-
GROQ_API_KEY
-
HUGGINGFACEHUB_API_TOKEN
-
NOVITA_API_KEY
-
OPENAI_API_KEY
-
PINECONE_API_KEY
-
SAMBANOVA_API_KEY
-
SEARCHAPI_API_KEY
-
SERPAPI_API_KEY
-
TAVILY_API_KEY
-
UPSTASH_VECTOR_REST_TOKEN
-
UPSTASH_VECTOR_REST_URL
-
VECTARA_API_KEY
-
VECTARA_CORPUS_ID
-
VECTARA_CUSTOMER_ID
-
For information about other environment variables and their usage, see Environment Variables.