From 88e2f8c56e8dc5d0afe058fcb97f0661fedc5fb2 Mon Sep 17 00:00:00 2001
From: "github-merge-queue[bot]"
Date: Thu, 22 Jan 2026 20:07:45 +0000
Subject: [PATCH] deploy: d26c6f735a4c488e8f8c4b55bed194bcafac6cfe
---
404.html | 2 +-
agent-tutorial.html | 2 +-
agents-tools.html | 2 +-
agents.html | 2 +-
api-build.html | 2 +-
api-files.html | 2 +-
api-flows-run.html | 2 +-
api-flows.html | 2 +-
api-keys-and-authentication.html | 2 +-
api-logs.html | 2 +-
api-monitor.html | 2 +-
api-openai-responses.html | 2 +-
api-projects.html | 2 +-
api-reference-api-examples.html | 2 +-
api-request.html | 2 +-
api-users.html | 2 +-
api.html | 2 +-
api/openapi.json.html | 2 +-
api/openapi.yaml.html | 2 +-
assets/js/{755d162a.be1bbe87.js => 755d162a.e04c4c2c.js} | 2 +-
assets/js/8bee5443.655e0843.js | 1 +
assets/js/8bee5443.b4c046be.js | 1 -
assets/js/{99931d31.ec83b3bb.js => 99931d31.3123c8e7.js} | 2 +-
assets/js/{9a5e6f6b.d2b7c901.js => 9a5e6f6b.bd0de960.js} | 2 +-
...runtime~main.4b68ad37.js => runtime~main.333f23d2.js} | 2 +-
batch-run.html | 2 +-
bundles-aiml.html | 2 +-
bundles-altk.html | 2 +-
bundles-amazon.html | 2 +-
bundles-anthropic.html | 2 +-
bundles-apify.html | 2 +-
bundles-arxiv.html | 2 +-
bundles-assemblyai.html | 2 +-
bundles-azure.html | 2 +-
bundles-baidu.html | 2 +-
bundles-bing.html | 2 +-
bundles-cassandra.html | 2 +-
bundles-chroma.html | 2 +-
bundles-cleanlab.html | 2 +-
bundles-clickhouse.html | 2 +-
bundles-cloudflare.html | 2 +-
bundles-cohere.html | 2 +-
bundles-cometapi.html | 2 +-
bundles-composio.html | 2 +-
bundles-couchbase.html | 2 +-
bundles-cuga.html | 2 +-
bundles-datastax.html | 2 +-
bundles-deepseek.html | 2 +-
bundles-docling.html | 2 +-
bundles-duckduckgo.html | 2 +-
bundles-elastic.html | 2 +-
bundles-exa.html | 2 +-
bundles-faiss.html | 2 +-
bundles-glean.html | 2 +-
bundles-google.html | 2 +-
bundles-groq.html | 2 +-
bundles-huggingface.html | 2 +-
bundles-ibm.html | 2 +-
bundles-icosacomputing.html | 2 +-
bundles-langchain.html | 2 +-
bundles-lmstudio.html | 2 +-
bundles-maritalk.html | 2 +-
bundles-mem0.html | 2 +-
bundles-milvus.html | 2 +-
bundles-mistralai.html | 2 +-
bundles-mongodb.html | 2 +-
bundles-notion.html | 2 +-
bundles-novita.html | 2 +-
bundles-nvidia.html | 2 +-
bundles-ollama.html | 2 +-
bundles-openai.html | 2 +-
bundles-openrouter.html | 2 +-
bundles-perplexity.html | 2 +-
bundles-pgvector.html | 2 +-
bundles-pinecone.html | 2 +-
bundles-qdrant.html | 2 +-
bundles-redis.html | 2 +-
bundles-sambanova.html | 2 +-
bundles-searchapi.html | 2 +-
bundles-serper.html | 2 +-
bundles-supabase.html | 2 +-
bundles-upstash.html | 2 +-
bundles-vectara.html | 2 +-
bundles-vertexai.html | 2 +-
bundles-vllm.html | 2 +-
bundles-weaviate.html | 2 +-
bundles-wikipedia.html | 2 +-
bundles-xai.html | 2 +-
calculator.html | 2 +-
chat-input-and-output.html | 2 +-
chat-with-files.html | 2 +-
chat-with-rag.html | 2 +-
component-webhook.html | 2 +-
components-agents.html | 2 +-
components-bundle-components.html | 2 +-
components-custom-components.html | 2 +-
components-embedding-models.html | 2 +-
components-models.html | 2 +-
components-prompts.html | 2 +-
concepts-components.html | 2 +-
concepts-file-management.html | 5 +++--
concepts-flows-import.html | 2 +-
concepts-flows.html | 2 +-
concepts-overview.html | 2 +-
concepts-playground.html | 2 +-
concepts-publish.html | 2 +-
concepts-voice-mode.html | 2 +-
configuration-cli.html | 2 +-
configuration-custom-database.html | 2 +-
configuration-global-variables.html | 2 +-
contributing-bundles.html | 2 +-
contributing-community.html | 2 +-
contributing-component-tests.html | 2 +-
contributing-components.html | 2 +-
contributing-github-issues.html | 2 +-
contributing-how-to-contribute.html | 2 +-
contributing-telemetry.html | 2 +-
contributing-templates.html | 2 +-
current-date.html | 2 +-
data-operations.html | 2 +-
data-types.html | 2 +-
dataframe-operations.html | 2 +-
deployment-architecture.html | 2 +-
deployment-caddyfile.html | 2 +-
deployment-docker.html | 2 +-
deployment-gcp.html | 2 +-
deployment-hugging-face-spaces.html | 2 +-
deployment-kubernetes-dev.html | 2 +-
deployment-kubernetes-prod.html | 2 +-
deployment-nginx-ssl.html | 2 +-
deployment-overview.html | 2 +-
deployment-prod-best-practices.html | 2 +-
deployment-public-server.html | 2 +-
deployment-railway.html | 2 +-
deployment-render.html | 2 +-
develop-application.html | 2 +-
directory.html | 2 +-
dynamic-create-data.html | 2 +-
enterprise-database-guide.html | 2 +-
environment-variables.html | 2 +-
get-started-installation.html | 2 +-
get-started-quickstart.html | 2 +-
if-else.html | 2 +-
index.html | 2 +-
install-custom-dependencies.html | 2 +-
integrations-arize.html | 2 +-
integrations-instana-traceloop.html | 2 +-
integrations-langfuse.html | 2 +-
integrations-langsmith.html | 2 +-
integrations-langwatch.html | 2 +-
integrations-opik.html | 2 +-
legacy-core-components.html | 2 +-
llm-selector.html | 2 +-
logging.html | 2 +-
loop.html | 2 +-
luna-for-langflow.html | 2 +-
mcp-client.html | 2 +-
mcp-component-astra.html | 2 +-
mcp-server.html | 2 +-
mcp-tools.html | 2 +-
mcp-tutorial.html | 2 +-
memory.html | 2 +-
message-history.html | 2 +-
mock-data.html | 2 +-
notify-and-listen.html | 2 +-
parser.html | 2 +-
python-interpreter.html | 2 +-
read-file.html | 4 +++-
release-notes.html | 4 ++--
run-flow.html | 2 +-
search.html | 2 +-
security.html | 2 +-
session-id.html | 2 +-
sitemap.xml | 2 +-
smart-router.html | 2 +-
smart-transform.html | 2 +-
split-text.html | 2 +-
sql-database.html | 2 +-
structured-output.html | 2 +-
text-input-and-output.html | 2 +-
troubleshoot.html | 2 +-
type-convert.html | 2 +-
typescript-client.html | 2 +-
url.html | 2 +-
web-search.html | 2 +-
webhook.html | 2 +-
write-file.html | 9 +++++++--
187 files changed, 197 insertions(+), 189 deletions(-)
rename assets/js/{755d162a.be1bbe87.js => 755d162a.e04c4c2c.js} (87%)
create mode 100644 assets/js/8bee5443.655e0843.js
delete mode 100644 assets/js/8bee5443.b4c046be.js
rename assets/js/{99931d31.ec83b3bb.js => 99931d31.3123c8e7.js} (60%)
rename assets/js/{9a5e6f6b.d2b7c901.js => 9a5e6f6b.bd0de960.js} (80%)
rename assets/js/{runtime~main.4b68ad37.js => runtime~main.333f23d2.js} (98%)
diff --git a/404.html b/404.html
index 0961af4c48..dd056cc4a6 100644
--- a/404.html
+++ b/404.html
@@ -24,7 +24,7 @@
-
+
diff --git a/agent-tutorial.html b/agent-tutorial.html
index 5193c48493..cab3bae832 100644
--- a/agent-tutorial.html
+++ b/agent-tutorial.html
@@ -24,7 +24,7 @@
-
+
diff --git a/agents-tools.html b/agents-tools.html
index 46dc0c3862..ef1d38e911 100644
--- a/agents-tools.html
+++ b/agents-tools.html
@@ -24,7 +24,7 @@
-
+
diff --git a/agents.html b/agents.html
index 046b847ae5..59c91930a9 100644
--- a/agents.html
+++ b/agents.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-build.html b/api-build.html
index b8d96be67b..b4e393aca4 100644
--- a/api-build.html
+++ b/api-build.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-files.html b/api-files.html
index 5508450535..79d5fca753 100644
--- a/api-files.html
+++ b/api-files.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-flows-run.html b/api-flows-run.html
index 154fcb23e5..cc91689262 100644
--- a/api-flows-run.html
+++ b/api-flows-run.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-flows.html b/api-flows.html
index 1887577fc3..9a31e4b92a 100644
--- a/api-flows.html
+++ b/api-flows.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-keys-and-authentication.html b/api-keys-and-authentication.html
index 60d5e4c75d..585973e781 100644
--- a/api-keys-and-authentication.html
+++ b/api-keys-and-authentication.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-logs.html b/api-logs.html
index 6ab4a943e7..ac1773241d 100644
--- a/api-logs.html
+++ b/api-logs.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-monitor.html b/api-monitor.html
index d20b378d68..fc76724478 100644
--- a/api-monitor.html
+++ b/api-monitor.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-openai-responses.html b/api-openai-responses.html
index 36c0d780cf..5ab2d0adfb 100644
--- a/api-openai-responses.html
+++ b/api-openai-responses.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-projects.html b/api-projects.html
index 4e8bc8259e..6b665a2cd3 100644
--- a/api-projects.html
+++ b/api-projects.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html
index 42018b5243..227c629190 100644
--- a/api-reference-api-examples.html
+++ b/api-reference-api-examples.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-request.html b/api-request.html
index 3ec9084afd..e8a32a0b01 100644
--- a/api-request.html
+++ b/api-request.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api-users.html b/api-users.html
index 7e1cb6a0d4..61d6717985 100644
--- a/api-users.html
+++ b/api-users.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api.html b/api.html
index 300647211c..493c61949b 100644
--- a/api.html
+++ b/api.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api/openapi.json.html b/api/openapi.json.html
index 89f56f62eb..075cd7587c 100644
--- a/api/openapi.json.html
+++ b/api/openapi.json.html
@@ -24,7 +24,7 @@
-
+
diff --git a/api/openapi.yaml.html b/api/openapi.yaml.html
index 3ce856d999..0d5e0b2806 100644
--- a/api/openapi.yaml.html
+++ b/api/openapi.yaml.html
@@ -24,7 +24,7 @@
-
+
diff --git a/assets/js/755d162a.be1bbe87.js b/assets/js/755d162a.e04c4c2c.js
similarity index 87%
rename from assets/js/755d162a.be1bbe87.js
rename to assets/js/755d162a.e04c4c2c.js
index 935037e44d..95a8055a75 100644
--- a/assets/js/755d162a.be1bbe87.js
+++ b/assets/js/755d162a.e04c4c2c.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[2102],{1258:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>a,default:()=>g,frontMatter:()=>c,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Develop/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/Develop/concepts-file-management.mdx","sourceDirName":"Develop","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),r=o(24754),i=o(40619);const c={title:"Manage files",slug:"/concepts-file-management"},a=void 0,d={},h={annotations:r.hk,Code:r.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:"Set the maximum file size",id:"set-the-maximum-file-size",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:"Configure file storage",id:"configure-file-storage",level:2},{value:"File storage environment variables",id:"file-storage-environment-variables",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||x("CH",!1),h.Code||x("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.jsxs)(n.p,{children:["Files uploaded to Langflow file management are stored in Langflow's ",(0,s.jsx)(n.a,{href:"/concepts-file-management#configure-file-storage",children:"storage backend (local or AWS S3)"}),", 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:[(0,s.jsx)(n.strong,{children:"Langflow Desktop"}),": 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:[(0,s.jsx)(n.strong,{children:"Langflow OSS"}),": 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:[(0,s.jsx)(n.strong,{children:"Backend-only"}),": 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.jsxs)(n.p,{children:["After uploading files, you can rename, download, copy, or delete files within the file management UI.\nTo delete a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(i.A,{name:"Trash2","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Delete"}),".\nYou can delete multiple files in a single action.\nTo download a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(i.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",(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:"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 1024 MB.\nTo modify this value, change the ",(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_FILE_SIZE_UPLOAD"})," ",(0,s.jsx)(n.a,{href:"/environment-variables",children:"environment variable"}),"."]}),"\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:"Read File"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, add a ",(0,s.jsx)(n.strong,{children:"Read 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:"/read-file",children:["file types that are supported by the ",(0,s.jsx)(n.strong,{children:"Read 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:"Read File"})," component and other data loading components, see the ",(0,s.jsxs)(n.a,{href:"/read-file",children:[(0,s.jsx)(n.strong,{children:"Read file"})," component"]}),"."]}),"\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:"/read-file",children:[(0,s.jsx)(n.strong,{children:"Read 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:"Read 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 ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," [",(0,s.jsx)(n.strong,{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)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configure-file-storage",children:"Configure file storage"}),"\n",(0,s.jsx)(n.p,{children:"Langflow supports two storage backends for file management:"}),"\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.strong,{children:"Local storage"}),": Langflow's default storage backend. Files are stored locally in your ",(0,s.jsx)(n.a,{href:"/memory",children:"Langflow configuration directory"}),". Set ",(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE=local"})," or leave it unset to use local storage."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"S3 storage"}),": Files are stored in an AWS S3 bucket.\nLangflow uses the ",(0,s.jsx)(n.a,{href:"https://boto3.amazonaws.com/v1/documentation/api/latest/index.html",children:"boto3"})," library to interact with S3."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To use S3 as your file storage backend, add the following configuration to your ",(0,s.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# S3 Storage Configuration",props:{}}]},{tokens:[{content:"LANGFLOW_STORAGE_TYPE=s3",props:{}}]},{tokens:[{content:"LANGFLOW_OBJECT_STORAGE_BUCKET_NAME=S3_BUCKET_NAME",props:{}}]},{tokens:[{content:"LANGFLOW_OBJECT_STORAGE_PREFIX=S3_BUCKET_DIRECTORY",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"# AWS Credentials (required for S3)",props:{}}]},{tokens:[{content:"AWS_ACCESS_KEY_ID=S3_ACCESS_KEY",props:{}}]},{tokens:[{content:"AWS_SECRET_ACCESS_KEY=S3_ACCESS_SECRET_KEY",props:{}}]},{tokens:[{content:"AWS_DEFAULT_REGION=S3_REGION",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(n.p,{children:"Replace the following placeholders with the actual values for your S3 instance:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_NAME"}),": The name of your S3 bucket."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_DIRECTORY"}),": An optional folder path within the bucket where files are stored, such as ",(0,s.jsx)(n.code,{children:"s3://S3_BUCKET_NAME/S3_BUCKET_DIRECTORY"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_ACCESS_KEY"}),": Your AWS Access Key ID."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_ACCESS_SECRET_KEY"}),": Your AWS Secret Access Key."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_REGION"}),": The AWS region where your bucket is located, such as ",(0,s.jsx)(n.code,{children:"us-east-2"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Your AWS credentials must have the necessary permissions to perform the required S3 operations for your use case, such as reading, writing, and deleting files in S3.\nThis example policy allows basic CRUD operations on S3 objects."}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2012-10-17"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Statement"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Sid"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"LangflowS3StorageAccess"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Effect"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Allow"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Action"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:PutObject"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:GetObject"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:DeleteObject"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:ListBucket"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:PutObjectTagging"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Resource"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "arn:aws:s3:::S3_BUCKET_NAME"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "arn:aws:s3:::S3_BUCKET_NAME/S3_BUCKET_DIRECTORY/*"',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.jsx)(n.p,{children:"Replace the following placeholders with the actual values for your IAM policy and S3 instance:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_NAME"}),": The name of your S3 bucket."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_DIRECTORY"}),": An optional folder path within the bucket where files are stored, such as ",(0,s.jsx)(n.code,{children:"s3://S3_BUCKET_NAME/S3_BUCKET_DIRECTORY"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see the ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html",children:"AWS documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"file-storage-environment-variables",children:"File storage environment variables"}),"\n",(0,s.jsx)(n.p,{children:"The following environment variables configure file storage backends for Langflow's file management system:"}),"\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_STORAGE_TYPE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"local"})}),(0,s.jsxs)(n.td,{children:["Set the file storage backend. Supported values: ",(0,s.jsx)(n.code,{children:"local"})," (files stored in the Langflow configuration directory) or ",(0,s.jsx)(n.code,{children:"s3"})," (files stored in AWS S3). For S3 storage, you must also configure AWS credentials and bucket settings."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_OBJECT_STORAGE_BUCKET_NAME"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["The name of the S3 bucket to use for file storage. Required when ",(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE=s3"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_OBJECT_STORAGE_PREFIX"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Optional prefix/folder path within the S3 bucket where files will be stored. If not set, files are stored at the bucket root."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_OBJECT_STORAGE_TAGS"})}),(0,s.jsx)(n.td,{children:"JSON object"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["Optional S3 object tags applied to stored files when ",(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE=s3"}),". Ignored for local storage. Provided as a JSON map of string keys to string values, such as ",(0,s.jsx)(n.code,{children:'{"env": "prod", "owner": "data-team"}'}),"."]})]})]})]}),"\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:"/concepts-components",children:"Components reference"})}),"\n"]})]})}function g(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 x(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
+"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[2102],{1258:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>a,default:()=>g,frontMatter:()=>c,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Develop/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/Develop/concepts-file-management.mdx","sourceDirName":"Develop","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),r=o(24754),i=o(40619);const c={title:"Manage files",slug:"/concepts-file-management"},a=void 0,d={},h={annotations:r.hk,Code:r.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:"Set the maximum file size",id:"set-the-maximum-file-size",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:"Configure file storage",id:"configure-file-storage",level:2},{value:"File storage environment variables",id:"file-storage-environment-variables",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||x("CH",!1),h.Code||x("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.jsxs)(n.p,{children:["Files uploaded to Langflow file management are stored in Langflow's ",(0,s.jsx)(n.a,{href:"/concepts-file-management#configure-file-storage",children:"storage backend (local or AWS S3)"}),", 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:[(0,s.jsx)(n.strong,{children:"Langflow Desktop"}),": 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:[(0,s.jsx)(n.strong,{children:"Langflow OSS"}),": 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:[(0,s.jsx)(n.strong,{children:"Backend-only"}),": 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.jsxs)(n.p,{children:["After uploading files, you can rename, download, copy, or delete files within the file management UI.\nTo delete a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(i.A,{name:"Trash2","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Delete"}),".\nYou can delete multiple files in a single action.\nTo download a file, hover over a file's icon, select it, and then click ",(0,s.jsx)(i.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",(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:"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 1024 MB.\nTo modify this value, change the ",(0,s.jsx)(n.code,{children:"LANGFLOW_MAX_FILE_SIZE_UPLOAD"})," ",(0,s.jsx)(n.a,{href:"/environment-variables",children:"environment variable"}),"."]}),"\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:"Read File"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, add a ",(0,s.jsx)(n.strong,{children:"Read 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:"/read-file",children:["file types that are supported by the ",(0,s.jsx)(n.strong,{children:"Read 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:"Read File"})," component and other data loading components, see the ",(0,s.jsxs)(n.a,{href:"/read-file",children:[(0,s.jsx)(n.strong,{children:"Read file"})," component"]}),"."]}),"\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:"/read-file",children:[(0,s.jsx)(n.strong,{children:"Read 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:"Read 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 ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," [",(0,s.jsx)(n.strong,{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)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configure-file-storage",children:"Configure file storage"}),"\n",(0,s.jsx)(n.p,{children:"Langflow supports two storage backends for file management."}),"\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.strong,{children:"Local storage"}),": Langflow's default storage backend. Files are stored locally in your ",(0,s.jsx)(n.a,{href:"/memory",children:"Langflow configuration directory"}),". Set ",(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE=local"})," or leave it unset to use local storage."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"S3 storage"}),": Files are stored in an AWS S3 bucket.\nLangflow uses the ",(0,s.jsx)(n.a,{href:"https://boto3.amazonaws.com/v1/documentation/api/latest/index.html",children:"boto3"})," library to interact with S3."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To use S3 as your file storage backend, add the following configuration to your ",(0,s.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# S3 Storage Configuration",props:{}}]},{tokens:[{content:"LANGFLOW_STORAGE_TYPE=s3",props:{}}]},{tokens:[{content:"LANGFLOW_OBJECT_STORAGE_BUCKET_NAME=S3_BUCKET_NAME",props:{}}]},{tokens:[{content:"LANGFLOW_OBJECT_STORAGE_PREFIX=S3_BUCKET_DIRECTORY",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"# AWS Credentials (required for S3)",props:{}}]},{tokens:[{content:"AWS_ACCESS_KEY_ID=S3_ACCESS_KEY",props:{}}]},{tokens:[{content:"AWS_SECRET_ACCESS_KEY=S3_ACCESS_SECRET_KEY",props:{}}]},{tokens:[{content:"AWS_DEFAULT_REGION=S3_REGION",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(n.p,{children:"Replace the following placeholders with the actual values for your S3 instance:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_NAME"}),": The name of your S3 bucket."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_DIRECTORY"}),": An optional folder path within the bucket where files are stored, such as ",(0,s.jsx)(n.code,{children:"s3://S3_BUCKET_NAME/S3_BUCKET_DIRECTORY"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_ACCESS_KEY"}),": Your AWS Access Key ID."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_ACCESS_SECRET_KEY"}),": Your AWS Secret Access Key."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_REGION"}),": The AWS region where your bucket is located, such as ",(0,s.jsx)(n.code,{children:"us-east-2"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Your AWS credentials must have the necessary permissions to perform the required S3 operations for your use case, such as reading, writing, and deleting files in S3.\nThis example policy allows basic CRUD operations on S3 objects."}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2012-10-17"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Statement"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Sid"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"LangflowS3StorageAccess"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Effect"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Allow"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Action"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:PutObject"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:GetObject"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:DeleteObject"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:ListBucket"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "s3:PutObjectTagging"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "Resource"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "arn:aws:s3:::S3_BUCKET_NAME"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "arn:aws:s3:::S3_BUCKET_NAME/S3_BUCKET_DIRECTORY/*"',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.jsx)(n.p,{children:"Replace the following placeholders with the actual values for your IAM policy and S3 instance:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_NAME"}),": The name of your S3 bucket."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"S3_BUCKET_DIRECTORY"}),": An optional folder path within the bucket where files are stored, such as ",(0,s.jsx)(n.code,{children:"s3://S3_BUCKET_NAME/S3_BUCKET_DIRECTORY"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see the ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html",children:"AWS documentation"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Google Drive"})," storage is available through the ",(0,s.jsx)(n.a,{href:"/read-file",children:(0,s.jsx)(n.strong,{children:"Read File"})})," and ",(0,s.jsx)(n.a,{href:"/write-file",children:(0,s.jsx)(n.strong,{children:"Write file"})})," components, but you cannot use environment variables to configure it."]}),"\n",(0,s.jsx)(n.h2,{id:"file-storage-environment-variables",children:"File storage environment variables"}),"\n",(0,s.jsx)(n.p,{children:"The following environment variables configure file storage backends for Langflow's file management system:"}),"\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_STORAGE_TYPE"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"local"})}),(0,s.jsxs)(n.td,{children:["Set the file storage backend. Supported values: ",(0,s.jsx)(n.code,{children:"local"})," (files stored in the Langflow configuration directory) or ",(0,s.jsx)(n.code,{children:"s3"})," (files stored in AWS S3). For S3 storage, you must also configure AWS credentials and bucket settings."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_OBJECT_STORAGE_BUCKET_NAME"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["The name of the S3 bucket to use for file storage. Required when ",(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE=s3"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_OBJECT_STORAGE_PREFIX"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsx)(n.td,{children:"Optional prefix/folder path within the S3 bucket where files will be stored. If not set, files are stored at the bucket root."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"LANGFLOW_OBJECT_STORAGE_TAGS"})}),(0,s.jsx)(n.td,{children:"JSON object"}),(0,s.jsx)(n.td,{children:"Not set"}),(0,s.jsxs)(n.td,{children:["Optional S3 object tags applied to stored files when ",(0,s.jsx)(n.code,{children:"LANGFLOW_STORAGE_TYPE=s3"}),". Ignored for local storage. Provided as a JSON map of string keys to string values, such as ",(0,s.jsx)(n.code,{children:'{"env": "prod", "owner": "data-team"}'}),"."]})]})]})]}),"\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:"/concepts-components",children:"Components reference"})}),"\n"]})]})}function g(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 x(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/8bee5443.655e0843.js b/assets/js/8bee5443.655e0843.js
new file mode 100644
index 0000000000..842531d17d
--- /dev/null
+++ b/assets/js/8bee5443.655e0843.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[879],{45783:(e,n,s)=>{s.d(n,{A:()=>a});var o,r,t=s(96540);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var n=1;nt.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16","aria-labelledby":n},s),e?t.createElement("title",{id:n},e):null,o||(o=t.createElement("g",{fill:"#fff",clipPath:"url(#a)"},t.createElement("path",{d:"M10.352 1.675a1.655 1.655 0 0 0-2.341 0L1.769 7.917a.552.552 0 1 1-.78-.78L7.23.893a2.759 2.759 0 0 1 4.682 2.341 2.75 2.75 0 0 1 2.34.78l.033.033a2.76 2.76 0 0 1 0 3.901L8.64 13.595a.184.184 0 0 0 0 .26l1.16 1.159a.552.552 0 0 1-.78.78l-1.16-1.16a1.287 1.287 0 0 1 0-1.82l5.645-5.645a1.655 1.655 0 0 0 0-2.34l-.032-.033a1.655 1.655 0 0 0-2.34-.002l-4.65 4.65-.002.003-.063.063a.552.552 0 1 1-.78-.78l4.715-4.716a1.655 1.655 0 0 0-.001-2.34"}),t.createElement("path",{d:"M9.572 3.235a.552.552 0 1 0-.78-.78L4.174 7.07a2.759 2.759 0 0 0 3.901 3.902l4.617-4.617a.552.552 0 0 0-.78-.78l-4.617 4.617a1.655 1.655 0 0 1-2.341-2.341z"}))),r||(r=t.createElement("defs",null,t.createElement("clipPath",{id:"a"},t.createElement("path",{fill:"#fff",d:"M0 0h16v16H0z"})))))},84739:(e,n,s)=>{s.r(n),s.d(n,{CH:()=>p,assets:()=>h,chCodeConfig:()=>u,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>o,toc:()=>g});const o=JSON.parse('{"id":"Support/release-notes","title":"Langflow release notes","description":"This page summarizes significant changes to Langflow in each release.","source":"@site/docs/Support/release-notes.mdx","sourceDirName":"Support","slug":"/release-notes","permalink":"/release-notes","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow release notes","slug":"/release-notes"},"sidebar":"docs","previous":{"title":"IBM Elite Support for Langflow","permalink":"/luna-for-langflow"}}');var r=s(74848),t=s(28453),i=s(24754),a=s(40619),l=s(45783);const d={title:"Langflow release notes",slug:"/release-notes"},c=void 0,h={},p={annotations:i.hk,Code:i.Cy},u={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Prepare to upgrade",id:"prepare-to-upgrade",level:2},{value:"1.7.x",id:"17x",level:2},{value:"Known issue: Data not accessible when upgrading to version 1.7.0",id:"v170-data-path",level:3},{value:"New features and enhancements",id:"new-features-and-enhancements",level:3},{value:"1.6.0",id:"160",level:2},{value:"Known issue, potential security vulnerability: .env file not loaded in versions 1.6.0 through 1.6.3",id:"env-file-bug",level:3},{value:"Known issue: Don't auto-upgrade Windows Desktop",id:"windows-desktop-update-issue",level:3},{value:"Breaking changes",id:"breaking-changes",level:3},{value:"New features and enhancements",id:"new-features-and-enhancements-1",level:3},{value:"Deprecations",id:"deprecations",level:3},{value:"1.5.0",id:"150",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-2",level:3},{value:"1.4.2",id:"142",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-3",level:3},{value:"Deprecations",id:"deprecations-1",level:3},{value:"1.4.1",id:"141",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-4",level:3},{value:"1.4.0",id:"140",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-5",level:3},{value:"Deprecations",id:"deprecations-2",level:3},{value:"Earlier releases",id:"earlier-releases",level:2}];function f(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return p||j("CH",!1),p.Code||j("CH.Code",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.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,r.jsxs)(n.p,{children:["This page summarizes significant changes to Langflow in each release.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases/latest",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Due to strict SemVer requirements, Langflow Desktop can have different patch versions than the core Langflow OSS Python package, but the major and minor versions are aligned."}),"\n",(0,r.jsx)(n.h2,{id:"prepare-to-upgrade",children:"Prepare to upgrade"}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsxs)(n.p,{children:["Whenever possible, the Langflow team recommends installing new Langflow versions in a new virtual environment or VM before upgrading your primary installation.\nThis allows you to ",(0,r.jsx)(n.a,{href:"/concepts-flows-import#import-a-flow",children:"import flows"})," from your existing installation and test them in the new version without disrupting your existing installation.\nIn the event of breaking changes or bugs, your existing installation is preserved in a stable state.\nIf you are upgrading Windows Desktop to 1.6.0, don't auto-upgrade with the in-app ",(0,r.jsx)(n.strong,{children:"Update"})," button. Instead, follow the instructions in ",(0,r.jsx)(n.a,{href:"#windows-desktop-update-issue",children:"Known issue: Don't auto-upgrade Windows Desktop"}),"."]})}),"\n",(0,r.jsx)(n.p,{children:"To avoid the impact of potential breaking changes and test new versions, the Langflow team recommends the following upgrade process:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Recommended: ",(0,r.jsx)(n.a,{href:"/api-projects#export-a-project",children:"Export your projects"})," to create backups of your flows:"]}),"\n",(0,r.jsx)(p.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:"GET ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:'"',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_SERVER_URL",props:{style:{color:"#C9D1D9"}}},{content:"/api/v1/projects/download/",props:{style:{color:"#A5D6FF"}}},{content:"$PROJECT_ID",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:'"accept: application/json" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:'"x-api-key: ',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_API_KEY",props:{style:{color:"#C9D1D9"}}},{content:'"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,r.jsxs)(n.p,{children:["To export flows from the visual editor, see ",(0,r.jsx)(n.a,{href:"/concepts-flows-import",children:"Import and export flows"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Install the new version:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Langflow OSS Python package"}),": Install the new version in a new virtual environment. For instructions, see ",(0,r.jsx)(n.a,{href:"/get-started-installation#install-and-run-the-langflow-oss-python-package",children:"Install and run the Langflow OSS Python package"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Langflow Docker image"}),": Run the new image in a separate container."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Langflow Desktop"}),": To upgrade in place, open Langflow Desktop, and then click ",(0,r.jsx)(n.strong,{children:"Upgrade Available"})," in the Langflow header. If you want to isolate the new version, you must install Langflow Desktop on a separate physical or virtual machine, and then ",(0,r.jsx)(n.a,{href:"/concepts-flows-import",children:"import your flows"})," to the new installation."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/concepts-flows-import",children:"Import your flows"})," to test them in the new version, ",(0,r.jsx)(n.a,{href:"/concepts-components#component-versions",children:"upgrading components"})," as needed."]}),"\n",(0,r.jsxs)(n.p,{children:["When upgrading components, you can use the ",(0,r.jsx)(n.strong,{children:"Create backup flow before updating"})," option if you didn't previously export your flows."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If you installed the new version in isolation, upgrade your primary installation after testing the new version."}),"\n",(0,r.jsx)(n.p,{children:"If you made changes to your flows in the isolated installation, you might want to export and import those flows back to your upgraded primary installation so you don't have to repeat the component upgrade process."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"17x",children:"1.7.x"}),"\n",(0,r.jsx)(n.admonition,{title:"Version yanked",type:"warning",children:(0,r.jsx)(n.p,{children:"Version 1.7.0 was yanked due to a critical bug. Version 1.7.0 has been replaced with version 1.7.1, which includes a fix for this issue."})}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"v170-data-path",children:"Known issue: Data not accessible when upgrading to version 1.7.0"}),"\n",(0,r.jsx)(n.p,{children:"A critical issue was identified during the upgrade process to version 1.7.0."}),"\n",(0,r.jsxs)(n.p,{children:["Flows, projects, and global variables are ",(0,r.jsx)(n.strong,{children:"not"})," deleted or corrupted. The data still exists, but version 1.7.0 cannot find it due to a path change in how flows are located.\nAll Langflow versions upgrading to 1.7.0 are affected."]}),"\n",(0,r.jsx)(n.p,{children:"Don't upgrade to Langflow version 1.7.0.\nInstead, upgrade directly to version 1.7.1, which includes a fix for this bug."}),"\n",(0,r.jsx)(n.p,{children:"If you installed version 1.7.0 before the fix was released, follow these steps to recover your flows:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Revert Langflow to version 1.6.9:"}),"\n",(0,r.jsx)(p.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install langflow==",props:{style:{color:"#A5D6FF"}}},{content:"1.6.9",props:{style:{color:"#79C0FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Verify that your flows, projects, and global variables are accessible."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Upgrade directly to version 1.7.1, which includes the fix for this issue:"}),"\n",(0,r.jsx)(p.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install langflow==",props:{style:{color:"#A5D6FF"}}},{content:"1.7.1",props:{style:{color:"#79C0FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Support for streamable HTTP transport for MCP clients and servers"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow now supports ",(0,r.jsx)(n.a,{href:"https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http",children:"streamable HTTP transport"})," for both MCP clients and servers.\nWhen using Langflow as an ",(0,r.jsx)(n.a,{href:"/mcp-client",children:"MCP client"}),", you can connect to MCP servers with streamable HTTP transport.\nWhen using Langflow as an ",(0,r.jsx)(n.a,{href:"/mcp-server",children:"MCP server"}),", clients can connect using streamable HTTP transport.\nSSE transport is still supported as a fallback for backwards compatibility."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Webhook authentication"}),"\n",(0,r.jsxs)(n.p,{children:["Added the ",(0,r.jsx)(n.code,{children:"LANGFLOW_WEBHOOK_AUTH_ENABLE"})," environment variable for authenticating requests to the ",(0,r.jsxs)(n.a,{href:"/api-flows-run#webhook-run-flow",children:[(0,r.jsx)(n.code,{children:"/webhook"})," endpoint"]}),". When ",(0,r.jsx)(n.code,{children:"LANGFLOW_WEBHOOK_AUTH_ENABLE=TRUE"}),", webhook endpoints require API key authentication and validate that the authenticated user owns the flow being executed. When ",(0,r.jsx)(n.code,{children:"FALSE"}),", no Langflow API key is required and all requests to the webhook endpoint are treated as being sent by the flow owner. For more information, see ",(0,r.jsx)(n.a,{href:"/webhook",children:"Trigger flows with webhooks"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Configurable API key validation"}),"\n",(0,r.jsxs)(n.p,{children:["Added the ",(0,r.jsx)(n.code,{children:"LANGFLOW_API_KEY_SOURCE"})," environment variable to control how Langflow validates API keys. When set to ",(0,r.jsx)(n.code,{children:"db"}),", Langflow validates API keys against keys stored in the database. When set to ",(0,r.jsx)(n.code,{children:"env"}),", Langflow validates API keys against the ",(0,r.jsx)(n.code,{children:"LANGFLOW_API_KEY"})," environment variable. For more information, see ",(0,r.jsx)(n.a,{href:"/api-keys-and-authentication#langflow-api-key-source",children:"API keys and authentication"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"SSRF protection"}),"\n",(0,r.jsxs)(n.p,{children:["Added SSRF (Server-Side Request Forgery) protection to the ",(0,r.jsxs)(n.a,{href:"/api-request",children:[(0,r.jsx)(n.strong,{children:"API Request"})," component"]}),". HTTP redirects are disabled by default to prevent SSRF bypass attacks. To enable SSRF protection, set ",(0,r.jsx)(n.code,{children:"LANGFLOW_SSRF_PROTECTION_ENABLED=TRUE"}),". Configure allowed hosts with ",(0,r.jsx)(n.code,{children:"LANGFLOW_SSRF_ALLOWED_HOSTS"}),". Flows that relied on automatic redirects will need to enable it manually."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Email registration in Langflow Desktop"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow Desktop now includes an email registration screen at startup. The registered email address helps track user registrations and understand the user base. For more information, see ",(0,r.jsx)(n.a,{href:"/contributing-telemetry#email",children:"Telemetry"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Changes to read/write file components"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Save File"})," component was renamed to ",(0,r.jsx)(n.strong,{children:"Write File"}),", and it can now save to S3 and Google Drive.\nThe ",(0,r.jsx)(n.strong,{children:"File"})," component was renamed to ",(0,r.jsx)(n.strong,{children:"Read File"}),", and it can now read from AWS S3 and Google Drive.\nBoth components support ",(0,r.jsx)(n.strong,{children:"Tool Mode"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"New integrations, bundles, and components:"}),"\n",(0,r.jsxs)(n.p,{children:["New filter operator for ",(0,r.jsx)(n.strong,{children:"DataFrame Operations"})," component"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/dataframe-operations",children:[(0,r.jsx)(n.strong,{children:"DataFrame Operations"})," component"]})," now includes a ",(0,r.jsx)(n.code,{children:"not contains"})," filter operator.\nUse it to clean data by extracting only records that ",(0,r.jsx)(n.em,{children:"don't"})," contain specific values.\nFor example, you can filter out invalid email addresses that don't contain ",(0,r.jsx)(n.code,{children:"@"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["New JSON operations for ",(0,r.jsx)(n.strong,{children:"Data Operations"})," component"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/data-operations",children:[(0,r.jsx)(n.strong,{children:"Data Operations"})," component"]})," now includes two operations for advanced JSON data manipulation.\nThe ",(0,r.jsx)(n.strong,{children:"Path Selection"})," operation extracts values from nested JSON structures, and the ",(0,r.jsx)(n.strong,{children:"JQ Expression"})," operation uses the ",(0,r.jsx)(n.a,{href:"https://jqlang.org/",children:(0,r.jsx)(n.code,{children:"jq"})})," query language to perform advanced JSON filtering, projections, and transformations."]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/smart-router",children:[(0,r.jsx)(n.strong,{children:"Smart Router"})," component"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/mock-data",children:[(0,r.jsx)(n.strong,{children:"Mock Data"})," component"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/dynamic-create-data",children:[(0,r.jsx)(n.strong,{children:"Dynamic Create Data"})," component"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/bundles-altk",children:[(0,r.jsx)(n.strong,{children:"ALTK"})," bundle"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/bundles-cometapi",children:[(0,r.jsx)(n.strong,{children:"CometAPI"})," bundle"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/bundles-cuga",children:[(0,r.jsx)(n.strong,{children:"CUGA"})," bundle"]})]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"LLM Router"})," component is now called the ",(0,r.jsxs)(n.a,{href:"/llm-selector",children:[(0,r.jsx)(n.strong,{children:"LLM Selector"})," component"]}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/web-search",children:[(0,r.jsx)(n.strong,{children:"Web Search"})," component"]})," now consolidates Web Search, News Search, and RSS Reader into a single component with tabs for different search modes. You can search the web using DuckDuckGo, search Google News, or read RSS feeds\u2014all from one component. The separate ",(0,r.jsx)(n.strong,{children:"News Search"})," and ",(0,r.jsx)(n.strong,{children:"RSS Reader"})," components have been removed."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"160",children:"1.6.0"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"env-file-bug",children:"Known issue, potential security vulnerability: .env file not loaded in versions 1.6.0 through 1.6.3"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow versions 1.6.0 through 1.6.3 have a critical bug where environment variables from ",(0,r.jsx)(n.code,{children:".env"})," files aren't read.\nThis affects all deployments using environment variables for configuration, including security settings."]}),"\n",(0,r.jsxs)(n.admonition,{title:"Potential security vulnerability",type:"warning",children:[(0,r.jsxs)(n.p,{children:["If your ",(0,r.jsx)(n.code,{children:".env"})," file includes ",(0,r.jsx)(n.code,{children:"AUTO_LOGIN=false"}),", upgrading to the impacted versions causes Langflow to fall back to default settings, potentially giving all users superuser access immediately upon upgrade.\nAdditionally, database credentials, API keys, and other sensitive configurations can't be loaded from ",(0,r.jsx)(n.code,{children:".env"})," files."]}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Don't"})," upgrade to any Langflow version from 1.6.0 through 1.6.3 if you use ",(0,r.jsx)(n.code,{children:".env"})," files for configuration.\nInstead, upgrade to 1.6.4, which includes a fix for this bug."]})]}),"\n",(0,r.jsx)(n.h3,{id:"windows-desktop-update-issue",children:"Known issue: Don't auto-upgrade Windows Desktop"}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsxs)(n.p,{children:["Windows users of Langflow Desktop should ",(0,r.jsx)(n.strong,{children:"not"})," use the in-app update feature to upgrade to Langflow version 1.6.0.\nOnly Windows Desktop users upgrading to Langflow version 1.6.0 are affected."]})}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Update"})," button in Langflow Desktop will not work for Windows users, and may result in data loss."]}),"\n",(0,r.jsxs)(n.p,{children:["Instead, download a fresh installation from the ",(0,r.jsx)(n.a,{href:"https://langflow.org",children:"Langflow website"})," when a new version is available."]}),"\n",(0,r.jsx)(n.p,{children:"Follow the instructions below to minimize the risk of losing flows."}),"\n",(0,r.jsxs)(n.p,{children:["These instructions assume the default path for the Langflow database of ",(0,r.jsx)(n.code,{children:"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\com.langflow\\data\\database.db"})," or ",(0,r.jsx)(n.code,{children:"C:\\Users\\%YOUR_USERNAME%\\AppData\\Roaming\\com.langflow\\data\\database.db"}),". Replace ",(0,r.jsx)(n.code,{children:"YOUR_USERNAME"})," with your Windows username."]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Ensure you have Administrator privileges."}),"\n",(0,r.jsx)(n.li,{children:"Ensure you have enough disk space for a second installation of Langflow."}),"\n",(0,r.jsx)(n.li,{children:"Close Langflow, and ensure no Langflow process is running in Task Manager."}),"\n",(0,r.jsxs)(n.li,{children:["The Langflow 1.6.0 installer automatically performs a database backup in a later step, but an additional manual backup provides additional redundancy and is recommended.\nTo manually back up your Langflow database file, do the following:","\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["In Windows Explorer, navigate to ",(0,r.jsx)(n.code,{children:"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\com.langflow\\data\\"}),". Replace ",(0,r.jsx)(n.code,{children:"YOUR_USERNAME"})," with your Windows username."]}),"\n",(0,r.jsxs)(n.li,{children:["Copy the ",(0,r.jsx)(n.code,{children:"database.db"})," at this location, and paste it to a safe location."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Download the Windows installer from the ",(0,r.jsx)(n.a,{href:"https://langflow.org",children:"Langflow website"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Run the Windows installer as an Administrator. To run the installer as an Administrator, right-click the executable and select ",(0,r.jsx)(n.strong,{children:"Run as administrator"}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Follow the Windows installer's guided steps.\nThe Langflow 1.6.0 installer automatically performs a database backup.\nThese steps install Langflow from scratch, and result in two Langflow installations: the previously installed version, and version 1.6.0.\nThis is expected behavior."}),"\n",(0,r.jsx)(n.li,{children:"Start version 1.6.0 of Langflow, and confirm your flows behave as expected."}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"If flows are missing"}),", restore your flows from your manual backup by doing the following:","\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Close Langflow."}),"\n",(0,r.jsxs)(n.li,{children:["Navigate to your backup location, and copy the ",(0,r.jsx)(n.code,{children:"database.db"})," file."]}),"\n",(0,r.jsxs)(n.li,{children:["Replace the database file in the new installation's ",(0,r.jsx)(n.code,{children:"data"})," directory."]}),"\n",(0,r.jsx)(n.li,{children:"Start Langflow, and confirm your flows behave as expected."}),"\n",(0,r.jsx)(n.li,{children:"After confirmation, uninstall the previous version of Langflow, and keep version 1.6.0."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"breaking-changes",children:"Breaking changes"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Authentication enforced for Langflow API requests by default"}),"\n",(0,r.jsxs)(n.p,{children:["In Langflow version 1.6, ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=True"})," and ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN=False"})," by default.\nThis enforces authentication for Langflow API requests while still automatically authenticating all users as superusers in the visual editor."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsxs)(n.strong,{children:["This is a breaking change from 1.5 where both of these environment variables were ",(0,r.jsx)(n.code,{children:"true"})," by default, bypassing all authentication."]})}),"\n",(0,r.jsxs)(n.p,{children:["For temporary backwards compatibility, you can revert to the earlier unauthenticated behavior by setting both variables to ",(0,r.jsx)(n.code,{children:"true"}),".\nHowever, a future release will set ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=False"})," and remove ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN"}),".\nAt that point, Langflow will strictly enforce API key authentication for API requests, and you can manually disable authentication for some features, like the visual editor, by setting ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=True"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the documentation for ",(0,r.jsx)(n.a,{href:"/api-keys-and-authentication#langflow-auto-login",children:(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-1",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"OpenAI Responses API compatibility"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow now includes an endpoint that is compatible with the ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs/api-reference/responses",children:"OpenAI Responses API"})," at ",(0,r.jsx)(n.code,{children:"POST /api/v1/responses"}),".\nThis allows you to use existing OpenAI client libraries with minimal code changes by replacing the ",(0,r.jsx)(n.code,{children:"model"})," name with your ",(0,r.jsx)(n.code,{children:"flow_id"}),".\nThe endpoint supports streaming responses, conversation continuity, tool call results, and global variable passing through headers.\nFor more information, see ",(0,r.jsx)(n.a,{href:"/api-openai-responses",children:"OpenAI Responses API"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Advanced document parsing with built-in Docling support"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Read File"})," component supports advanced parsing with the Docling library."]}),"\n",(0,r.jsxs)(n.p,{children:["To make it easier to use the ",(0,r.jsxs)(n.a,{href:"/bundles-docling",children:[(0,r.jsx)(n.strong,{children:"Docling"})," components"]})," and the ",(0,r.jsx)(n.strong,{children:"Read File"})," component's new advanced parsing feature, the Docling dependency is now included with Langflow for all operating systems except macOS Intel (x86_64)."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/read-file#advanced-parsing",children:"Advanced parsing"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Reorganized component menus and visual editor controls"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["The ",(0,r.jsx)(n.a,{href:"/concepts-overview#workspace",children:"workspace"})," sidebar is divided into separate sections for ",(0,r.jsx)(a.A,{name:"Search","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Search"}),", ",(0,r.jsx)(a.A,{name:"Component","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Core components"}),", ",(0,r.jsx)(l.A,{})," ",(0,r.jsx)(n.a,{href:"/mcp-server",children:(0,r.jsx)(n.strong,{children:"MCP servers"})}),", ",(0,r.jsx)(a.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})}),", and ",(0,r.jsx)(a.A,{name:"StickyNote","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Add Note"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Lock/unlock controls moved to flow details in ",(0,r.jsx)(n.a,{href:"/concepts-flows#projects",children:(0,r.jsx)(n.strong,{children:"Projects"})}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Zoom and help controls moved to the lower-right corner of the workspace."}),"\n",(0,r.jsxs)(n.li,{children:["Vector store components moved to provider-specific ",(0,r.jsx)(a.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Serper Google Search API"})," component moved to the ",(0,r.jsx)(n.strong,{children:"Serper"})," bundle"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Increased the default maximum file upload size from ",(0,r.jsx)(n.code,{children:"100 MB"})," to ",(0,r.jsx)(n.code,{children:"1024 MB"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"New integrations and bundles:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/integrations-instana-traceloop",children:"Traceloop"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/bundles-cohere",children:"Cohere Rerank"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/bundles-amazon",children:"S3 Bucket Uploader"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/bundles-composio",children:"Composio single-service components"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"deprecations",children:"Deprecations"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["The ",(0,r.jsx)(n.strong,{children:"Local DB"})," component is now in legacy status.\nReplace this component with the ",(0,r.jsxs)(n.a,{href:"/bundles-chroma",children:[(0,r.jsx)(n.strong,{children:"Chroma DB"})," component"]}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"150",children:"1.5.0"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-2",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Langflow API requests can require authentication"}),"\n",(0,r.jsxs)(n.p,{children:["To enhance security and ensure proper authentication for automatic login features, Langflow API endpoints now require authentication with a Langflow API key, even when ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=True"}),".\nThis change will be enforced in a future release.\nFor temporary backwards compatibility, this release adds the ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN"})," environment variable.\nThe default value is ",(0,r.jsx)(n.code,{children:"true"}),", which disables API authentication enforcement.\nTo enforce API authentication, set ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN=False"}),".\nFor more information, see the documentation for ",(0,r.jsx)(n.a,{href:"/api-keys-and-authentication#langflow-auto-login",children:(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Centralized ",(0,r.jsx)(n.strong,{children:"Language Model"})," and ",(0,r.jsx)(n.strong,{children:"Embedding Model"})," components"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/components-models",children:[(0,r.jsx)(n.strong,{children:"Language Model"})," component"]})," and ",(0,r.jsxs)(n.a,{href:"/components-embedding-models",children:[(0,r.jsx)(n.strong,{children:"Embedding Model"})," component"]})," are now core components for your LLM and embeddings flows. They support multiple models and model providers, and allow you to experiment with different models without swapping out single-provider components.\nFind them in the visual editor in the ",(0,r.jsx)(n.strong,{children:"Models"})," category."]}),"\n",(0,r.jsxs)(n.p,{children:["The single-provider components moved to the ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," section.\nYou can use them to replace the ",(0,r.jsx)(n.strong,{children:"Language Model"})," and ",(0,r.jsx)(n.strong,{children:"Embedding Model"})," core components, or connect them to the ",(0,r.jsx)(n.strong,{children:"Agent"})," component with the ",(0,r.jsx)(n.strong,{children:"Connect other models"})," provider option."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"MCP server one-click installation"}),"\n",(0,r.jsxs)(n.p,{children:["On your Langflow project's ",(0,r.jsx)(n.strong,{children:"MCP server"})," page, click ",(0,r.jsx)(n.strong,{children:"Auto install"})," to install your Langflow MCP server to MCP clients with just one click.\nThe option to install with a JSON configuration file is available for macOS, Windows, and WSL.\nFor more information, see ",(0,r.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"MCP server management"}),"\n",(0,r.jsxs)(n.p,{children:["You can now add, remove, and edit your MCP servers in the ",(0,r.jsx)(n.strong,{children:"MCP Tools"})," components and through your Langflow ",(0,r.jsx)(n.strong,{children:"Settings"})," page.\nFor more information, see ",(0,r.jsx)(n.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Input schema replaces temporary overrides"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Input schema"})," pane replaces the need to manage tweak values in the ",(0,r.jsx)(n.strong,{children:"API access"})," pane. When you enable a parameter in the ",(0,r.jsx)(n.strong,{children:"Input schema"})," pane, the parameter is automatically added to your flow's code snippets, providing ready-to-use templates for making requests in your preferred programming language."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Tools components are redistributed"}),"\n",(0,r.jsxs)(n.p,{children:["All components in the ",(0,r.jsx)(n.strong,{children:"Tools"})," category were moved to other component categories, such as ",(0,r.jsx)(n.strong,{children:"Helpers"})," and ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})}),", or marked as legacy."]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/mcp-client",children:[(0,r.jsx)(n.strong,{children:"MCP Tools"})," component"]})," is now under the ",(0,r.jsx)(n.strong,{children:"Agents"})," category."]}),"\n",(0,r.jsxs)(n.p,{children:["Tools that performed the same function were combined into single components that support multiple providers, such as the ",(0,r.jsxs)(n.a,{href:"/web-search",children:[(0,r.jsx)(n.strong,{children:"Web Search"})," component"]})," and the ",(0,r.jsx)(n.strong,{children:"News Search"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Stability improvements"}),"\n",(0,r.jsxs)(n.p,{children:["General stability improvements and bug fixes for enhanced reliability.\nSee an issue? ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/issues",children:"Raise it on GitHub"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"New integrations and bundles"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsxs)(n.a,{href:"/bundles-cleanlab",children:[(0,r.jsx)(n.strong,{children:"Cleanlab"})," bundle"]})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"142",children:"1.4.2"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-3",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Enhanced file and flow management system with improved bulk capabilities."}),"\n",(0,r.jsxs)(n.li,{children:["Added the ",(0,r.jsx)(n.strong,{children:"BigQuery"})," component"]}),"\n",(0,r.jsxs)(n.li,{children:["Added the ",(0,r.jsx)(n.strong,{children:"Twelve Labs"})," bundle"]}),"\n",(0,r.jsxs)(n.li,{children:["Added the ",(0,r.jsx)(n.strong,{children:"NVIDIA System-Assist"})," component"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"deprecations-1",children:"Deprecations"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Deprecated the ",(0,r.jsx)(n.strong,{children:"Combine Text"})," component."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"141",children:"1.4.1"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-4",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added an enhanced ",(0,r.jsx)(n.strong,{children:"Breaking Changes"})," feature to help update components without breaking flows after updating Langflow."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"140",children:"1.4.0"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-5",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Introduced MCP server functionality to serve Langflow tools to MCP-compatible clients."}),"\n",(0,r.jsxs)(n.li,{children:["Renamed ",(0,r.jsx)(n.strong,{children:"Folders"})," to ",(0,r.jsx)(n.strong,{children:"Projects"})," in the visual editor."]}),"\n",(0,r.jsxs)(n.li,{children:["The ",(0,r.jsx)(n.code,{children:"/folders"})," endpoints now redirect to ",(0,r.jsx)(n.code,{children:"/projects"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"deprecations-2",children:"Deprecations"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Deprecated the ",(0,r.jsx)(n.strong,{children:"Gmail"}),", ",(0,r.jsx)(n.strong,{children:"Google Drive"}),", and ",(0,r.jsx)(n.strong,{children:"Google Search"})," components.\nFor alternatives, see the ",(0,r.jsxs)(n.a,{href:"/bundles-google",children:[(0,r.jsx)(n.strong,{children:"Google"})," bundle"]}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"earlier-releases",children:"Earlier releases"}),"\n",(0,r.jsxs)(n.p,{children:["See the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(f,{...e})}):f(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/8bee5443.b4c046be.js b/assets/js/8bee5443.b4c046be.js
deleted file mode 100644
index 7509a7db6d..0000000000
--- a/assets/js/8bee5443.b4c046be.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[879],{45783:(e,n,s)=>{s.d(n,{A:()=>a});var o,r,t=s(96540);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var n=1;nt.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16","aria-labelledby":n},s),e?t.createElement("title",{id:n},e):null,o||(o=t.createElement("g",{fill:"#fff",clipPath:"url(#a)"},t.createElement("path",{d:"M10.352 1.675a1.655 1.655 0 0 0-2.341 0L1.769 7.917a.552.552 0 1 1-.78-.78L7.23.893a2.759 2.759 0 0 1 4.682 2.341 2.75 2.75 0 0 1 2.34.78l.033.033a2.76 2.76 0 0 1 0 3.901L8.64 13.595a.184.184 0 0 0 0 .26l1.16 1.159a.552.552 0 0 1-.78.78l-1.16-1.16a1.287 1.287 0 0 1 0-1.82l5.645-5.645a1.655 1.655 0 0 0 0-2.34l-.032-.033a1.655 1.655 0 0 0-2.34-.002l-4.65 4.65-.002.003-.063.063a.552.552 0 1 1-.78-.78l4.715-4.716a1.655 1.655 0 0 0-.001-2.34"}),t.createElement("path",{d:"M9.572 3.235a.552.552 0 1 0-.78-.78L4.174 7.07a2.759 2.759 0 0 0 3.901 3.902l4.617-4.617a.552.552 0 0 0-.78-.78l-4.617 4.617a1.655 1.655 0 0 1-2.341-2.341z"}))),r||(r=t.createElement("defs",null,t.createElement("clipPath",{id:"a"},t.createElement("path",{fill:"#fff",d:"M0 0h16v16H0z"})))))},84739:(e,n,s)=>{s.r(n),s.d(n,{CH:()=>p,assets:()=>h,chCodeConfig:()=>u,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>o,toc:()=>g});const o=JSON.parse('{"id":"Support/release-notes","title":"Langflow release notes","description":"This page summarizes significant changes to Langflow in each release.","source":"@site/docs/Support/release-notes.mdx","sourceDirName":"Support","slug":"/release-notes","permalink":"/release-notes","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow release notes","slug":"/release-notes"},"sidebar":"docs","previous":{"title":"IBM Elite Support for Langflow","permalink":"/luna-for-langflow"}}');var r=s(74848),t=s(28453),i=s(24754),a=s(40619),l=s(45783);const d={title:"Langflow release notes",slug:"/release-notes"},c=void 0,h={},p={annotations:i.hk,Code:i.Cy},u={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Prepare to upgrade",id:"prepare-to-upgrade",level:2},{value:"1.7.x",id:"17x",level:2},{value:"Known issue: Data not accessible when upgrading to version 1.7.0",id:"v170-data-path",level:3},{value:"New features and enhancements",id:"new-features-and-enhancements",level:3},{value:"1.6.0",id:"160",level:2},{value:"Known issue, potential security vulnerability: .env file not loaded in versions 1.6.0 through 1.6.3",id:"env-file-bug",level:3},{value:"Known issue: Don't auto-upgrade Windows Desktop",id:"windows-desktop-update-issue",level:3},{value:"Breaking changes",id:"breaking-changes",level:3},{value:"New features and enhancements",id:"new-features-and-enhancements-1",level:3},{value:"Deprecations",id:"deprecations",level:3},{value:"1.5.0",id:"150",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-2",level:3},{value:"1.4.2",id:"142",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-3",level:3},{value:"Deprecations",id:"deprecations-1",level:3},{value:"1.4.1",id:"141",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-4",level:3},{value:"1.4.0",id:"140",level:2},{value:"New features and enhancements",id:"new-features-and-enhancements-5",level:3},{value:"Deprecations",id:"deprecations-2",level:3},{value:"Earlier releases",id:"earlier-releases",level:2}];function f(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return p||j("CH",!1),p.Code||j("CH.Code",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.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,r.jsxs)(n.p,{children:["This page summarizes significant changes to Langflow in each release.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases/latest",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Due to strict SemVer requirements, Langflow Desktop can have different patch versions than the core Langflow OSS Python package, but the major and minor versions are aligned."}),"\n",(0,r.jsx)(n.h2,{id:"prepare-to-upgrade",children:"Prepare to upgrade"}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsxs)(n.p,{children:["Whenever possible, the Langflow team recommends installing new Langflow versions in a new virtual environment or VM before upgrading your primary installation.\nThis allows you to ",(0,r.jsx)(n.a,{href:"/concepts-flows-import#import-a-flow",children:"import flows"})," from your existing installation and test them in the new version without disrupting your existing installation.\nIn the event of breaking changes or bugs, your existing installation is preserved in a stable state.\nIf you are upgrading Windows Desktop to 1.6.0, don't auto-upgrade with the in-app ",(0,r.jsx)(n.strong,{children:"Update"})," button. Instead, follow the instructions in ",(0,r.jsx)(n.a,{href:"#windows-desktop-update-issue",children:"Known issue: Don't auto-upgrade Windows Desktop"}),"."]})}),"\n",(0,r.jsx)(n.p,{children:"To avoid the impact of potential breaking changes and test new versions, the Langflow team recommends the following upgrade process:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Recommended: ",(0,r.jsx)(n.a,{href:"/api-projects#export-a-project",children:"Export your projects"})," to create backups of your flows:"]}),"\n",(0,r.jsx)(p.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:"GET ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:'"',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_SERVER_URL",props:{style:{color:"#C9D1D9"}}},{content:"/api/v1/projects/download/",props:{style:{color:"#A5D6FF"}}},{content:"$PROJECT_ID",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:'"accept: application/json" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:'"x-api-key: ',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_API_KEY",props:{style:{color:"#C9D1D9"}}},{content:'"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,r.jsxs)(n.p,{children:["To export flows from the visual editor, see ",(0,r.jsx)(n.a,{href:"/concepts-flows-import",children:"Import and export flows"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Install the new version:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Langflow OSS Python package"}),": Install the new version in a new virtual environment. For instructions, see ",(0,r.jsx)(n.a,{href:"/get-started-installation#install-and-run-the-langflow-oss-python-package",children:"Install and run the Langflow OSS Python package"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Langflow Docker image"}),": Run the new image in a separate container."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Langflow Desktop"}),": To upgrade in place, open Langflow Desktop, and then click ",(0,r.jsx)(n.strong,{children:"Upgrade Available"})," in the Langflow header. If you want to isolate the new version, you must install Langflow Desktop on a separate physical or virtual machine, and then ",(0,r.jsx)(n.a,{href:"/concepts-flows-import",children:"import your flows"})," to the new installation."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/concepts-flows-import",children:"Import your flows"})," to test them in the new version, ",(0,r.jsx)(n.a,{href:"/concepts-components#component-versions",children:"upgrading components"})," as needed."]}),"\n",(0,r.jsxs)(n.p,{children:["When upgrading components, you can use the ",(0,r.jsx)(n.strong,{children:"Create backup flow before updating"})," option if you didn't previously export your flows."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"If you installed the new version in isolation, upgrade your primary installation after testing the new version."}),"\n",(0,r.jsx)(n.p,{children:"If you made changes to your flows in the isolated installation, you might want to export and import those flows back to your upgraded primary installation so you don't have to repeat the component upgrade process."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"17x",children:"1.7.x"}),"\n",(0,r.jsx)(n.admonition,{title:"Version yanked",type:"warning",children:(0,r.jsx)(n.p,{children:"Version 1.7.0 was yanked due to a critical bug. Version 1.7.0 has been replaced with version 1.7.1, which includes a fix for this issue."})}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"v170-data-path",children:"Known issue: Data not accessible when upgrading to version 1.7.0"}),"\n",(0,r.jsx)(n.p,{children:"A critical issue was identified during the upgrade process to version 1.7.0."}),"\n",(0,r.jsxs)(n.p,{children:["Flows, projects, and global variables are ",(0,r.jsx)(n.strong,{children:"not"})," deleted or corrupted. The data still exists, but version 1.7.0 cannot find it due to a path change in how flows are located.\nAll Langflow versions upgrading to 1.7.0 are affected."]}),"\n",(0,r.jsx)(n.p,{children:"Don't upgrade to Langflow version 1.7.0.\nInstead, upgrade directly to version 1.7.1, which includes a fix for this bug."}),"\n",(0,r.jsx)(n.p,{children:"If you installed version 1.7.0 before the fix was released, follow these steps to recover your flows:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Revert Langflow to version 1.6.9:"}),"\n",(0,r.jsx)(p.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install langflow==",props:{style:{color:"#A5D6FF"}}},{content:"1.6.9",props:{style:{color:"#79C0FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Verify that your flows, projects, and global variables are accessible."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Upgrade directly to version 1.7.1, which includes the fix for this issue:"}),"\n",(0,r.jsx)(p.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install langflow==",props:{style:{color:"#A5D6FF"}}},{content:"1.7.1",props:{style:{color:"#79C0FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Support for streamable HTTP transport for MCP clients and servers"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow now supports ",(0,r.jsx)(n.a,{href:"https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http",children:"streamable HTTP transport"})," for both MCP clients and servers.\nWhen using Langflow as an ",(0,r.jsx)(n.a,{href:"/mcp-client",children:"MCP client"}),", you can connect to MCP servers with streamable HTTP transport.\nWhen using Langflow as an ",(0,r.jsx)(n.a,{href:"/mcp-server",children:"MCP server"}),", clients can connect using streamable HTTP transport.\nSSE transport is still supported as a fallback for backwards compatibility."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Webhook authentication"}),"\n",(0,r.jsxs)(n.p,{children:["Added the ",(0,r.jsx)(n.code,{children:"LANGFLOW_WEBHOOK_AUTH_ENABLE"})," environment variable for authenticating requests to the ",(0,r.jsxs)(n.a,{href:"/api-flows-run#webhook-run-flow",children:[(0,r.jsx)(n.code,{children:"/webhook"})," endpoint"]}),". When ",(0,r.jsx)(n.code,{children:"LANGFLOW_WEBHOOK_AUTH_ENABLE=TRUE"}),", webhook endpoints require API key authentication and validate that the authenticated user owns the flow being executed. When ",(0,r.jsx)(n.code,{children:"FALSE"}),", no Langflow API key is required and all requests to the webhook endpoint are treated as being sent by the flow owner. For more information, see ",(0,r.jsx)(n.a,{href:"/webhook",children:"Trigger flows with webhooks"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Configurable API key validation"}),"\n",(0,r.jsxs)(n.p,{children:["Added the ",(0,r.jsx)(n.code,{children:"LANGFLOW_API_KEY_SOURCE"})," environment variable to control how Langflow validates API keys. When set to ",(0,r.jsx)(n.code,{children:"db"}),", Langflow validates API keys against keys stored in the database. When set to ",(0,r.jsx)(n.code,{children:"env"}),", Langflow validates API keys against the ",(0,r.jsx)(n.code,{children:"LANGFLOW_API_KEY"})," environment variable. For more information, see ",(0,r.jsx)(n.a,{href:"/api-keys-and-authentication#langflow-api-key-source",children:"API keys and authentication"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"SSRF protection"}),"\n",(0,r.jsxs)(n.p,{children:["Added SSRF (Server-Side Request Forgery) protection to the ",(0,r.jsxs)(n.a,{href:"/api-request",children:[(0,r.jsx)(n.strong,{children:"API Request"})," component"]}),". HTTP redirects are disabled by default to prevent SSRF bypass attacks. To enable SSRF protection, set ",(0,r.jsx)(n.code,{children:"LANGFLOW_SSRF_PROTECTION_ENABLED=TRUE"}),". Configure allowed hosts with ",(0,r.jsx)(n.code,{children:"LANGFLOW_SSRF_ALLOWED_HOSTS"}),". Flows that relied on automatic redirects will need to enable it manually."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Email registration in Langflow Desktop"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow Desktop now includes an email registration screen at startup. The registered email address helps track user registrations and understand the user base. For more information, see ",(0,r.jsx)(n.a,{href:"/contributing-telemetry#email",children:"Telemetry"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Changes to read/write file components"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Save File"})," component was renamed to ",(0,r.jsx)(n.strong,{children:"Write File"}),", and it can now save to S3 and Google Drive.\nThe ",(0,r.jsx)(n.strong,{children:"File"})," component was renamed to ",(0,r.jsx)(n.strong,{children:"Read File"}),".\nBoth components support ",(0,r.jsx)(n.strong,{children:"Tool Mode"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"New integrations, bundles, and components:"}),"\n",(0,r.jsxs)(n.p,{children:["New filter operator for ",(0,r.jsx)(n.strong,{children:"DataFrame Operations"})," component"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/dataframe-operations",children:[(0,r.jsx)(n.strong,{children:"DataFrame Operations"})," component"]})," now includes a ",(0,r.jsx)(n.code,{children:"not contains"})," filter operator.\nUse it to clean data by extracting only records that ",(0,r.jsx)(n.em,{children:"don't"})," contain specific values.\nFor example, you can filter out invalid email addresses that don't contain ",(0,r.jsx)(n.code,{children:"@"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["New JSON operations for ",(0,r.jsx)(n.strong,{children:"Data Operations"})," component"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/data-operations",children:[(0,r.jsx)(n.strong,{children:"Data Operations"})," component"]})," now includes two operations for advanced JSON data manipulation.\nThe ",(0,r.jsx)(n.strong,{children:"Path Selection"})," operation extracts values from nested JSON structures, and the ",(0,r.jsx)(n.strong,{children:"JQ Expression"})," operation uses the ",(0,r.jsx)(n.a,{href:"https://jqlang.org/",children:(0,r.jsx)(n.code,{children:"jq"})})," query language to perform advanced JSON filtering, projections, and transformations."]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/smart-router",children:[(0,r.jsx)(n.strong,{children:"Smart Router"})," component"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/mock-data",children:[(0,r.jsx)(n.strong,{children:"Mock Data"})," component"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/dynamic-create-data",children:[(0,r.jsx)(n.strong,{children:"Dynamic Create Data"})," component"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/bundles-altk",children:[(0,r.jsx)(n.strong,{children:"ALTK"})," bundle"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/bundles-cometapi",children:[(0,r.jsx)(n.strong,{children:"CometAPI"})," bundle"]})]}),"\n",(0,r.jsxs)(n.p,{children:["New ",(0,r.jsxs)(n.a,{href:"/bundles-cuga",children:[(0,r.jsx)(n.strong,{children:"CUGA"})," bundle"]})]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"LLM Router"})," component is now called the ",(0,r.jsxs)(n.a,{href:"/llm-selector",children:[(0,r.jsx)(n.strong,{children:"LLM Selector"})," component"]}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/web-search",children:[(0,r.jsx)(n.strong,{children:"Web Search"})," component"]})," now consolidates Web Search, News Search, and RSS Reader into a single component with tabs for different search modes. You can search the web using DuckDuckGo, search Google News, or read RSS feeds\u2014all from one component. The separate ",(0,r.jsx)(n.strong,{children:"News Search"})," and ",(0,r.jsx)(n.strong,{children:"RSS Reader"})," components have been removed."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"160",children:"1.6.0"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"env-file-bug",children:"Known issue, potential security vulnerability: .env file not loaded in versions 1.6.0 through 1.6.3"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow versions 1.6.0 through 1.6.3 have a critical bug where environment variables from ",(0,r.jsx)(n.code,{children:".env"})," files aren't read.\nThis affects all deployments using environment variables for configuration, including security settings."]}),"\n",(0,r.jsxs)(n.admonition,{title:"Potential security vulnerability",type:"warning",children:[(0,r.jsxs)(n.p,{children:["If your ",(0,r.jsx)(n.code,{children:".env"})," file includes ",(0,r.jsx)(n.code,{children:"AUTO_LOGIN=false"}),", upgrading to the impacted versions causes Langflow to fall back to default settings, potentially giving all users superuser access immediately upon upgrade.\nAdditionally, database credentials, API keys, and other sensitive configurations can't be loaded from ",(0,r.jsx)(n.code,{children:".env"})," files."]}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Don't"})," upgrade to any Langflow version from 1.6.0 through 1.6.3 if you use ",(0,r.jsx)(n.code,{children:".env"})," files for configuration.\nInstead, upgrade to 1.6.4, which includes a fix for this bug."]})]}),"\n",(0,r.jsx)(n.h3,{id:"windows-desktop-update-issue",children:"Known issue: Don't auto-upgrade Windows Desktop"}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsxs)(n.p,{children:["Windows users of Langflow Desktop should ",(0,r.jsx)(n.strong,{children:"not"})," use the in-app update feature to upgrade to Langflow version 1.6.0.\nOnly Windows Desktop users upgrading to Langflow version 1.6.0 are affected."]})}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Update"})," button in Langflow Desktop will not work for Windows users, and may result in data loss."]}),"\n",(0,r.jsxs)(n.p,{children:["Instead, download a fresh installation from the ",(0,r.jsx)(n.a,{href:"https://langflow.org",children:"Langflow website"})," when a new version is available."]}),"\n",(0,r.jsx)(n.p,{children:"Follow the instructions below to minimize the risk of losing flows."}),"\n",(0,r.jsxs)(n.p,{children:["These instructions assume the default path for the Langflow database of ",(0,r.jsx)(n.code,{children:"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\com.langflow\\data\\database.db"})," or ",(0,r.jsx)(n.code,{children:"C:\\Users\\%YOUR_USERNAME%\\AppData\\Roaming\\com.langflow\\data\\database.db"}),". Replace ",(0,r.jsx)(n.code,{children:"YOUR_USERNAME"})," with your Windows username."]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Ensure you have Administrator privileges."}),"\n",(0,r.jsx)(n.li,{children:"Ensure you have enough disk space for a second installation of Langflow."}),"\n",(0,r.jsx)(n.li,{children:"Close Langflow, and ensure no Langflow process is running in Task Manager."}),"\n",(0,r.jsxs)(n.li,{children:["The Langflow 1.6.0 installer automatically performs a database backup in a later step, but an additional manual backup provides additional redundancy and is recommended.\nTo manually back up your Langflow database file, do the following:","\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["In Windows Explorer, navigate to ",(0,r.jsx)(n.code,{children:"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\com.langflow\\data\\"}),". Replace ",(0,r.jsx)(n.code,{children:"YOUR_USERNAME"})," with your Windows username."]}),"\n",(0,r.jsxs)(n.li,{children:["Copy the ",(0,r.jsx)(n.code,{children:"database.db"})," at this location, and paste it to a safe location."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Download the Windows installer from the ",(0,r.jsx)(n.a,{href:"https://langflow.org",children:"Langflow website"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Run the Windows installer as an Administrator. To run the installer as an Administrator, right-click the executable and select ",(0,r.jsx)(n.strong,{children:"Run as administrator"}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Follow the Windows installer's guided steps.\nThe Langflow 1.6.0 installer automatically performs a database backup.\nThese steps install Langflow from scratch, and result in two Langflow installations: the previously installed version, and version 1.6.0.\nThis is expected behavior."}),"\n",(0,r.jsx)(n.li,{children:"Start version 1.6.0 of Langflow, and confirm your flows behave as expected."}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"If flows are missing"}),", restore your flows from your manual backup by doing the following:","\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Close Langflow."}),"\n",(0,r.jsxs)(n.li,{children:["Navigate to your backup location, and copy the ",(0,r.jsx)(n.code,{children:"database.db"})," file."]}),"\n",(0,r.jsxs)(n.li,{children:["Replace the database file in the new installation's ",(0,r.jsx)(n.code,{children:"data"})," directory."]}),"\n",(0,r.jsx)(n.li,{children:"Start Langflow, and confirm your flows behave as expected."}),"\n",(0,r.jsx)(n.li,{children:"After confirmation, uninstall the previous version of Langflow, and keep version 1.6.0."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"breaking-changes",children:"Breaking changes"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Authentication enforced for Langflow API requests by default"}),"\n",(0,r.jsxs)(n.p,{children:["In Langflow version 1.6, ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=True"})," and ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN=False"})," by default.\nThis enforces authentication for Langflow API requests while still automatically authenticating all users as superusers in the visual editor."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsxs)(n.strong,{children:["This is a breaking change from 1.5 where both of these environment variables were ",(0,r.jsx)(n.code,{children:"true"})," by default, bypassing all authentication."]})}),"\n",(0,r.jsxs)(n.p,{children:["For temporary backwards compatibility, you can revert to the earlier unauthenticated behavior by setting both variables to ",(0,r.jsx)(n.code,{children:"true"}),".\nHowever, a future release will set ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=False"})," and remove ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN"}),".\nAt that point, Langflow will strictly enforce API key authentication for API requests, and you can manually disable authentication for some features, like the visual editor, by setting ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=True"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the documentation for ",(0,r.jsx)(n.a,{href:"/api-keys-and-authentication#langflow-auto-login",children:(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-1",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"OpenAI Responses API compatibility"}),"\n",(0,r.jsxs)(n.p,{children:["Langflow now includes an endpoint that is compatible with the ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs/api-reference/responses",children:"OpenAI Responses API"})," at ",(0,r.jsx)(n.code,{children:"POST /api/v1/responses"}),".\nThis allows you to use existing OpenAI client libraries with minimal code changes by replacing the ",(0,r.jsx)(n.code,{children:"model"})," name with your ",(0,r.jsx)(n.code,{children:"flow_id"}),".\nThe endpoint supports streaming responses, conversation continuity, tool call results, and global variable passing through headers.\nFor more information, see ",(0,r.jsx)(n.a,{href:"/api-openai-responses",children:"OpenAI Responses API"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Advanced document parsing with built-in Docling support"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Read File"})," component supports advanced parsing with the Docling library."]}),"\n",(0,r.jsxs)(n.p,{children:["To make it easier to use the ",(0,r.jsxs)(n.a,{href:"/bundles-docling",children:[(0,r.jsx)(n.strong,{children:"Docling"})," components"]})," and the ",(0,r.jsx)(n.strong,{children:"Read File"})," component's new advanced parsing feature, the Docling dependency is now included with Langflow for all operating systems except macOS Intel (x86_64)."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/read-file#advanced-parsing",children:"Advanced parsing"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Reorganized component menus and visual editor controls"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["The ",(0,r.jsx)(n.a,{href:"/concepts-overview#workspace",children:"workspace"})," sidebar is divided into separate sections for ",(0,r.jsx)(a.A,{name:"Search","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Search"}),", ",(0,r.jsx)(a.A,{name:"Component","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Core components"}),", ",(0,r.jsx)(l.A,{})," ",(0,r.jsx)(n.a,{href:"/mcp-server",children:(0,r.jsx)(n.strong,{children:"MCP servers"})}),", ",(0,r.jsx)(a.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})}),", and ",(0,r.jsx)(a.A,{name:"StickyNote","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Add Note"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Lock/unlock controls moved to flow details in ",(0,r.jsx)(n.a,{href:"/concepts-flows#projects",children:(0,r.jsx)(n.strong,{children:"Projects"})}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Zoom and help controls moved to the lower-right corner of the workspace."}),"\n",(0,r.jsxs)(n.li,{children:["Vector store components moved to provider-specific ",(0,r.jsx)(a.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Serper Google Search API"})," component moved to the ",(0,r.jsx)(n.strong,{children:"Serper"})," bundle"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Increased the default maximum file upload size from ",(0,r.jsx)(n.code,{children:"100 MB"})," to ",(0,r.jsx)(n.code,{children:"1024 MB"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"New integrations and bundles:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/integrations-instana-traceloop",children:"Traceloop"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/bundles-cohere",children:"Cohere Rerank"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/bundles-amazon",children:"S3 Bucket Uploader"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/bundles-composio",children:"Composio single-service components"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"deprecations",children:"Deprecations"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["The ",(0,r.jsx)(n.strong,{children:"Local DB"})," component is now in legacy status.\nReplace this component with the ",(0,r.jsxs)(n.a,{href:"/bundles-chroma",children:[(0,r.jsx)(n.strong,{children:"Chroma DB"})," component"]}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"150",children:"1.5.0"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-2",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Langflow API requests can require authentication"}),"\n",(0,r.jsxs)(n.p,{children:["To enhance security and ensure proper authentication for automatic login features, Langflow API endpoints now require authentication with a Langflow API key, even when ",(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN=True"}),".\nThis change will be enforced in a future release.\nFor temporary backwards compatibility, this release adds the ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN"})," environment variable.\nThe default value is ",(0,r.jsx)(n.code,{children:"true"}),", which disables API authentication enforcement.\nTo enforce API authentication, set ",(0,r.jsx)(n.code,{children:"LANGFLOW_SKIP_AUTH_AUTO_LOGIN=False"}),".\nFor more information, see the documentation for ",(0,r.jsx)(n.a,{href:"/api-keys-and-authentication#langflow-auto-login",children:(0,r.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Centralized ",(0,r.jsx)(n.strong,{children:"Language Model"})," and ",(0,r.jsx)(n.strong,{children:"Embedding Model"})," components"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/components-models",children:[(0,r.jsx)(n.strong,{children:"Language Model"})," component"]})," and ",(0,r.jsxs)(n.a,{href:"/components-embedding-models",children:[(0,r.jsx)(n.strong,{children:"Embedding Model"})," component"]})," are now core components for your LLM and embeddings flows. They support multiple models and model providers, and allow you to experiment with different models without swapping out single-provider components.\nFind them in the visual editor in the ",(0,r.jsx)(n.strong,{children:"Models"})," category."]}),"\n",(0,r.jsxs)(n.p,{children:["The single-provider components moved to the ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," section.\nYou can use them to replace the ",(0,r.jsx)(n.strong,{children:"Language Model"})," and ",(0,r.jsx)(n.strong,{children:"Embedding Model"})," core components, or connect them to the ",(0,r.jsx)(n.strong,{children:"Agent"})," component with the ",(0,r.jsx)(n.strong,{children:"Connect other models"})," provider option."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"MCP server one-click installation"}),"\n",(0,r.jsxs)(n.p,{children:["On your Langflow project's ",(0,r.jsx)(n.strong,{children:"MCP server"})," page, click ",(0,r.jsx)(n.strong,{children:"Auto install"})," to install your Langflow MCP server to MCP clients with just one click.\nThe option to install with a JSON configuration file is available for macOS, Windows, and WSL.\nFor more information, see ",(0,r.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"MCP server management"}),"\n",(0,r.jsxs)(n.p,{children:["You can now add, remove, and edit your MCP servers in the ",(0,r.jsx)(n.strong,{children:"MCP Tools"})," components and through your Langflow ",(0,r.jsx)(n.strong,{children:"Settings"})," page.\nFor more information, see ",(0,r.jsx)(n.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Input schema replaces temporary overrides"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Input schema"})," pane replaces the need to manage tweak values in the ",(0,r.jsx)(n.strong,{children:"API access"})," pane. When you enable a parameter in the ",(0,r.jsx)(n.strong,{children:"Input schema"})," pane, the parameter is automatically added to your flow's code snippets, providing ready-to-use templates for making requests in your preferred programming language."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Tools components are redistributed"}),"\n",(0,r.jsxs)(n.p,{children:["All components in the ",(0,r.jsx)(n.strong,{children:"Tools"})," category were moved to other component categories, such as ",(0,r.jsx)(n.strong,{children:"Helpers"})," and ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})}),", or marked as legacy."]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsxs)(n.a,{href:"/mcp-client",children:[(0,r.jsx)(n.strong,{children:"MCP Tools"})," component"]})," is now under the ",(0,r.jsx)(n.strong,{children:"Agents"})," category."]}),"\n",(0,r.jsxs)(n.p,{children:["Tools that performed the same function were combined into single components that support multiple providers, such as the ",(0,r.jsxs)(n.a,{href:"/web-search",children:[(0,r.jsx)(n.strong,{children:"Web Search"})," component"]})," and the ",(0,r.jsx)(n.strong,{children:"News Search"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Stability improvements"}),"\n",(0,r.jsxs)(n.p,{children:["General stability improvements and bug fixes for enhanced reliability.\nSee an issue? ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/issues",children:"Raise it on GitHub"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"New integrations and bundles"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsxs)(n.a,{href:"/bundles-cleanlab",children:[(0,r.jsx)(n.strong,{children:"Cleanlab"})," bundle"]})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"142",children:"1.4.2"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-3",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Enhanced file and flow management system with improved bulk capabilities."}),"\n",(0,r.jsxs)(n.li,{children:["Added the ",(0,r.jsx)(n.strong,{children:"BigQuery"})," component"]}),"\n",(0,r.jsxs)(n.li,{children:["Added the ",(0,r.jsx)(n.strong,{children:"Twelve Labs"})," bundle"]}),"\n",(0,r.jsxs)(n.li,{children:["Added the ",(0,r.jsx)(n.strong,{children:"NVIDIA System-Assist"})," component"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"deprecations-1",children:"Deprecations"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Deprecated the ",(0,r.jsx)(n.strong,{children:"Combine Text"})," component."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"141",children:"1.4.1"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-4",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added an enhanced ",(0,r.jsx)(n.strong,{children:"Breaking Changes"})," feature to help update components without breaking flows after updating Langflow."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"140",children:"1.4.0"}),"\n",(0,r.jsxs)(n.p,{children:["Highlights of this release include the following changes.\nFor all changes, see the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"new-features-and-enhancements-5",children:"New features and enhancements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Introduced MCP server functionality to serve Langflow tools to MCP-compatible clients."}),"\n",(0,r.jsxs)(n.li,{children:["Renamed ",(0,r.jsx)(n.strong,{children:"Folders"})," to ",(0,r.jsx)(n.strong,{children:"Projects"})," in the visual editor."]}),"\n",(0,r.jsxs)(n.li,{children:["The ",(0,r.jsx)(n.code,{children:"/folders"})," endpoints now redirect to ",(0,r.jsx)(n.code,{children:"/projects"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"deprecations-2",children:"Deprecations"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Deprecated the ",(0,r.jsx)(n.strong,{children:"Gmail"}),", ",(0,r.jsx)(n.strong,{children:"Google Drive"}),", and ",(0,r.jsx)(n.strong,{children:"Google Search"})," components.\nFor alternatives, see the ",(0,r.jsxs)(n.a,{href:"/bundles-google",children:[(0,r.jsx)(n.strong,{children:"Google"})," bundle"]}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"earlier-releases",children:"Earlier releases"}),"\n",(0,r.jsxs)(n.p,{children:["See the ",(0,r.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/releases",children:"Changelog"}),"."]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(f,{...e})}):f(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/99931d31.ec83b3bb.js b/assets/js/99931d31.3123c8e7.js
similarity index 60%
rename from assets/js/99931d31.ec83b3bb.js
rename to assets/js/99931d31.3123c8e7.js
index 762a3acdf1..0976356f02 100644
--- a/assets/js/99931d31.ec83b3bb.js
+++ b/assets/js/99931d31.3123c8e7.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[5270],{11470:(e,n,t)=>{t.d(n,{A:()=>k});var r=t(96540),o=t(18215),a=t(17559),s=t(23104),i=t(56347),l=t(205),c=t(57485),d=t(31682),u=t(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 p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);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,t])}function f({value:e,tabValues:n}){return n.some(n=>n.value===e)}function m({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),o=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,c.aZ)(o),(0,r.useCallback)(e=>{if(!o)return;const n=new URLSearchParams(t.location.search);n.set(o,e),t.replace({...t.location,search:n.toString()})},[o,t])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,a=p(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(!f({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 t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[c,d]=m({queryString:t,groupId:o}),[h,g]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,o]=(0,u.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&o.set(e)},[n,o])]}({groupId:o}),x=(()=>{const e=c??h;return f({value:e,tabValues:a})?e:null})();(0,l.A)(()=>{x&&i(x)},[x]);return{selectedValue:s,selectValue:(0,r.useCallback)(e=>{if(!f({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),g(e)},[d,g,a]),tabValues:a}}var x=t(92303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=t(74848);function v({className:e,block:n,selectedValue:t,selectValue:r,tabValues:a}){const i=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),c=e=>{const n=e.currentTarget,o=i.indexOf(n),s=a[o].value;s!==t&&(l(n),r(s))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":n},e),children:a.map(({value:e,label:n,attributes:r})=>(0,b.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{i.push(e)},onKeyDown:d,onClick:c,...r,className:(0,o.A)("tabs__item",j.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function y({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,o.A)(a.G.tabs.container,"tabs-container",j.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,x.A)();return(0,b.jsx)(w,{...e,children:h(e.children)},String(n))}},19365:(e,n,t)=>{t.d(n,{A:()=>s});t(96540);var r=t(18215);const o={tabItem:"tabItem_Ymn6"};var a=t(74848);function s({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(o.tabItem,t),hidden:n,children:e})}},31929:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>s});var r=t(74848),o=t(28453),a=t(40619);const s=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(a.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(i,{...e})}):i(e)}},40935:(e,n,t)=>{t.d(n,{Ay:()=>i,RM:()=>a});var r=t(74848),o=t(28453);const a=[];function s(e){const n={a:"a",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["If you are running Langflow Desktop on Windows, you must ",(0,r.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development#activate-developer-mode",children:"enable Developer Mode"})," to use the Docling components.\nThe location of this setting depends on your Windows OS version.\nFind ",(0,r.jsx)(n.strong,{children:"For developers"}),' in your Windows Settings, or search for "Developer" in the Windows search bar, and then enable ',(0,r.jsx)(n.strong,{children:"Developer mode"}),".\nYou might need to restart your computer or Langflow to apply the change."]})}function i(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(s,{...e})}):s(e)}},46146:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>u,assets:()=>d,chCodeConfig:()=>h,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>r,toc:()=>p});const r=JSON.parse('{"id":"Components/write-file","title":"Write File","description":"In Langflow version 1.7.0, this component was renamed from Save File to Write File.","source":"@site/docs/Components/write-file.mdx","sourceDirName":"Components","slug":"/write-file","permalink":"/write-file","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Write File","slug":"/write-file"},"sidebar":"docs","previous":{"title":"Read File","permalink":"/read-file"},"next":{"title":"If-Else","permalink":"/if-else"}}');var o=t(74848),a=t(28453),s=t(24754),i=t(40619);t(11470),t(19365),t(31929),t(40935);const l={title:"Write File",slug:"/write-file"},c=void 0,d={},u={annotations:s.hk,Code:s.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[];function f(e){const n={a:"a",admonition:"admonition",code:"code",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return u||g("CH",!1),u.Code||g("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.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,o.jsxs)(n.p,{children:["In Langflow version 1.7.0, this component was renamed from ",(0,o.jsx)(n.strong,{children:"Save File"})," to ",(0,o.jsx)(n.strong,{children:"Write File"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Write File"})," component creates a file containing data produced by another component.\nSeveral file formats are supported, and you can store files in ",(0,o.jsx)(n.a,{href:"/memory",children:"Langflow storage"}),", AWS S3, Google Drive, or the local file system."]}),"\n",(0,o.jsxs)(n.p,{children:["To configure the ",(0,o.jsx)(n.strong,{children:"Write File"})," component and use it in a flow, do the following:"]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Connect ",(0,o.jsx)(n.a,{href:"/data-types#dataframe",children:(0,o.jsx)(n.code,{children:"DataFrame"})}),", ",(0,o.jsx)(n.a,{href:"/data-types#data",children:(0,o.jsx)(n.code,{children:"Data"})}),", or ",(0,o.jsx)(n.a,{href:"/data-types#message",children:(0,o.jsx)(n.code,{children:"Message"})})," output from another component to the ",(0,o.jsx)(n.strong,{children:"Write File"})," component's ",(0,o.jsx)(n.strong,{children:"Input"})," port."]}),"\n",(0,o.jsxs)(n.p,{children:["You can connect the same output to multiple ",(0,o.jsx)(n.strong,{children:"Write File"})," components if you want to create multiple files, save the data in different file formats, or save files to multiple locations."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In ",(0,o.jsx)(n.strong,{children:"File Name"}),", enter a file name and an optional path."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"File Name"})," parameter controls where the file is saved.\nIt can contain a file name or an entire file path:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Default location"}),": If you only provide a file name, then the file is stored in the Langflow data directory. For example,",(0,o.jsx)(n.code,{children:"~/Library/Caches/langflow/data"})," on macOS."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Subdirectory"}),": To store files in subdirectories, add the path to the ",(0,o.jsx)(n.strong,{children:"File Name"})," parameter.\nIf a given subdirectory doesn't already exist, Langflow automatically creates it.\nFor example, ",(0,o.jsx)(n.code,{children:"files/my_file"})," creates ",(0,o.jsx)(n.code,{children:"my_file"})," in ",(0,o.jsx)(n.code,{children:"/data/files"}),", and it creates the ",(0,o.jsx)(n.code,{children:"files"})," subdirectory if it doesn't already exist."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Absolute or relative path"}),": To store files elsewhere in your environment or local file storage, provide the absolute or relative path to the desired location.\nFor example, ",(0,o.jsx)(n.code,{children:"~/Desktop/my_file"})," saves ",(0,o.jsx)(n.code,{children:"my_file"})," to the desktop."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Don't include an extension in the file name.\nIf you do, the extension is treated as part of the file name; it has no impact on the ",(0,o.jsx)(n.strong,{children:"File Format"})," parameter."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In the ",(0,o.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),", click ",(0,o.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Controls"}),", select the desired file format, and then click ",(0,o.jsx)(n.strong,{children:"Close"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The available ",(0,o.jsx)(n.strong,{children:"File Format"})," options depend on the input data type:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"DataFrame"})," can be saved to CSV (default), Excel (requires ",(0,o.jsx)(n.code,{children:"openpyxl"})," ",(0,o.jsx)(n.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (fallback default), or Markdown."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Data"})," can be saved to CSV, Excel (requires ",(0,o.jsx)(n.code,{children:"openpyxl"})," ",(0,o.jsx)(n.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (default), or Markdown."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Message"})," can be saved to TXT, JSON (default), or Markdown."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{title:"Overwrites allowed",type:"warning",children:(0,o.jsxs)(n.p,{children:["If you have multiple ",(0,o.jsx)(n.strong,{children:"Write File"})," components, in one or more flows, with the same file name, path, and extension, the file contains the data from the most recent run only.\nLangflow doesn't block overwrites if a matching file already exists.\nTo avoid unintended overwrites, use unique file names and paths."]})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["To test the ",(0,o.jsx)(n.strong,{children:"Write File"})," component, click ",(0,o.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Run component"}),", and then click ",(0,o.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Inspect output"})," to get the filepath where the file was saved."]}),"\n",(0,o.jsxs)(n.p,{children:["The component's literal output is a ",(0,o.jsx)(n.code,{children:"Message"})," containing the original data type, the file name and extension, and the absolute filepath to the file based on the ",(0,o.jsx)(n.strong,{children:"File Name"})," parameter.\nFor example:"]}),"\n",(0,o.jsx)(u.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as 'my_file.csv' at /Users/user.name/Library/Caches/langflow/data/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(n.p,{children:["If the ",(0,o.jsx)(n.strong,{children:"File Name"})," contains a subdirectory or other non-default path, this is reflected in the ",(0,o.jsx)(n.code,{children:"Message"})," output.\nFor example, a CSV file with the file name ",(0,o.jsx)(n.code,{children:"~/Desktop/my_file"})," could produce the following output:"]}),"\n",(0,o.jsx)(u.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as '/Users/user.name/Desktop/my_file.csv' at /Users/user.name/Desktop/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Optional: If you want to use the saved file in a flow, you must use an API call or another component to retrieve the file from the given filepath."}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.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
+"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[5270],{11470:(e,n,t)=>{t.d(n,{A:()=>k});var r=t(96540),o=t(18215),a=t(17559),s=t(23104),i=t(56347),l=t(205),c=t(57485),d=t(31682),u=t(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 f(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);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,t])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function m({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),o=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,c.aZ)(o),(0,r.useCallback)(e=>{if(!o)return;const n=new URLSearchParams(t.location.search);n.set(o,e),t.replace({...t.location,search:n.toString()})},[o,t])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,a=f(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 t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[c,d]=m({queryString:t,groupId:o}),[h,g]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,o]=(0,u.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&o.set(e)},[n,o])]}({groupId:o}),x=(()=>{const e=c??h;return p({value:e,tabValues:a})?e:null})();(0,l.A)(()=>{x&&i(x)},[x]);return{selectedValue:s,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),g(e)},[d,g,a]),tabValues:a}}var x=t(92303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=t(74848);function v({className:e,block:n,selectedValue:t,selectValue:r,tabValues:a}){const i=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),c=e=>{const n=e.currentTarget,o=i.indexOf(n),s=a[o].value;s!==t&&(l(n),r(s))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":n},e),children:a.map(({value:e,label:n,attributes:r})=>(0,b.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{i.push(e)},onKeyDown:d,onClick:c,...r,className:(0,o.A)("tabs__item",j.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function y({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,o.A)(a.G.tabs.container,"tabs-container",j.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,x.A)();return(0,b.jsx)(w,{...e,children:h(e.children)},String(n))}},19365:(e,n,t)=>{t.d(n,{A:()=>s});t(96540);var r=t(18215);const o={tabItem:"tabItem_Ymn6"};var a=t(74848);function s({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(o.tabItem,t),hidden:n,children:e})}},31929:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>s});var r=t(74848),o=t(28453),a=t(40619);const s=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(a.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(i,{...e})}):i(e)}},40935:(e,n,t)=>{t.d(n,{Ay:()=>i,RM:()=>a});var r=t(74848),o=t(28453);const a=[];function s(e){const n={a:"a",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["If you are running Langflow Desktop on Windows, you must ",(0,r.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development#activate-developer-mode",children:"enable Developer Mode"})," to use the Docling components.\nThe location of this setting depends on your Windows OS version.\nFind ",(0,r.jsx)(n.strong,{children:"For developers"}),' in your Windows Settings, or search for "Developer" in the Windows search bar, and then enable ',(0,r.jsx)(n.strong,{children:"Developer mode"}),".\nYou might need to restart your computer or Langflow to apply the change."]})}function i(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(s,{...e})}):s(e)}},46146:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>u,assets:()=>d,chCodeConfig:()=>h,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>r,toc:()=>f});const r=JSON.parse('{"id":"Components/write-file","title":"Write File","description":"In Langflow version 1.7.0, this component was renamed from Save File to Write File.","source":"@site/docs/Components/write-file.mdx","sourceDirName":"Components","slug":"/write-file","permalink":"/write-file","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Write File","slug":"/write-file"},"sidebar":"docs","previous":{"title":"Read File","permalink":"/read-file"},"next":{"title":"If-Else","permalink":"/if-else"}}');var o=t(74848),a=t(28453),s=t(24754),i=t(40619);t(11470),t(19365),t(31929),t(40935);const l={title:"Write File",slug:"/write-file"},c=void 0,d={},u={annotations:s.hk,Code:s.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},f=[];function p(e){const n={a:"a",admonition:"admonition",code:"code",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return u||g("CH",!1),u.Code||g("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.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,o.jsxs)(n.p,{children:["In Langflow version 1.7.0, this component was renamed from ",(0,o.jsx)(n.strong,{children:"Save File"})," to ",(0,o.jsx)(n.strong,{children:"Write File"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Write File"})," component creates a file containing data produced by another component.\nSeveral file formats are supported, and you can store files in ",(0,o.jsx)(n.a,{href:"/memory",children:"Langflow storage"}),", AWS S3, Google Drive, or the local file system."]}),"\n",(0,o.jsxs)(n.p,{children:["To configure the ",(0,o.jsx)(n.strong,{children:"Write File"})," component and use it in a flow, do the following:"]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Connect ",(0,o.jsx)(n.a,{href:"/data-types#dataframe",children:(0,o.jsx)(n.code,{children:"DataFrame"})}),", ",(0,o.jsx)(n.a,{href:"/data-types#data",children:(0,o.jsx)(n.code,{children:"Data"})}),", or ",(0,o.jsx)(n.a,{href:"/data-types#message",children:(0,o.jsx)(n.code,{children:"Message"})})," output from another component to the ",(0,o.jsx)(n.strong,{children:"Write File"})," component's ",(0,o.jsx)(n.strong,{children:"Input"})," port."]}),"\n",(0,o.jsxs)(n.p,{children:["You can connect the same output to multiple ",(0,o.jsx)(n.strong,{children:"Write File"})," components if you want to create multiple files, save the data in different file formats, or save files to multiple locations."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Click ",(0,o.jsx)(n.strong,{children:"Storage Location"}),", and then select ",(0,o.jsx)(n.strong,{children:"Local"}),", ",(0,o.jsx)(n.strong,{children:"AWS"}),", or ",(0,o.jsx)(n.strong,{children:"Google Drive"}),".\nIf required, enter your cloud provider's credentials.\nFor more information, see ",(0,o.jsx)(n.a,{href:"/concepts-file-management#configure-file-storage",children:"Configure file storage"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In ",(0,o.jsx)(n.strong,{children:"File Name"}),", enter a file name and an optional path."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"File Name"})," parameter controls where the file is saved.\nIt can contain a file name or an entire file path:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Default location"}),": If you only provide a file name, then the file is stored in the Langflow data directory. For example,",(0,o.jsx)(n.code,{children:"~/Library/Caches/langflow/data"})," on macOS."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Subdirectory"}),": To store files in subdirectories, add the path to the ",(0,o.jsx)(n.strong,{children:"File Name"})," parameter.\nIf a given subdirectory doesn't already exist, Langflow automatically creates it.\nFor example, ",(0,o.jsx)(n.code,{children:"files/my_file"})," creates ",(0,o.jsx)(n.code,{children:"my_file"})," in ",(0,o.jsx)(n.code,{children:"/data/files"}),", and it creates the ",(0,o.jsx)(n.code,{children:"files"})," subdirectory if it doesn't already exist."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Absolute or relative path"}),": To store files elsewhere in your environment or local file storage, provide the absolute or relative path to the desired location.\nFor example, ",(0,o.jsx)(n.code,{children:"~/Desktop/my_file"})," saves ",(0,o.jsx)(n.code,{children:"my_file"})," to the desktop."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Don't include an extension in the file name.\nIf you do, the extension is treated as part of the file name; it has no impact on the ",(0,o.jsx)(n.strong,{children:"File Format"})," parameter."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Select the desired file format, and then click ",(0,o.jsx)(n.strong,{children:"Close"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The available ",(0,o.jsx)(n.strong,{children:"File Format"})," options depend on the input data type:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"DataFrame"})," can be saved to CSV (default), Excel (requires ",(0,o.jsx)(n.code,{children:"openpyxl"})," ",(0,o.jsx)(n.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (fallback default), or Markdown."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Data"})," can be saved to CSV, Excel (requires ",(0,o.jsx)(n.code,{children:"openpyxl"})," ",(0,o.jsx)(n.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (default), or Markdown."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Message"})," can be saved to TXT, JSON (default), or Markdown."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{title:"Overwrites allowed",type:"warning",children:(0,o.jsxs)(n.p,{children:["If you have multiple ",(0,o.jsx)(n.strong,{children:"Write File"})," components, in one or more flows, with the same file name, path, and extension, the file contains the data from the most recent run only.\nLangflow doesn't block overwrites if a matching file already exists.\nTo avoid unintended overwrites, use unique file names and paths."]})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["To test the ",(0,o.jsx)(n.strong,{children:"Write File"})," component, click ",(0,o.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Run component"}),", and then click ",(0,o.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Inspect output"})," to get the filepath where the file was saved."]}),"\n",(0,o.jsxs)(n.p,{children:["The component's literal output is a ",(0,o.jsx)(n.code,{children:"Message"})," containing the original data type, the file name and extension, and the absolute filepath to the file based on the ",(0,o.jsx)(n.strong,{children:"File Name"})," parameter.\nFor example:"]}),"\n",(0,o.jsx)(u.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as 'my_file.csv' at /Users/user.name/Library/Caches/langflow/data/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(n.p,{children:["If the ",(0,o.jsx)(n.strong,{children:"File Name"})," contains a subdirectory or other non-default path, this is reflected in the ",(0,o.jsx)(n.code,{children:"Message"})," output.\nFor example, a CSV file with the file name ",(0,o.jsx)(n.code,{children:"~/Desktop/my_file"})," could produce the following output:"]}),"\n",(0,o.jsx)(u.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as '/Users/user.name/Desktop/my_file.csv' at /Users/user.name/Desktop/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Optional: If you want to use the saved file in a flow, you must use an API call or another component to retrieve the file from the given filepath."}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(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/9a5e6f6b.d2b7c901.js b/assets/js/9a5e6f6b.bd0de960.js
similarity index 80%
rename from assets/js/9a5e6f6b.d2b7c901.js
rename to assets/js/9a5e6f6b.bd0de960.js
index b0cb7578fc..dcfedd327f 100644
--- a/assets/js/9a5e6f6b.d2b7c901.js
+++ b/assets/js/9a5e6f6b.bd0de960.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[4263],{11470:(e,n,s)=>{s.d(n,{A:()=>I});var r=s(96540),t=s(18215),i=s(17559),l=s(23104),a=s(56347),d=s(205),o=s(57485),c=s(31682),h=s(70679);function p(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:s}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return p(e).map(({props:{value:e,label:n,attributes:s,default:r}})=>({value:e,label:n,attributes:s,default:r}))}(s);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,s])}function x({value:e,tabValues:n}){return n.some(n=>n.value===e)}function j({queryString:e=!1,groupId:n}){const s=(0,a.W6)(),t=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The 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,o.aZ)(t),(0,r.useCallback)(e=>{if(!t)return;const n=new URLSearchParams(s.location.search);n.set(t,e),s.replace({...s.location,search:n.toString()})},[t,s])]}function f(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,a]=(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(!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 s=n.find(e=>e.default)??n[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:i})),[o,c]=j({queryString:s,groupId:t}),[p,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[s,t]=(0,h.Dv)(n);return[s,(0,r.useCallback)(e=>{n&&t.set(e)},[n,t])]}({groupId:t}),m=(()=>{const e=o??p;return x({value:e,tabValues:i})?e:null})();(0,d.A)(()=>{m&&a(m)},[m]);return{selectedValue:l,selectValue:(0,r.useCallback)(e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),c(e),f(e)},[c,f,i]),tabValues:i}}var m=s(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(74848);function v({className:e,block:n,selectedValue:s,selectValue:r,tabValues:i}){const a=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.a_)(),o=e=>{const n=e.currentTarget,t=a.indexOf(n),l=i[t].value;l!==s&&(d(n),r(l))},c=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=a.indexOf(e.currentTarget)+1;n=a[s]??a[0];break}case"ArrowLeft":{const s=a.indexOf(e.currentTarget)-1;n=a[s]??a[a.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,b.jsx)("li",{role:"tab",tabIndex:s===e?0:-1,"aria-selected":s===e,ref:e=>{a.push(e)},onKeyDown:c,onClick:o,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":s===e}),children:n??e},e))})}function y({lazy:e,children:n,selectedValue:s}){const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=i.find(e=>e.props.value===s);return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s}))})}function w(e){const n=f(e);return(0,b.jsxs)("div",{className:(0,t.A)(i.G.tabs.container,"tabs-container",g.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function I(e){const n=(0,m.A)();return(0,b.jsx)(w,{...e,children:p(e.children)},String(n))}},19365:(e,n,s)=>{s.d(n,{A:()=>l});s(96540);var r=s(18215);const t={tabItem:"tabItem_Ymn6"};var i=s(74848);function l({children:e,hidden:n,className:s}){return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,s),hidden:n,children:e})}},30018:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>x,contentTitle:()=>u,default:()=>m,frontMatter:()=>p,metadata:()=>r,toc:()=>j});const r=JSON.parse('{"id":"Components/read-file","title":"Read File","description":"In Langflow version 1.7.0, this component was renamed from File to Read File.","source":"@site/docs/Components/read-file.mdx","sourceDirName":"Components","slug":"/read-file","permalink":"/read-file","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Read File","slug":"/read-file"},"sidebar":"docs","previous":{"title":"Directory","permalink":"/directory"},"next":{"title":"Write File","permalink":"/write-file"}}');var t=s(74848),i=s(28453),l=s(40619),a=s(11470),d=s(19365),o=s(31929),c=s(40935),h=s(76582);const p={title:"Read File",slug:"/read-file"},u=void 0,x={},j=[{value:"File type and size limits",id:"file-type-and-size-limits",level:2},{value:"File parameters",id:"file-parameters",level:2},...o.RM,{value:"Advanced parsing",id:"advanced-parsing",level:2},...h.RM,...c.RM,{value:"File output",id:"file-output",level:2}];function f(e){const n={a:"a",admonition:"admonition",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,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["In Langflow version 1.7.0, this component was renamed from ",(0,t.jsx)(n.strong,{children:"File"})," to ",(0,t.jsx)(n.strong,{children:"Read File"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.strong,{children:"Read File"})," component loads and parses files, converts the content into a ",(0,t.jsx)(n.code,{children:"Data"}),", ",(0,t.jsx)(n.code,{children:"DataFrame"}),", or ",(0,t.jsx)(n.code,{children:"Message"})," object.\nIt supports multiple file types, provides parameters for parallel processing and error handling, and supports advanced parsing with the Docling library."]}),"\n",(0,t.jsxs)(n.p,{children:["You can add files to the ",(0,t.jsx)(n.strong,{children:"Read File"})," component in the visual editor or at runtime, and you can upload multiple files at once.\nFor more information about uploading files and working with files in flows, see ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"File management"})," and ",(0,t.jsx)(n.a,{href:"/chat-with-files",children:"Create a chatbot that can ingest files"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"file-type-and-size-limits",children:"File type and size limits"}),"\n",(0,t.jsxs)(n.p,{children:["By default, the maximum file size is 1024 MB.\nTo modify this value, change the ",(0,t.jsx)(n.code,{children:"LANGFLOW_MAX_FILE_SIZE_UPLOAD"})," ",(0,t.jsx)(n.a,{href:"/environment-variables",children:"environment variable"}),"."]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:"Supported file types"}),(0,t.jsxs)(n.p,{children:["The following file types are supported by the ",(0,t.jsx)(n.strong,{children:"Read File"})," component.\nUse archive and compressed formats to bundle multiple files together, or use the ",(0,t.jsxs)(n.a,{href:"/directory",children:[(0,t.jsx)(n.strong,{children:"Directory"})," component"]})," to load all files in a directory."]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".bz2"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".csv"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".docx"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".gz"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".htm"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".html"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".json"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".js"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".md"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".mdx"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".pdf"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".py"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".sh"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".sql"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".tar"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".tgz"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".ts"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".tsx"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".txt"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".xml"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".yaml"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".yml"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".zip"})}),"\n"]})]}),"\n",(0,t.jsx)(n.p,{children:"If you need to load an unsupported file type, you must use a different component that supports that file type and, potentially, parses it outside Langflow, or you must convert it to a supported type before uploading it."}),"\n",(0,t.jsxs)(n.p,{children:["For images, see ",(0,t.jsx)(n.a,{href:"/concepts-file-management#upload-images",children:"Upload images"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For videos, see the ",(0,t.jsx)(n.strong,{children:"Twelve Labs"})," and ",(0,t.jsx)(n.strong,{children:"YouTube"})," ",(0,t.jsx)(l.A,{name:"Blocks","aria-hidden":"true"})," ",(0,t.jsx)(n.a,{href:"/components-bundle-components",children:(0,t.jsx)(n.strong,{children:"Bundles"})}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"file-parameters",children:"File parameters"}),"\n",(0,t.jsx)(o.Ay,{}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"path"}),(0,t.jsx)(n.td,{children:"Files"}),(0,t.jsxs)(n.td,{children:["Input parameter. The path to files to load. Can be local or in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"}),". Supports individual files and bundled archives."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"file_path"}),(0,t.jsx)(n.td,{children:"Server File Path"}),(0,t.jsxs)(n.td,{children:["Input parameter. A ",(0,t.jsx)(n.code,{children:"Data"})," object with a ",(0,t.jsx)(n.code,{children:"file_path"})," property pointing to a file in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"})," or a ",(0,t.jsx)(n.code,{children:"Message"})," object with a path to the file. Supersedes ",(0,t.jsx)(n.strong,{children:"Files"})," (",(0,t.jsx)(n.code,{children:"path"}),") but supports the same file types."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"separator"}),(0,t.jsx)(n.td,{children:"Separator"}),(0,t.jsxs)(n.td,{children:["Input parameter. The separator to use between multiple outputs in ",(0,t.jsx)(n.code,{children:"Message"})," format."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"silent_errors"}),(0,t.jsx)(n.td,{children:"Silent Errors"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"}),", errors in the component don't raise an exception. Default: Disabled (",(0,t.jsx)(n.code,{children:"false"}),")."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"delete_server_file_after_processing"}),(0,t.jsx)(n.td,{children:"Delete Server File After Processing"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"})," (default), the ",(0,t.jsx)(n.strong,{children:"Server File Path"})," (",(0,t.jsx)(n.code,{children:"file_path"}),") is deleted after processing."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"ignore_unsupported_extensions"}),(0,t.jsx)(n.td,{children:"Ignore Unsupported Extensions"}),(0,t.jsxs)(n.td,{children:["Input parameter. If enabled (",(0,t.jsx)(n.code,{children:"true"}),"), files with unsupported extensions are accepted but not processed. If disabled (",(0,t.jsx)(n.code,{children:"false"}),"), the ",(0,t.jsx)(n.strong,{children:"Read File"})," component either can throw an error if an unsupported file type is provided. The default is ",(0,t.jsx)(n.code,{children:"true"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"ignore_unspecified_files"}),(0,t.jsx)(n.td,{children:"Ignore Unspecified Files"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"}),", ",(0,t.jsx)(n.code,{children:"Data"})," with no ",(0,t.jsx)(n.code,{children:"file_path"})," property is ignored. If ",(0,t.jsx)(n.code,{children:"false"})," (default), the component errors when a file isn't specified."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"concurrency_multithreading"}),(0,t.jsx)(n.td,{children:"Processing Concurrency"}),(0,t.jsx)(n.td,{children:"Input parameter. The number of files to process concurrently if multiple files are uploaded. Default is 1. Values greater than 1 enable parallel processing for 2 or more files. Ignored for single-file uploads and advanced parsing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"advanced_parser"}),(0,t.jsx)(n.td,{children:"Advanced Parser"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"}),", enables ",(0,t.jsx)(n.a,{href:"#advanced-parsing",children:"advanced parsing"}),". Only available for single-file uploads of compatible file types. Default: Disabled (",(0,t.jsx)(n.code,{children:"false"}),")."]})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"advanced-parsing",children:"Advanced parsing"}),"\n",(0,t.jsxs)(n.p,{children:["Starting in Langflow version 1.6, the ",(0,t.jsx)(n.strong,{children:"Read File"})," component supports advanced document parsing using the ",(0,t.jsx)(n.a,{href:"https://docling-project.github.io/docling/",children:"Docling"})," library for supported file types."]}),"\n",(0,t.jsx)(n.p,{children:"To use advanced parsing, do the following:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Complete the following prerequisites, if applicable:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Install Langflow version 1.6 or later"}),": Earlier versions don't support advanced parsing with the ",(0,t.jsx)(n.strong,{children:"Read File"})," component. For upgrade guidance, see the ",(0,t.jsx)(n.a,{href:"/release-notes",children:"Release notes"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Install Docling dependency on macOS Intel (x86_64)"}),": The Docling dependency isn't installed by default for macOS Intel (x86_64). Use the ",(0,t.jsx)(n.a,{href:"https://docling-project.github.io/docling/installation/",children:"Docling installation guide"})," to install the Docling dependency."]}),"\n",(0,t.jsx)(n.p,{children:"For all other operating systems, the Docling dependency is installed by default."}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(h.Ay,{}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enable Developer Mode for Windows"}),":"]}),"\n"]}),"\n",(0,t.jsx)(c.Ay,{}),"\n",(0,t.jsx)(n.p,{children:"Developer Mode isn't required for Langflow OSS on Windows."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add one valid file to the ",(0,t.jsx)(n.strong,{children:"Read File"})," component."]}),"\n",(0,t.jsx)(n.admonition,{title:"Advanced parsing limitations",type:"info",children:(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Advanced parsing processes only one file.\nIf you select multiple files, the ",(0,t.jsx)(n.strong,{children:"Read File"})," component processes the first file only, ignoring any additional files.\nTo process multiple files with advanced parsing, pass each file to a separate ",(0,t.jsx)(n.strong,{children:"Read File"})," components, or use the dedicated ",(0,t.jsxs)(n.a,{href:"/bundles-docling",children:[(0,t.jsx)(n.strong,{children:"Docling"})," components"]}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Advanced parsing can process any of the ",(0,t.jsx)(n.strong,{children:"Read File"})," component's supported file types except ",(0,t.jsx)(n.code,{children:".csv"}),", ",(0,t.jsx)(n.code,{children:".xlsx"}),", and ",(0,t.jsx)(n.code,{children:".parquet"})," files because it is designed for document processing, such as extracting text from PDFs.\nFor structured data analysis, use the ",(0,t.jsxs)(n.a,{href:"/parser",children:[(0,t.jsx)(n.strong,{children:"Parser"})," component"]}),"."]}),"\n"]}),"\n"]})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Enable ",(0,t.jsx)(n.strong,{children:"Advanced Parsing"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(l.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Controls"})," in the ",(0,t.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"})," to configure advanced parsing parameters, which are hidden by default:"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"pipeline"}),(0,t.jsx)(n.td,{children:"Pipeline"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. The Docling pipeline to use, either ",(0,t.jsx)(n.code,{children:"standard"})," (default, recommended) or ",(0,t.jsx)(n.code,{children:"vlm"})," (may produce inconsistent results)."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"ocr_engine"}),(0,t.jsx)(n.td,{children:"OCR Engine"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. The OCR parser to use if ",(0,t.jsx)(n.code,{children:"pipeline"})," is ",(0,t.jsx)(n.code,{children:"standard"}),". Options are ",(0,t.jsx)(n.code,{children:"None"})," (default) or ",(0,t.jsx)(n.a,{href:"https://pypi.org/project/easyocr/",children:(0,t.jsx)(n.code,{children:"EasyOCR"})}),". ",(0,t.jsx)(n.code,{children:"None"})," means that no OCR engine is used, and this can produce inconsistent or broken results for some documents. This setting has no effect with the ",(0,t.jsx)(n.code,{children:"vlm"})," pipeline."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"md_image_placeholder"}),(0,t.jsx)(n.td,{children:"Markdown Image Placeholder"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. Defines the placeholder for image files if the output type is ",(0,t.jsx)(n.strong,{children:"Markdown"}),". Default: ",(0,t.jsx)(n.code,{children:"\x3c!-- image --\x3e"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"md_page_break_placeholder"}),(0,t.jsx)(n.td,{children:"Markdown Page Break Placeholder"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. Defines the placeholder for page breaks if the output type is ",(0,t.jsx)(n.strong,{children:"Markdown"}),". Default: ",(0,t.jsx)(n.code,{children:'""'})," (empty string)."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"doc_key"}),(0,t.jsx)(n.td,{children:"Document Key"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. The key to use for the ",(0,t.jsx)(n.code,{children:"DoclingDocument"})," column, which holds the structured information extracted from the source document. See ",(0,t.jsx)(n.a,{href:"https://docling-project.github.io/docling/concepts/docling_document/",children:"Docling Document"})," for details. Default: ",(0,t.jsx)(n.code,{children:"doc"}),"."]})]})]})]}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsxs)(n.p,{children:["For additional Docling features, including other components and OCR parsers, use the ",(0,t.jsxs)(n.a,{href:"/bundles-docling",children:[(0,t.jsx)(n.strong,{children:"Docling"})," bundle"]}),"."]})}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"file-output",children:"File output"}),"\n",(0,t.jsxs)(n.p,{children:["The output of the ",(0,t.jsx)(n.strong,{children:"Read File"})," component depends on the number of files loaded and whether advanced parsing is enabled.\nIf multiple options are available, you can set the output type near the component's output port."]}),"\n",(0,t.jsxs)(a.A,{children:[(0,t.jsx)(d.A,{value:"zero",label:"No files",children:(0,t.jsxs)(n.p,{children:["If you run the ",(0,t.jsx)(n.strong,{children:"Read File"})," component with no file selected, it throws an error, or, if ",(0,t.jsx)(n.strong,{children:"Silent Errors"})," is enabled, produces no output."]})}),(0,t.jsxs)(d.A,{value:"one-false",label:"One file without advanced parsing",children:[(0,t.jsx)(n.p,{children:"If advanced parsing is disabled and you upload one file, the following output types are available:"}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Structured Content"}),": Available only for ",(0,t.jsx)(n.code,{children:".csv"}),", ",(0,t.jsx)(n.code,{children:".xlsx"}),", ",(0,t.jsx)(n.code,{children:".parquet"}),", and ",(0,t.jsx)(n.code,{children:".json"})," files."]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["For ",(0,t.jsx)(n.code,{children:".csv"})," files, produces a ",(0,t.jsx)(n.a,{href:"/data-types#dataframe",children:(0,t.jsx)(n.code,{children:"DataFrame"})})," representing the table data."]}),"\n",(0,t.jsxs)(n.li,{children:["For ",(0,t.jsx)(n.code,{children:".json"})," files, produces a ",(0,t.jsx)(n.a,{href:"/data-types#data",children:(0,t.jsx)(n.code,{children:"Data"})})," object with the parsed JSON data."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Raw Content"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the file's raw text content."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"File Path"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the path to the file in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"}),"."]}),"\n"]}),"\n"]})]}),(0,t.jsxs)(d.A,{value:"one-true",label:"One file with advanced parsing",children:[(0,t.jsx)(n.p,{children:"If advanced parsing is enabled and you upload one file, the following output types are available:"}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Structured Output"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#dataframe",children:(0,t.jsx)(n.code,{children:"DataFrame"})})," containing the Docling-processed document data with text elements, page numbers, and metadata."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Markdown"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the uploaded document contents in Markdown format with image placeholders."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"File Path"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the path to the file in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"}),"."]}),"\n"]}),"\n"]})]}),(0,t.jsxs)(d.A,{value:"multi",label:"Multiple files",children:[(0,t.jsxs)(n.p,{children:["If you upload multiple files, the component outputs ",(0,t.jsx)(n.strong,{children:"Files"}),", which is a ",(0,t.jsx)(n.a,{href:"/data-types#dataframe",children:(0,t.jsx)(n.code,{children:"DataFrame"})})," containing the content and metadata of all selected files."]}),(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"#advanced-parsing",children:"Advanced parsing"})," doesn't support multiple files; it processes only the first file."]})]})]})]})}function m(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(f,{...e})}):f(e)}},31929:(e,n,s)=>{s.d(n,{Ay:()=>d,RM:()=>l});var r=s(74848),t=s(28453),i=s(40619);const l=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function d(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},40935:(e,n,s)=>{s.d(n,{Ay:()=>a,RM:()=>i});var r=s(74848),t=s(28453);const i=[];function l(e){const n={a:"a",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["If you are running Langflow Desktop on Windows, you must ",(0,r.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development#activate-developer-mode",children:"enable Developer Mode"})," to use the Docling components.\nThe location of this setting depends on your Windows OS version.\nFind ",(0,r.jsx)(n.strong,{children:"For developers"}),' in your Windows Settings, or search for "Developer" in the Windows search bar, and then enable ',(0,r.jsx)(n.strong,{children:"Developer mode"}),".\nYou might need to restart your computer or Langflow to apply the change."]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},76582:(e,n,s)=>{s.d(n,{Ay:()=>a,RM:()=>i});var r=s(74848),t=s(28453);const i=[];function l(e){const n={a:"a",li:"li",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Docker/Linux system dependencies"}),": If running Langflow in a Docker container on Linux, you might need to install additional system packages for document processing. For more information, see ",(0,r.jsx)(n.a,{href:"/troubleshoot#document-processing-errors-in-docker-containers",children:"Document processing errors in Docker containers"}),"."]}),"\n"]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}}}]);
\ No newline at end of file
+"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[4263],{11470:(e,n,r)=>{r.d(n,{A:()=>D});var s=r(96540),t=r(18215),i=r(17559),l=r(23104),a=r(56347),o=r(205),d=r(57485),c=r(31682),h=r(70679);function p(e){return s.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad 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:r}=e;return(0,s.useMemo)(()=>{const e=n??function(e){return p(e).map(({props:{value:e,label:n,attributes:r,default:s}})=>({value:e,label:n,attributes:r,default:s}))}(r);return function(e){const n=(0,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,r])}function x({value:e,tabValues:n}){return n.some(n=>n.value===e)}function j({queryString:e=!1,groupId:n}){const r=(0,a.W6)(),t=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The 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,d.aZ)(t),(0,s.useCallback)(e=>{if(!t)return;const n=new URLSearchParams(r.location.search);n.set(t,e),r.replace({...r.location,search:n.toString()})},[t,r])]}function f(e){const{defaultValue:n,queryString:r=!1,groupId:t}=e,i=u(e),[l,a]=(0,s.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 r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i})),[d,c]=j({queryString:r,groupId:t}),[p,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,t]=(0,h.Dv)(n);return[r,(0,s.useCallback)(e=>{n&&t.set(e)},[n,t])]}({groupId:t}),m=(()=>{const e=d??p;return x({value:e,tabValues:i})?e:null})();(0,o.A)(()=>{m&&a(m)},[m]);return{selectedValue:l,selectValue:(0,s.useCallback)(e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),c(e),f(e)},[c,f,i]),tabValues:i}}var m=r(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=r(74848);function v({className:e,block:n,selectedValue:r,selectValue:s,tabValues:i}){const a=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),d=e=>{const n=e.currentTarget,t=a.indexOf(n),l=i[t].value;l!==r&&(o(n),s(l))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=a.indexOf(e.currentTarget)+1;n=a[r]??a[0];break}case"ArrowLeft":{const r=a.indexOf(e.currentTarget)-1;n=a[r]??a[a.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:s})=>(0,b.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{a.push(e)},onKeyDown:c,onClick:d,...s,className:(0,t.A)("tabs__item",g.tabItem,s?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function y({lazy:e,children:n,selectedValue:r}){const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=i.find(e=>e.props.value===r);return e?(0,s.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function w(e){const n=f(e);return(0,b.jsxs)("div",{className:(0,t.A)(i.G.tabs.container,"tabs-container",g.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function D(e){const n=(0,m.A)();return(0,b.jsx)(w,{...e,children:p(e.children)},String(n))}},19365:(e,n,r)=>{r.d(n,{A:()=>l});r(96540);var s=r(18215);const t={tabItem:"tabItem_Ymn6"};var i=r(74848);function l({children:e,hidden:n,className:r}){return(0,i.jsx)("div",{role:"tabpanel",className:(0,s.A)(t.tabItem,r),hidden:n,children:e})}},30018:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>x,contentTitle:()=>u,default:()=>m,frontMatter:()=>p,metadata:()=>s,toc:()=>j});const s=JSON.parse('{"id":"Components/read-file","title":"Read File","description":"In Langflow version 1.7.0, this component was renamed from File to Read File.","source":"@site/docs/Components/read-file.mdx","sourceDirName":"Components","slug":"/read-file","permalink":"/read-file","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Read File","slug":"/read-file"},"sidebar":"docs","previous":{"title":"Directory","permalink":"/directory"},"next":{"title":"Write File","permalink":"/write-file"}}');var t=r(74848),i=r(28453),l=r(40619),a=r(11470),o=r(19365),d=r(31929),c=r(40935),h=r(76582);const p={title:"Read File",slug:"/read-file"},u=void 0,x={},j=[{value:"File type and size limits",id:"file-type-and-size-limits",level:2},{value:"File parameters",id:"file-parameters",level:2},...d.RM,{value:"Advanced parsing",id:"advanced-parsing",level:2},...h.RM,...c.RM,{value:"File output",id:"file-output",level:2}];function f(e){const n={a:"a",admonition:"admonition",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,i.R)(),...e.components},{Details:r}=n;return r||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["In Langflow version 1.7.0, this component was renamed from ",(0,t.jsx)(n.strong,{children:"File"})," to ",(0,t.jsx)(n.strong,{children:"Read File"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.strong,{children:"Read File"})," component loads and parses files, converts the content into a ",(0,t.jsx)(n.code,{children:"Data"}),", ",(0,t.jsx)(n.code,{children:"DataFrame"}),", or ",(0,t.jsx)(n.code,{children:"Message"})," object.\nIt supports multiple file types, provides parameters for parallel processing and error handling, and supports advanced parsing with the Docling library."]}),"\n",(0,t.jsxs)(n.p,{children:["You can add files to the ",(0,t.jsx)(n.strong,{children:"Read File"})," component in the visual editor or at runtime, and you can upload multiple files at once.\nFor more information about uploading files and working with files in flows, see ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"File management"})," and ",(0,t.jsx)(n.a,{href:"/chat-with-files",children:"Create a chatbot that can ingest files"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.strong,{children:"Read File"})," component can read files from the local Langflow database, ",(0,t.jsx)(n.strong,{children:"AWS S3"}),", or ",(0,t.jsx)(n.strong,{children:"Google Drive"}),".\nFor more information, see ",(0,t.jsx)(n.a,{href:"/concepts-file-management#configure-file-storage",children:"Configure file storage"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"file-type-and-size-limits",children:"File type and size limits"}),"\n",(0,t.jsxs)(n.p,{children:["By default, the maximum file size is 1024 MB.\nTo modify this value, change the ",(0,t.jsx)(n.code,{children:"LANGFLOW_MAX_FILE_SIZE_UPLOAD"})," ",(0,t.jsx)(n.a,{href:"/environment-variables",children:"environment variable"}),"."]}),"\n",(0,t.jsxs)(r,{children:[(0,t.jsx)("summary",{children:"Supported file types"}),(0,t.jsxs)(n.p,{children:["The following file types are supported by the ",(0,t.jsx)(n.strong,{children:"Read File"})," component.\nUse archive and compressed formats to bundle multiple files together, or use the ",(0,t.jsxs)(n.a,{href:"/directory",children:[(0,t.jsx)(n.strong,{children:"Directory"})," component"]})," to load all files in a directory."]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".bz2"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".csv"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".docx"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".gz"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".htm"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".html"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".json"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".js"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".md"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".mdx"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".pdf"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".py"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".sh"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".sql"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".tar"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".tgz"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".ts"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".tsx"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".txt"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".xml"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".yaml"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".yml"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:".zip"})}),"\n"]})]}),"\n",(0,t.jsx)(n.p,{children:"If you need to load an unsupported file type, you must use a different component that supports that file type and, potentially, parses it outside Langflow, or you must convert it to a supported type before uploading it."}),"\n",(0,t.jsxs)(n.p,{children:["For images, see ",(0,t.jsx)(n.a,{href:"/concepts-file-management#upload-images",children:"Upload images"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For videos, see the ",(0,t.jsx)(n.strong,{children:"Twelve Labs"})," and ",(0,t.jsx)(n.strong,{children:"YouTube"})," ",(0,t.jsx)(l.A,{name:"Blocks","aria-hidden":"true"})," ",(0,t.jsx)(n.a,{href:"/components-bundle-components",children:(0,t.jsx)(n.strong,{children:"Bundles"})}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"file-parameters",children:"File parameters"}),"\n",(0,t.jsx)(d.Ay,{}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"path"}),(0,t.jsx)(n.td,{children:"Files"}),(0,t.jsxs)(n.td,{children:["Input parameter. The path to files to load. Can be local or in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"}),". Supports individual files and bundled archives."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"file_path"}),(0,t.jsx)(n.td,{children:"Server File Path"}),(0,t.jsxs)(n.td,{children:["Input parameter. A ",(0,t.jsx)(n.code,{children:"Data"})," object with a ",(0,t.jsx)(n.code,{children:"file_path"})," property pointing to a file in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"})," or a ",(0,t.jsx)(n.code,{children:"Message"})," object with a path to the file. Supersedes ",(0,t.jsx)(n.strong,{children:"Files"})," (",(0,t.jsx)(n.code,{children:"path"}),") but supports the same file types."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"separator"}),(0,t.jsx)(n.td,{children:"Separator"}),(0,t.jsxs)(n.td,{children:["Input parameter. The separator to use between multiple outputs in ",(0,t.jsx)(n.code,{children:"Message"})," format."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"silent_errors"}),(0,t.jsx)(n.td,{children:"Silent Errors"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"}),", errors in the component don't raise an exception. Default: Disabled (",(0,t.jsx)(n.code,{children:"false"}),")."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"delete_server_file_after_processing"}),(0,t.jsx)(n.td,{children:"Delete Server File After Processing"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"})," (default), the ",(0,t.jsx)(n.strong,{children:"Server File Path"})," (",(0,t.jsx)(n.code,{children:"file_path"}),") is deleted after processing."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"ignore_unsupported_extensions"}),(0,t.jsx)(n.td,{children:"Ignore Unsupported Extensions"}),(0,t.jsxs)(n.td,{children:["Input parameter. If enabled (",(0,t.jsx)(n.code,{children:"true"}),"), files with unsupported extensions are accepted but not processed. If disabled (",(0,t.jsx)(n.code,{children:"false"}),"), the ",(0,t.jsx)(n.strong,{children:"Read File"})," component either can throw an error if an unsupported file type is provided. The default is ",(0,t.jsx)(n.code,{children:"true"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"ignore_unspecified_files"}),(0,t.jsx)(n.td,{children:"Ignore Unspecified Files"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"}),", ",(0,t.jsx)(n.code,{children:"Data"})," with no ",(0,t.jsx)(n.code,{children:"file_path"})," property is ignored. If ",(0,t.jsx)(n.code,{children:"false"})," (default), the component errors when a file isn't specified."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"concurrency_multithreading"}),(0,t.jsx)(n.td,{children:"Processing Concurrency"}),(0,t.jsx)(n.td,{children:"Input parameter. The number of files to process concurrently if multiple files are uploaded. Default is 1. Values greater than 1 enable parallel processing for 2 or more files. Ignored for single-file uploads and advanced parsing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"advanced_parser"}),(0,t.jsx)(n.td,{children:"Advanced Parser"}),(0,t.jsxs)(n.td,{children:["Input parameter. If ",(0,t.jsx)(n.code,{children:"true"}),", enables ",(0,t.jsx)(n.a,{href:"#advanced-parsing",children:"advanced parsing"}),". Only available for single-file uploads of compatible file types. Default: Disabled (",(0,t.jsx)(n.code,{children:"false"}),")."]})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"advanced-parsing",children:"Advanced parsing"}),"\n",(0,t.jsxs)(n.p,{children:["Starting in Langflow version 1.6, the ",(0,t.jsx)(n.strong,{children:"Read File"})," component supports advanced document parsing using the ",(0,t.jsx)(n.a,{href:"https://docling-project.github.io/docling/",children:"Docling"})," library for supported file types."]}),"\n",(0,t.jsx)(n.p,{children:"To use advanced parsing, do the following:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Complete the following prerequisites, if applicable:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Install Langflow version 1.6 or later"}),": Earlier versions don't support advanced parsing with the ",(0,t.jsx)(n.strong,{children:"Read File"})," component. For upgrade guidance, see the ",(0,t.jsx)(n.a,{href:"/release-notes",children:"Release notes"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Install Docling dependency on macOS Intel (x86_64)"}),": The Docling dependency isn't installed by default for macOS Intel (x86_64). Use the ",(0,t.jsx)(n.a,{href:"https://docling-project.github.io/docling/installation/",children:"Docling installation guide"})," to install the Docling dependency."]}),"\n",(0,t.jsx)(n.p,{children:"For all other operating systems, the Docling dependency is installed by default."}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(h.Ay,{}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enable Developer Mode for Windows"}),":"]}),"\n"]}),"\n",(0,t.jsx)(c.Ay,{}),"\n",(0,t.jsx)(n.p,{children:"Developer Mode isn't required for Langflow OSS on Windows."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add one valid file to the ",(0,t.jsx)(n.strong,{children:"Read File"})," component."]}),"\n",(0,t.jsx)(n.admonition,{title:"Advanced parsing limitations",type:"info",children:(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Advanced parsing processes only one file.\nIf you select multiple files, the ",(0,t.jsx)(n.strong,{children:"Read File"})," component processes the first file only, ignoring any additional files.\nTo process multiple files with advanced parsing, pass each file to a separate ",(0,t.jsx)(n.strong,{children:"Read File"})," components, or use the dedicated ",(0,t.jsxs)(n.a,{href:"/bundles-docling",children:[(0,t.jsx)(n.strong,{children:"Docling"})," components"]}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Advanced parsing can process any of the ",(0,t.jsx)(n.strong,{children:"Read File"})," component's supported file types except ",(0,t.jsx)(n.code,{children:".csv"}),", ",(0,t.jsx)(n.code,{children:".xlsx"}),", and ",(0,t.jsx)(n.code,{children:".parquet"})," files because it is designed for document processing, such as extracting text from PDFs.\nFor structured data analysis, use the ",(0,t.jsxs)(n.a,{href:"/parser",children:[(0,t.jsx)(n.strong,{children:"Parser"})," component"]}),"."]}),"\n"]}),"\n"]})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Enable ",(0,t.jsx)(n.strong,{children:"Advanced Parsing"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click ",(0,t.jsx)(l.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Controls"})," in the ",(0,t.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"})," to configure advanced parsing parameters, which are hidden by default:"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"pipeline"}),(0,t.jsx)(n.td,{children:"Pipeline"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. The Docling pipeline to use, either ",(0,t.jsx)(n.code,{children:"standard"})," (default, recommended) or ",(0,t.jsx)(n.code,{children:"vlm"})," (may produce inconsistent results)."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"ocr_engine"}),(0,t.jsx)(n.td,{children:"OCR Engine"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. The OCR parser to use if ",(0,t.jsx)(n.code,{children:"pipeline"})," is ",(0,t.jsx)(n.code,{children:"standard"}),". Options are ",(0,t.jsx)(n.code,{children:"None"})," (default) or ",(0,t.jsx)(n.a,{href:"https://pypi.org/project/easyocr/",children:(0,t.jsx)(n.code,{children:"EasyOCR"})}),". ",(0,t.jsx)(n.code,{children:"None"})," means that no OCR engine is used, and this can produce inconsistent or broken results for some documents. This setting has no effect with the ",(0,t.jsx)(n.code,{children:"vlm"})," pipeline."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"md_image_placeholder"}),(0,t.jsx)(n.td,{children:"Markdown Image Placeholder"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. Defines the placeholder for image files if the output type is ",(0,t.jsx)(n.strong,{children:"Markdown"}),". Default: ",(0,t.jsx)(n.code,{children:"\x3c!-- image --\x3e"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"md_page_break_placeholder"}),(0,t.jsx)(n.td,{children:"Markdown Page Break Placeholder"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. Defines the placeholder for page breaks if the output type is ",(0,t.jsx)(n.strong,{children:"Markdown"}),". Default: ",(0,t.jsx)(n.code,{children:'""'})," (empty string)."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"doc_key"}),(0,t.jsx)(n.td,{children:"Document Key"}),(0,t.jsxs)(n.td,{children:["Input parameter, advanced parsing. The key to use for the ",(0,t.jsx)(n.code,{children:"DoclingDocument"})," column, which holds the structured information extracted from the source document. See ",(0,t.jsx)(n.a,{href:"https://docling-project.github.io/docling/concepts/docling_document/",children:"Docling Document"})," for details. Default: ",(0,t.jsx)(n.code,{children:"doc"}),"."]})]})]})]}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsxs)(n.p,{children:["For additional Docling features, including other components and OCR parsers, use the ",(0,t.jsxs)(n.a,{href:"/bundles-docling",children:[(0,t.jsx)(n.strong,{children:"Docling"})," bundle"]}),"."]})}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"file-output",children:"File output"}),"\n",(0,t.jsxs)(n.p,{children:["The output of the ",(0,t.jsx)(n.strong,{children:"Read File"})," component depends on the number of files loaded and whether advanced parsing is enabled.\nIf multiple options are available, you can set the output type near the component's output port."]}),"\n",(0,t.jsxs)(a.A,{children:[(0,t.jsx)(o.A,{value:"zero",label:"No files",children:(0,t.jsxs)(n.p,{children:["If you run the ",(0,t.jsx)(n.strong,{children:"Read File"})," component with no file selected, it throws an error, or, if ",(0,t.jsx)(n.strong,{children:"Silent Errors"})," is enabled, produces no output."]})}),(0,t.jsxs)(o.A,{value:"one-false",label:"One file without advanced parsing",children:[(0,t.jsx)(n.p,{children:"If advanced parsing is disabled and you upload one file, the following output types are available:"}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Structured Content"}),": Available only for ",(0,t.jsx)(n.code,{children:".csv"}),", ",(0,t.jsx)(n.code,{children:".xlsx"}),", ",(0,t.jsx)(n.code,{children:".parquet"}),", and ",(0,t.jsx)(n.code,{children:".json"})," files."]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["For ",(0,t.jsx)(n.code,{children:".csv"})," files, produces a ",(0,t.jsx)(n.a,{href:"/data-types#dataframe",children:(0,t.jsx)(n.code,{children:"DataFrame"})})," representing the table data."]}),"\n",(0,t.jsxs)(n.li,{children:["For ",(0,t.jsx)(n.code,{children:".json"})," files, produces a ",(0,t.jsx)(n.a,{href:"/data-types#data",children:(0,t.jsx)(n.code,{children:"Data"})})," object with the parsed JSON data."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Raw Content"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the file's raw text content."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"File Path"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the path to the file in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"}),"."]}),"\n"]}),"\n"]})]}),(0,t.jsxs)(o.A,{value:"one-true",label:"One file with advanced parsing",children:[(0,t.jsx)(n.p,{children:"If advanced parsing is enabled and you upload one file, the following output types are available:"}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Structured Output"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#dataframe",children:(0,t.jsx)(n.code,{children:"DataFrame"})})," containing the Docling-processed document data with text elements, page numbers, and metadata."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Markdown"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the uploaded document contents in Markdown format with image placeholders."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"File Path"}),": A ",(0,t.jsx)(n.a,{href:"/data-types#message",children:(0,t.jsx)(n.code,{children:"Message"})})," containing the path to the file in ",(0,t.jsx)(n.a,{href:"/concepts-file-management",children:"Langflow file management"}),"."]}),"\n"]}),"\n"]})]}),(0,t.jsxs)(o.A,{value:"multi",label:"Multiple files",children:[(0,t.jsxs)(n.p,{children:["If you upload multiple files, the component outputs ",(0,t.jsx)(n.strong,{children:"Files"}),", which is a ",(0,t.jsx)(n.a,{href:"/data-types#dataframe",children:(0,t.jsx)(n.code,{children:"DataFrame"})})," containing the content and metadata of all selected files."]}),(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"#advanced-parsing",children:"Advanced parsing"})," doesn't support multiple files; it processes only the first file."]})]})]})]})}function m(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(f,{...e})}):f(e)}},31929:(e,n,r)=>{r.d(n,{Ay:()=>o,RM:()=>l});var s=r(74848),t=r(28453),i=r(40619);const l=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function o(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},40935:(e,n,r)=>{r.d(n,{Ay:()=>a,RM:()=>i});var s=r(74848),t=r(28453);const i=[];function l(e){const n={a:"a",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["If you are running Langflow Desktop on Windows, you must ",(0,s.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development#activate-developer-mode",children:"enable Developer Mode"})," to use the Docling components.\nThe location of this setting depends on your Windows OS version.\nFind ",(0,s.jsx)(n.strong,{children:"For developers"}),' in your Windows Settings, or search for "Developer" in the Windows search bar, and then enable ',(0,s.jsx)(n.strong,{children:"Developer mode"}),".\nYou might need to restart your computer or Langflow to apply the change."]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},76582:(e,n,r)=>{r.d(n,{Ay:()=>a,RM:()=>i});var s=r(74848),t=r(28453);const i=[];function l(e){const n={a:"a",li:"li",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Docker/Linux system dependencies"}),": If running Langflow in a Docker container on Linux, you might need to install additional system packages for document processing. For more information, see ",(0,s.jsx)(n.a,{href:"/troubleshoot#document-processing-errors-in-docker-containers",children:"Document processing errors in Docker containers"}),"."]}),"\n"]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.4b68ad37.js b/assets/js/runtime~main.333f23d2.js
similarity index 98%
rename from assets/js/runtime~main.4b68ad37.js
rename to assets/js/runtime~main.333f23d2.js
index 43c56f0753..dd4930d945 100644
--- a/assets/js/runtime~main.4b68ad37.js
+++ b/assets/js/runtime~main.333f23d2.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=c,r.c=t,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every(e=>r.O[e](d[o]))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach(a=>c[a]=()=>e[a]);return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((a,d)=>(r.f[d](e,a),a),[])),r.u=e=>"assets/js/"+({15:"d803fa53",30:"db8c087e",38:"a99a45c9",44:"e3f369d5",78:"b768a3a5",93:"a3702f61",126:"ae70dfbf",129:"dfa3dc90",253:"bb45d4f9",351:"b9acb8d9",375:"3d81f1cf",446:"a4232cf8",534:"76e36fb0",596:"c2e0ed62",598:"db4f3bbd",600:"ee87c775",681:"ffa0f8b1",750:"33b5ee95",879:"8bee5443",883:"1dfb8d43",889:"08b309e9",956:"03735ec1",957:"c141421f",1006:"47e58a89",1151:"890279ba",1162:"f7e6b9d6",1193:"444a6da6",1303:"41d45d82",1308:"ec030ab7",1345:"fe6d5b4f",1408:"2fc7e024",1446:"c78349fc",1490:"0f761898",1567:"22dd74f7",1703:"ff8bad6c",1861:"8ad67c3b",1876:"5c3b537a",1895:"d375ca1d",1966:"b1582da4",2076:"common",2102:"755d162a",2116:"0f1bef30",2138:"1a4e3797",2272:"ca5faf5d",2278:"c4280da9",2348:"f2da9399",2360:"017d425f",2394:"c2ea283c",2423:"19bcb67f",2457:"46abd5bb",2460:"954b19af",2469:"cd086441",2472:"62f97fbe",2475:"1ab69cbd",2565:"622fd833",2651:"8cd0650d",2741:"43ad9ba4",2752:"e14655eb",2888:"32270e71",2909:"144a43f5",2969:"f0ad3fbb",2990:"1d50b418",3035:"87b7bbd6",3038:"6df123cd",3140:"1a29c454",3147:"c83c70df",3164:"67f2dc6c",3240:"b079b393",3247:"f0b67137",3263:"730da84e",3284:"6398c398",3345:"040305fb",3353:"2b4d41d7",3361:"8f633f11",3368:"efa0f9ee",3387:"3d67876e",3468:"c76bd485",3500:"c3c63498",3536:"2eb731bc",3683:"5a0b74d9",4036:"fbcfc90d",4085:"cb17b4e0",4090:"a8ca941b",4173:"d51059db",4263:"9a5e6f6b",4314:"f6a246db",4341:"e1a0f423",4356:"7b864b08",4384:"622bdc6f",4474:"3db73d6f",4573:"baacc2a1",4612:"6a9eca1a",4614:"e55b8e98",4644:"d3e886ab",4876:"44691977",4907:"86116998",4919:"ce43de4b",4995:"62266e9d",5048:"3c440e04",5110:"e9fe1d10",5144:"944c5f91",5200:"ff7f32ba",5217:"fb0a7a3f",5270:"99931d31",5333:"70909872",5343:"1b10d5ba",5397:"eba86ea4",5412:"a6d50436",5660:"1b208f60",5663:"b1379b2b",5739:"69079906",5742:"aba21aa0",5757:"ad42ff54",5838:"bbb8ec1d",5903:"69d616f2",5985:"e3536031",6108:"2fed9fb3",6224:"ef9aa223",6256:"6888b60e",6289:"45e5859c",6311:"cce672fb",6329:"a7b545c5",6459:"290c78e6",6513:"f13693f0",6538:"719cba95",6559:"7431813e",6601:"81bb6a5c",6801:"acefda8b",6839:"80866714",6999:"d5ec984b",7098:"a7bd4aaa",7118:"7996108c",7243:"5d9d4350",7356:"2ea623f2",7484:"ad01e028",7498:"e4400415",7502:"1a547ad8",7512:"4c09a7b3",7567:"4545d55b",7586:"17856424",7705:"2b91b6ca",7720:"3bfbe7c9",7807:"1a8a0a64",7824:"2b56b65e",7829:"7c27dc91",7859:"593d9d00",7902:"619c7267",7964:"ff35961a",7968:"9b0af131",8090:"6e85978c",8240:"0102a83b",8267:"02f8077b",8268:"a4b6c971",8269:"c7f91cbe",8294:"f2bedfce",8336:"e7fd9095",8392:"20177945",8401:"17896441",8508:"10dd1586",8571:"da1ad91e",8593:"56350599",8607:"681e5335",8611:"0c23d011",8625:"3a9e0e6c",8649:"7de42fc9",8702:"42962acd",8750:"8a484c94",8765:"1a2eaade",8822:"555ae514",8862:"e87b52ac",8963:"56c23a02",8990:"5f1a63c6",9033:"9f55b2fc",9048:"a94703ab",9213:"62d1268c",9227:"7e40e6b3",9264:"c7f32161",9315:"16faf8bf",9331:"ffcd190c",9363:"f3312674",9459:"97254d1d",9482:"a9c1003f",9522:"85dc2a2b",9610:"453ae64a",9640:"3b25a2ae",9647:"5e95c892",9674:"feac1fba",9712:"d8c8efb9",9758:"439d880a",9763:"aece522a",9781:"b796be74",9897:"f0eeb72e",9976:"230d5fdc",9986:"d1f3cfe5"}[e]||e)+"."+{15:"d4103b44",30:"5e412f6d",38:"5c74e1d6",44:"6310a01a",78:"670c02e8",93:"622a1f88",126:"d3c21ad3",129:"a3d7c438",253:"35cb6896",351:"2a1a8be1",375:"44466a25",416:"bba44855",446:"720c59c5",534:"f4a56aad",596:"471fd207",598:"5b1053df",600:"bc28b1d0",681:"26c49a71",750:"4068db8f",879:"b4c046be",883:"d44a18cb",889:"df4f3b30",956:"9d5f0507",957:"9350e3d5",1006:"61347995",1151:"4db235b1",1162:"12f31dbe",1193:"d08634fc",1303:"cb77a67a",1308:"19ab43fe",1345:"dd2b7bcf",1408:"5cdd44e5",1446:"bc1d8376",1490:"e5aee754",1567:"aa1955a9",1703:"bb99be98",1861:"f210ffea",1876:"198d048f",1895:"47c5ca9a",1966:"26cfa313",2076:"a147e1aa",2102:"be1bbe87",2116:"66ba19b7",2138:"b9e35d57",2237:"6bbae924",2272:"0cf63219",2278:"4b2cb97f",2348:"4cb98c8a",2360:"5e727bab",2394:"2541a8c1",2423:"9a704566",2457:"a5d2327d",2460:"b5427fc6",2469:"c18f6bcb",2472:"9b44eed4",2475:"95e18472",2565:"26731c74",2651:"92578320",2693:"380feae7",2741:"1c73b360",2752:"05601a76",2888:"603c895a",2909:"5739f38d",2969:"51e6616d",2990:"244599e4",3035:"930378b5",3038:"746b5104",3140:"80d4a164",3147:"b2a4407c",3164:"afb9b764",3240:"759d13b9",3247:"d5683b4f",3263:"da23b2bf",3284:"46083cba",3345:"cd817a66",3353:"f158ad34",3361:"e6042c27",3368:"8c3ea529",3387:"1e3dfa97",3468:"3ae40933",3500:"9efdd30b",3536:"36c717d9",3683:"b0f81b78",4036:"3ba6e711",4085:"e845c52f",4090:"dfdad261",4115:"d645fc23",4173:"bacef605",4263:"d2b7c901",4314:"2202791a",4341:"e36fdbdb",4356:"450422c1",4384:"1ef5e03e",4474:"2967ccdf",4573:"04372438",4612:"20606c9d",4614:"b129eb58",4644:"a86e3992",4754:"78f469df",4876:"78d44a41",4907:"5ddf17c6",4919:"7a5f58d3",4995:"ece12ff2",5048:"b43aa9f1",5110:"1cd06410",5144:"d825c9b4",5200:"5de1608d",5217:"f332d0d1",5270:"ec83b3bb",5333:"d6bdb628",5343:"5fd32b67",5397:"ba97f892",5412:"c8c48fd3",5660:"57b46a92",5663:"8088b191",5739:"2a563c92",5742:"8cdbe811",5757:"9de749fd",5838:"83e91f02",5903:"821f3999",5985:"aafe6790",6108:"365e2569",6224:"af99e84a",6256:"d9ae4c13",6289:"f6e7c945",6311:"af719805",6329:"40158bd3",6459:"2463c0f5",6513:"13baf1e4",6538:"d571e06d",6559:"c4af7bf3",6601:"66f73f50",6801:"6897bd64",6839:"207cc86d",6999:"64627d58",7098:"e566890f",7118:"13f2c6a7",7243:"930b5bd6",7356:"0b394330",7484:"002bb639",7498:"97257edb",7502:"f4acd00b",7512:"27e1103c",7567:"0a1c17c1",7586:"05bd2bee",7705:"1dc17cbb",7720:"9691b150",7807:"a3ffb4bf",7824:"48ec5133",7829:"bbdb61d4",7859:"acd80658",7902:"b2c19227",7964:"7ef150a6",7968:"8658e795",8090:"af4cfb50",8240:"d4f52412",8267:"dbfe5354",8268:"7ed10065",8269:"2921c476",8294:"e344768e",8336:"0e5f0157",8392:"0768ab3a",8401:"9b189e06",8508:"d977358d",8571:"c0329697",8593:"42a61cdd",8607:"b96fee6d",8611:"870b467b",8625:"8df7c8bf",8649:"540f0784",8702:"c8d4fac3",8750:"56e811df",8765:"e2c3e49a",8822:"77921987",8862:"2272a76a",8913:"fd271a57",8963:"fca39a90",8990:"1753fc06",9033:"e3a15f6c",9048:"fbe061ed",9213:"7074cfcc",9227:"b79ed718",9264:"a73bd813",9315:"c9a9899a",9331:"fb999fe4",9363:"66313398",9459:"bcd99a3a",9482:"32df5989",9522:"cc51d0fb",9610:"f3b4d314",9640:"8da65214",9647:"a3e58221",9674:"dec60a8d",9712:"f5eaa1ca",9758:"bf4164d1",9763:"05004e42",9781:"fb5ede14",9897:"8be94bd0",9976:"68f5d90c",9986:"87289072"}[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),f={},b="langflow-docs:",r.l=(e,a,d,c)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach(e=>e(d)),a)return a(d)},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={17856424:"7586",17896441:"8401",20177945:"8392",44691977:"4876",56350599:"8593",69079906:"5739",70909872:"5333",80866714:"6839",86116998:"4907",d803fa53:"15",db8c087e:"30",a99a45c9:"38",e3f369d5:"44",b768a3a5:"78",a3702f61:"93",ae70dfbf:"126",dfa3dc90:"129",bb45d4f9:"253",b9acb8d9:"351","3d81f1cf":"375",a4232cf8:"446","76e36fb0":"534",c2e0ed62:"596",db4f3bbd:"598",ee87c775:"600",ffa0f8b1:"681","33b5ee95":"750","8bee5443":"879","1dfb8d43":"883","08b309e9":"889","03735ec1":"956",c141421f:"957","47e58a89":"1006","890279ba":"1151",f7e6b9d6:"1162","444a6da6":"1193","41d45d82":"1303",ec030ab7:"1308",fe6d5b4f:"1345","2fc7e024":"1408",c78349fc:"1446","0f761898":"1490","22dd74f7":"1567",ff8bad6c:"1703","8ad67c3b":"1861","5c3b537a":"1876",d375ca1d:"1895",b1582da4:"1966",common:"2076","755d162a":"2102","0f1bef30":"2116","1a4e3797":"2138",ca5faf5d:"2272",c4280da9:"2278",f2da9399:"2348","017d425f":"2360",c2ea283c:"2394","19bcb67f":"2423","46abd5bb":"2457","954b19af":"2460",cd086441:"2469","62f97fbe":"2472","1ab69cbd":"2475","622fd833":"2565","8cd0650d":"2651","43ad9ba4":"2741",e14655eb:"2752","32270e71":"2888","144a43f5":"2909",f0ad3fbb:"2969","1d50b418":"2990","87b7bbd6":"3035","6df123cd":"3038","1a29c454":"3140",c83c70df:"3147","67f2dc6c":"3164",b079b393:"3240",f0b67137:"3247","730da84e":"3263","6398c398":"3284","040305fb":"3345","2b4d41d7":"3353","8f633f11":"3361",efa0f9ee:"3368","3d67876e":"3387",c76bd485:"3468",c3c63498:"3500","2eb731bc":"3536","5a0b74d9":"3683",fbcfc90d:"4036",cb17b4e0:"4085",a8ca941b:"4090",d51059db:"4173","9a5e6f6b":"4263",f6a246db:"4314",e1a0f423:"4341","7b864b08":"4356","622bdc6f":"4384","3db73d6f":"4474",baacc2a1:"4573","6a9eca1a":"4612",e55b8e98:"4614",d3e886ab:"4644",ce43de4b:"4919","62266e9d":"4995","3c440e04":"5048",e9fe1d10:"5110","944c5f91":"5144",ff7f32ba:"5200",fb0a7a3f:"5217","99931d31":"5270","1b10d5ba":"5343",eba86ea4:"5397",a6d50436:"5412","1b208f60":"5660",b1379b2b:"5663",aba21aa0:"5742",ad42ff54:"5757",bbb8ec1d:"5838","69d616f2":"5903",e3536031:"5985","2fed9fb3":"6108",ef9aa223:"6224","6888b60e":"6256","45e5859c":"6289",cce672fb:"6311",a7b545c5:"6329","290c78e6":"6459",f13693f0:"6513","719cba95":"6538","7431813e":"6559","81bb6a5c":"6601",acefda8b:"6801",d5ec984b:"6999",a7bd4aaa:"7098","7996108c":"7118","5d9d4350":"7243","2ea623f2":"7356",ad01e028:"7484",e4400415:"7498","1a547ad8":"7502","4c09a7b3":"7512","4545d55b":"7567","2b91b6ca":"7705","3bfbe7c9":"7720","1a8a0a64":"7807","2b56b65e":"7824","7c27dc91":"7829","593d9d00":"7859","619c7267":"7902",ff35961a:"7964","9b0af131":"7968","6e85978c":"8090","0102a83b":"8240","02f8077b":"8267",a4b6c971:"8268",c7f91cbe:"8269",f2bedfce:"8294",e7fd9095:"8336","10dd1586":"8508",da1ad91e:"8571","681e5335":"8607","0c23d011":"8611","3a9e0e6c":"8625","7de42fc9":"8649","42962acd":"8702","8a484c94":"8750","1a2eaade":"8765","555ae514":"8822",e87b52ac:"8862","56c23a02":"8963","5f1a63c6":"8990","9f55b2fc":"9033",a94703ab:"9048","62d1268c":"9213","7e40e6b3":"9227",c7f32161:"9264","16faf8bf":"9315",ffcd190c:"9331",f3312674:"9363","97254d1d":"9459",a9c1003f:"9482","85dc2a2b":"9522","453ae64a":"9610","3b25a2ae":"9640","5e95c892":"9647",feac1fba:"9674",d8c8efb9:"9712","439d880a":"9758",aece522a:"9763",b796be74:"9781",f0eeb72e:"9897","230d5fdc":"9976",d1f3cfe5:"9986"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise((d,b)=>f=e[a]=[d,b]);d.push(f[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,f[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,b,[c,t,o]=d,n=0;if(c.some(a=>0!==e[a])){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=c,r.c=t,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every(e=>r.O[e](d[o]))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach(a=>c[a]=()=>e[a]);return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((a,d)=>(r.f[d](e,a),a),[])),r.u=e=>"assets/js/"+({15:"d803fa53",30:"db8c087e",38:"a99a45c9",44:"e3f369d5",78:"b768a3a5",93:"a3702f61",126:"ae70dfbf",129:"dfa3dc90",253:"bb45d4f9",351:"b9acb8d9",375:"3d81f1cf",446:"a4232cf8",534:"76e36fb0",596:"c2e0ed62",598:"db4f3bbd",600:"ee87c775",681:"ffa0f8b1",750:"33b5ee95",879:"8bee5443",883:"1dfb8d43",889:"08b309e9",956:"03735ec1",957:"c141421f",1006:"47e58a89",1151:"890279ba",1162:"f7e6b9d6",1193:"444a6da6",1303:"41d45d82",1308:"ec030ab7",1345:"fe6d5b4f",1408:"2fc7e024",1446:"c78349fc",1490:"0f761898",1567:"22dd74f7",1703:"ff8bad6c",1861:"8ad67c3b",1876:"5c3b537a",1895:"d375ca1d",1966:"b1582da4",2076:"common",2102:"755d162a",2116:"0f1bef30",2138:"1a4e3797",2272:"ca5faf5d",2278:"c4280da9",2348:"f2da9399",2360:"017d425f",2394:"c2ea283c",2423:"19bcb67f",2457:"46abd5bb",2460:"954b19af",2469:"cd086441",2472:"62f97fbe",2475:"1ab69cbd",2565:"622fd833",2651:"8cd0650d",2741:"43ad9ba4",2752:"e14655eb",2888:"32270e71",2909:"144a43f5",2969:"f0ad3fbb",2990:"1d50b418",3035:"87b7bbd6",3038:"6df123cd",3140:"1a29c454",3147:"c83c70df",3164:"67f2dc6c",3240:"b079b393",3247:"f0b67137",3263:"730da84e",3284:"6398c398",3345:"040305fb",3353:"2b4d41d7",3361:"8f633f11",3368:"efa0f9ee",3387:"3d67876e",3468:"c76bd485",3500:"c3c63498",3536:"2eb731bc",3683:"5a0b74d9",4036:"fbcfc90d",4085:"cb17b4e0",4090:"a8ca941b",4173:"d51059db",4263:"9a5e6f6b",4314:"f6a246db",4341:"e1a0f423",4356:"7b864b08",4384:"622bdc6f",4474:"3db73d6f",4573:"baacc2a1",4612:"6a9eca1a",4614:"e55b8e98",4644:"d3e886ab",4876:"44691977",4907:"86116998",4919:"ce43de4b",4995:"62266e9d",5048:"3c440e04",5110:"e9fe1d10",5144:"944c5f91",5200:"ff7f32ba",5217:"fb0a7a3f",5270:"99931d31",5333:"70909872",5343:"1b10d5ba",5397:"eba86ea4",5412:"a6d50436",5660:"1b208f60",5663:"b1379b2b",5739:"69079906",5742:"aba21aa0",5757:"ad42ff54",5838:"bbb8ec1d",5903:"69d616f2",5985:"e3536031",6108:"2fed9fb3",6224:"ef9aa223",6256:"6888b60e",6289:"45e5859c",6311:"cce672fb",6329:"a7b545c5",6459:"290c78e6",6513:"f13693f0",6538:"719cba95",6559:"7431813e",6601:"81bb6a5c",6801:"acefda8b",6839:"80866714",6999:"d5ec984b",7098:"a7bd4aaa",7118:"7996108c",7243:"5d9d4350",7356:"2ea623f2",7484:"ad01e028",7498:"e4400415",7502:"1a547ad8",7512:"4c09a7b3",7567:"4545d55b",7586:"17856424",7705:"2b91b6ca",7720:"3bfbe7c9",7807:"1a8a0a64",7824:"2b56b65e",7829:"7c27dc91",7859:"593d9d00",7902:"619c7267",7964:"ff35961a",7968:"9b0af131",8090:"6e85978c",8240:"0102a83b",8267:"02f8077b",8268:"a4b6c971",8269:"c7f91cbe",8294:"f2bedfce",8336:"e7fd9095",8392:"20177945",8401:"17896441",8508:"10dd1586",8571:"da1ad91e",8593:"56350599",8607:"681e5335",8611:"0c23d011",8625:"3a9e0e6c",8649:"7de42fc9",8702:"42962acd",8750:"8a484c94",8765:"1a2eaade",8822:"555ae514",8862:"e87b52ac",8963:"56c23a02",8990:"5f1a63c6",9033:"9f55b2fc",9048:"a94703ab",9213:"62d1268c",9227:"7e40e6b3",9264:"c7f32161",9315:"16faf8bf",9331:"ffcd190c",9363:"f3312674",9459:"97254d1d",9482:"a9c1003f",9522:"85dc2a2b",9610:"453ae64a",9640:"3b25a2ae",9647:"5e95c892",9674:"feac1fba",9712:"d8c8efb9",9758:"439d880a",9763:"aece522a",9781:"b796be74",9897:"f0eeb72e",9976:"230d5fdc",9986:"d1f3cfe5"}[e]||e)+"."+{15:"d4103b44",30:"5e412f6d",38:"5c74e1d6",44:"6310a01a",78:"670c02e8",93:"622a1f88",126:"d3c21ad3",129:"a3d7c438",253:"35cb6896",351:"2a1a8be1",375:"44466a25",416:"bba44855",446:"720c59c5",534:"f4a56aad",596:"471fd207",598:"5b1053df",600:"bc28b1d0",681:"26c49a71",750:"4068db8f",879:"655e0843",883:"d44a18cb",889:"df4f3b30",956:"9d5f0507",957:"9350e3d5",1006:"61347995",1151:"4db235b1",1162:"12f31dbe",1193:"d08634fc",1303:"cb77a67a",1308:"19ab43fe",1345:"dd2b7bcf",1408:"5cdd44e5",1446:"bc1d8376",1490:"e5aee754",1567:"aa1955a9",1703:"bb99be98",1861:"f210ffea",1876:"198d048f",1895:"47c5ca9a",1966:"26cfa313",2076:"a147e1aa",2102:"e04c4c2c",2116:"66ba19b7",2138:"b9e35d57",2237:"6bbae924",2272:"0cf63219",2278:"4b2cb97f",2348:"4cb98c8a",2360:"5e727bab",2394:"2541a8c1",2423:"9a704566",2457:"a5d2327d",2460:"b5427fc6",2469:"c18f6bcb",2472:"9b44eed4",2475:"95e18472",2565:"26731c74",2651:"92578320",2693:"380feae7",2741:"1c73b360",2752:"05601a76",2888:"603c895a",2909:"5739f38d",2969:"51e6616d",2990:"244599e4",3035:"930378b5",3038:"746b5104",3140:"80d4a164",3147:"b2a4407c",3164:"afb9b764",3240:"759d13b9",3247:"d5683b4f",3263:"da23b2bf",3284:"46083cba",3345:"cd817a66",3353:"f158ad34",3361:"e6042c27",3368:"8c3ea529",3387:"1e3dfa97",3468:"3ae40933",3500:"9efdd30b",3536:"36c717d9",3683:"b0f81b78",4036:"3ba6e711",4085:"e845c52f",4090:"dfdad261",4115:"d645fc23",4173:"bacef605",4263:"bd0de960",4314:"2202791a",4341:"e36fdbdb",4356:"450422c1",4384:"1ef5e03e",4474:"2967ccdf",4573:"04372438",4612:"20606c9d",4614:"b129eb58",4644:"a86e3992",4754:"78f469df",4876:"78d44a41",4907:"5ddf17c6",4919:"7a5f58d3",4995:"ece12ff2",5048:"b43aa9f1",5110:"1cd06410",5144:"d825c9b4",5200:"5de1608d",5217:"f332d0d1",5270:"3123c8e7",5333:"d6bdb628",5343:"5fd32b67",5397:"ba97f892",5412:"c8c48fd3",5660:"57b46a92",5663:"8088b191",5739:"2a563c92",5742:"8cdbe811",5757:"9de749fd",5838:"83e91f02",5903:"821f3999",5985:"aafe6790",6108:"365e2569",6224:"af99e84a",6256:"d9ae4c13",6289:"f6e7c945",6311:"af719805",6329:"40158bd3",6459:"2463c0f5",6513:"13baf1e4",6538:"d571e06d",6559:"c4af7bf3",6601:"66f73f50",6801:"6897bd64",6839:"207cc86d",6999:"64627d58",7098:"e566890f",7118:"13f2c6a7",7243:"930b5bd6",7356:"0b394330",7484:"002bb639",7498:"97257edb",7502:"f4acd00b",7512:"27e1103c",7567:"0a1c17c1",7586:"05bd2bee",7705:"1dc17cbb",7720:"9691b150",7807:"a3ffb4bf",7824:"48ec5133",7829:"bbdb61d4",7859:"acd80658",7902:"b2c19227",7964:"7ef150a6",7968:"8658e795",8090:"af4cfb50",8240:"d4f52412",8267:"dbfe5354",8268:"7ed10065",8269:"2921c476",8294:"e344768e",8336:"0e5f0157",8392:"0768ab3a",8401:"9b189e06",8508:"d977358d",8571:"c0329697",8593:"42a61cdd",8607:"b96fee6d",8611:"870b467b",8625:"8df7c8bf",8649:"540f0784",8702:"c8d4fac3",8750:"56e811df",8765:"e2c3e49a",8822:"77921987",8862:"2272a76a",8913:"fd271a57",8963:"fca39a90",8990:"1753fc06",9033:"e3a15f6c",9048:"fbe061ed",9213:"7074cfcc",9227:"b79ed718",9264:"a73bd813",9315:"c9a9899a",9331:"fb999fe4",9363:"66313398",9459:"bcd99a3a",9482:"32df5989",9522:"cc51d0fb",9610:"f3b4d314",9640:"8da65214",9647:"a3e58221",9674:"dec60a8d",9712:"f5eaa1ca",9758:"bf4164d1",9763:"05004e42",9781:"fb5ede14",9897:"8be94bd0",9976:"68f5d90c",9986:"87289072"}[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),f={},b="langflow-docs:",r.l=(e,a,d,c)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach(e=>e(d)),a)return a(d)},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={17856424:"7586",17896441:"8401",20177945:"8392",44691977:"4876",56350599:"8593",69079906:"5739",70909872:"5333",80866714:"6839",86116998:"4907",d803fa53:"15",db8c087e:"30",a99a45c9:"38",e3f369d5:"44",b768a3a5:"78",a3702f61:"93",ae70dfbf:"126",dfa3dc90:"129",bb45d4f9:"253",b9acb8d9:"351","3d81f1cf":"375",a4232cf8:"446","76e36fb0":"534",c2e0ed62:"596",db4f3bbd:"598",ee87c775:"600",ffa0f8b1:"681","33b5ee95":"750","8bee5443":"879","1dfb8d43":"883","08b309e9":"889","03735ec1":"956",c141421f:"957","47e58a89":"1006","890279ba":"1151",f7e6b9d6:"1162","444a6da6":"1193","41d45d82":"1303",ec030ab7:"1308",fe6d5b4f:"1345","2fc7e024":"1408",c78349fc:"1446","0f761898":"1490","22dd74f7":"1567",ff8bad6c:"1703","8ad67c3b":"1861","5c3b537a":"1876",d375ca1d:"1895",b1582da4:"1966",common:"2076","755d162a":"2102","0f1bef30":"2116","1a4e3797":"2138",ca5faf5d:"2272",c4280da9:"2278",f2da9399:"2348","017d425f":"2360",c2ea283c:"2394","19bcb67f":"2423","46abd5bb":"2457","954b19af":"2460",cd086441:"2469","62f97fbe":"2472","1ab69cbd":"2475","622fd833":"2565","8cd0650d":"2651","43ad9ba4":"2741",e14655eb:"2752","32270e71":"2888","144a43f5":"2909",f0ad3fbb:"2969","1d50b418":"2990","87b7bbd6":"3035","6df123cd":"3038","1a29c454":"3140",c83c70df:"3147","67f2dc6c":"3164",b079b393:"3240",f0b67137:"3247","730da84e":"3263","6398c398":"3284","040305fb":"3345","2b4d41d7":"3353","8f633f11":"3361",efa0f9ee:"3368","3d67876e":"3387",c76bd485:"3468",c3c63498:"3500","2eb731bc":"3536","5a0b74d9":"3683",fbcfc90d:"4036",cb17b4e0:"4085",a8ca941b:"4090",d51059db:"4173","9a5e6f6b":"4263",f6a246db:"4314",e1a0f423:"4341","7b864b08":"4356","622bdc6f":"4384","3db73d6f":"4474",baacc2a1:"4573","6a9eca1a":"4612",e55b8e98:"4614",d3e886ab:"4644",ce43de4b:"4919","62266e9d":"4995","3c440e04":"5048",e9fe1d10:"5110","944c5f91":"5144",ff7f32ba:"5200",fb0a7a3f:"5217","99931d31":"5270","1b10d5ba":"5343",eba86ea4:"5397",a6d50436:"5412","1b208f60":"5660",b1379b2b:"5663",aba21aa0:"5742",ad42ff54:"5757",bbb8ec1d:"5838","69d616f2":"5903",e3536031:"5985","2fed9fb3":"6108",ef9aa223:"6224","6888b60e":"6256","45e5859c":"6289",cce672fb:"6311",a7b545c5:"6329","290c78e6":"6459",f13693f0:"6513","719cba95":"6538","7431813e":"6559","81bb6a5c":"6601",acefda8b:"6801",d5ec984b:"6999",a7bd4aaa:"7098","7996108c":"7118","5d9d4350":"7243","2ea623f2":"7356",ad01e028:"7484",e4400415:"7498","1a547ad8":"7502","4c09a7b3":"7512","4545d55b":"7567","2b91b6ca":"7705","3bfbe7c9":"7720","1a8a0a64":"7807","2b56b65e":"7824","7c27dc91":"7829","593d9d00":"7859","619c7267":"7902",ff35961a:"7964","9b0af131":"7968","6e85978c":"8090","0102a83b":"8240","02f8077b":"8267",a4b6c971:"8268",c7f91cbe:"8269",f2bedfce:"8294",e7fd9095:"8336","10dd1586":"8508",da1ad91e:"8571","681e5335":"8607","0c23d011":"8611","3a9e0e6c":"8625","7de42fc9":"8649","42962acd":"8702","8a484c94":"8750","1a2eaade":"8765","555ae514":"8822",e87b52ac:"8862","56c23a02":"8963","5f1a63c6":"8990","9f55b2fc":"9033",a94703ab:"9048","62d1268c":"9213","7e40e6b3":"9227",c7f32161:"9264","16faf8bf":"9315",ffcd190c:"9331",f3312674:"9363","97254d1d":"9459",a9c1003f:"9482","85dc2a2b":"9522","453ae64a":"9610","3b25a2ae":"9640","5e95c892":"9647",feac1fba:"9674",d8c8efb9:"9712","439d880a":"9758",aece522a:"9763",b796be74:"9781",f0eeb72e:"9897","230d5fdc":"9976",d1f3cfe5:"9986"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise((d,b)=>f=e[a]=[d,b]);d.push(f[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,f[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,b,[c,t,o]=d,n=0;if(c.some(a=>0!==e[a])){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n
-
+
diff --git a/bundles-aiml.html b/bundles-aiml.html
index 94ffebfc16..1abea36950 100644
--- a/bundles-aiml.html
+++ b/bundles-aiml.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-altk.html b/bundles-altk.html
index a5f495d7fc..513ed9690c 100644
--- a/bundles-altk.html
+++ b/bundles-altk.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-amazon.html b/bundles-amazon.html
index f0555a804b..b230fdf9c0 100644
--- a/bundles-amazon.html
+++ b/bundles-amazon.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-anthropic.html b/bundles-anthropic.html
index 2454e8d649..47272db254 100644
--- a/bundles-anthropic.html
+++ b/bundles-anthropic.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-apify.html b/bundles-apify.html
index 03c5258053..2cf2dabd98 100644
--- a/bundles-apify.html
+++ b/bundles-apify.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-arxiv.html b/bundles-arxiv.html
index 288b8148be..137a7708b7 100644
--- a/bundles-arxiv.html
+++ b/bundles-arxiv.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-assemblyai.html b/bundles-assemblyai.html
index 0254a48eb3..e625aa4794 100644
--- a/bundles-assemblyai.html
+++ b/bundles-assemblyai.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-azure.html b/bundles-azure.html
index 11f11930d2..867d8e2e53 100644
--- a/bundles-azure.html
+++ b/bundles-azure.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-baidu.html b/bundles-baidu.html
index 263661385a..09eed83d72 100644
--- a/bundles-baidu.html
+++ b/bundles-baidu.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-bing.html b/bundles-bing.html
index d318880f10..9015be022d 100644
--- a/bundles-bing.html
+++ b/bundles-bing.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-cassandra.html b/bundles-cassandra.html
index 3b5048c4c7..f9c55a29c2 100644
--- a/bundles-cassandra.html
+++ b/bundles-cassandra.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-chroma.html b/bundles-chroma.html
index b3490ebd3e..b62646ceb9 100644
--- a/bundles-chroma.html
+++ b/bundles-chroma.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-cleanlab.html b/bundles-cleanlab.html
index 5897e5f77e..2c2217c6ca 100644
--- a/bundles-cleanlab.html
+++ b/bundles-cleanlab.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-clickhouse.html b/bundles-clickhouse.html
index 7b1f41cf83..5fcc963999 100644
--- a/bundles-clickhouse.html
+++ b/bundles-clickhouse.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-cloudflare.html b/bundles-cloudflare.html
index f8900ea036..69146db74c 100644
--- a/bundles-cloudflare.html
+++ b/bundles-cloudflare.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-cohere.html b/bundles-cohere.html
index af01d7fe4e..244dda0ba7 100644
--- a/bundles-cohere.html
+++ b/bundles-cohere.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-cometapi.html b/bundles-cometapi.html
index 75ae8fe590..0d7bd7ef4f 100644
--- a/bundles-cometapi.html
+++ b/bundles-cometapi.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-composio.html b/bundles-composio.html
index f751ac513b..782cf39501 100644
--- a/bundles-composio.html
+++ b/bundles-composio.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-couchbase.html b/bundles-couchbase.html
index fb289b04ac..cfdf9dc237 100644
--- a/bundles-couchbase.html
+++ b/bundles-couchbase.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-cuga.html b/bundles-cuga.html
index 865632600a..f771c2c4c9 100644
--- a/bundles-cuga.html
+++ b/bundles-cuga.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-datastax.html b/bundles-datastax.html
index a01734143d..8d4ce3d6a3 100644
--- a/bundles-datastax.html
+++ b/bundles-datastax.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-deepseek.html b/bundles-deepseek.html
index 111ee1711a..52d9c09e45 100644
--- a/bundles-deepseek.html
+++ b/bundles-deepseek.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-docling.html b/bundles-docling.html
index d8d2653be9..f11f266086 100644
--- a/bundles-docling.html
+++ b/bundles-docling.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-duckduckgo.html b/bundles-duckduckgo.html
index 95e4d48b41..1d915b98ac 100644
--- a/bundles-duckduckgo.html
+++ b/bundles-duckduckgo.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-elastic.html b/bundles-elastic.html
index 88f1d7ef5f..29991225c4 100644
--- a/bundles-elastic.html
+++ b/bundles-elastic.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-exa.html b/bundles-exa.html
index 3aeb05dcce..40729fc6c1 100644
--- a/bundles-exa.html
+++ b/bundles-exa.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-faiss.html b/bundles-faiss.html
index b5c5237bc0..5cf2783374 100644
--- a/bundles-faiss.html
+++ b/bundles-faiss.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-glean.html b/bundles-glean.html
index 5d90f70cf0..f8a4ee4fcd 100644
--- a/bundles-glean.html
+++ b/bundles-glean.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-google.html b/bundles-google.html
index 1fd0abf622..2d1afb1082 100644
--- a/bundles-google.html
+++ b/bundles-google.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-groq.html b/bundles-groq.html
index 131d823c1c..9af59e9eab 100644
--- a/bundles-groq.html
+++ b/bundles-groq.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-huggingface.html b/bundles-huggingface.html
index cff47db1da..8fc5244911 100644
--- a/bundles-huggingface.html
+++ b/bundles-huggingface.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-ibm.html b/bundles-ibm.html
index 3b25fa6279..02f4540861 100644
--- a/bundles-ibm.html
+++ b/bundles-ibm.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-icosacomputing.html b/bundles-icosacomputing.html
index ebe59ce139..cd378727ba 100644
--- a/bundles-icosacomputing.html
+++ b/bundles-icosacomputing.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-langchain.html b/bundles-langchain.html
index 3ede2c2181..e70d037972 100644
--- a/bundles-langchain.html
+++ b/bundles-langchain.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-lmstudio.html b/bundles-lmstudio.html
index 70558c2a24..9547e92680 100644
--- a/bundles-lmstudio.html
+++ b/bundles-lmstudio.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-maritalk.html b/bundles-maritalk.html
index 99bceb7ffe..cae68a0405 100644
--- a/bundles-maritalk.html
+++ b/bundles-maritalk.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-mem0.html b/bundles-mem0.html
index 5e0dedd70a..703f9ba374 100644
--- a/bundles-mem0.html
+++ b/bundles-mem0.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-milvus.html b/bundles-milvus.html
index b3f5644bd4..a61769f112 100644
--- a/bundles-milvus.html
+++ b/bundles-milvus.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-mistralai.html b/bundles-mistralai.html
index 330c9590ee..8c5715ad5f 100644
--- a/bundles-mistralai.html
+++ b/bundles-mistralai.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-mongodb.html b/bundles-mongodb.html
index bac93ac1b1..af7f40cc3b 100644
--- a/bundles-mongodb.html
+++ b/bundles-mongodb.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-notion.html b/bundles-notion.html
index e39d26554a..51fe36e0f0 100644
--- a/bundles-notion.html
+++ b/bundles-notion.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-novita.html b/bundles-novita.html
index dfd129d083..e72474026c 100644
--- a/bundles-novita.html
+++ b/bundles-novita.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-nvidia.html b/bundles-nvidia.html
index 30f6fac95e..90a85b6a2b 100644
--- a/bundles-nvidia.html
+++ b/bundles-nvidia.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-ollama.html b/bundles-ollama.html
index 038677fae7..641e28fd59 100644
--- a/bundles-ollama.html
+++ b/bundles-ollama.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-openai.html b/bundles-openai.html
index 4d9b143705..9efb72ee08 100644
--- a/bundles-openai.html
+++ b/bundles-openai.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-openrouter.html b/bundles-openrouter.html
index ce81bf21ab..63b1ba578e 100644
--- a/bundles-openrouter.html
+++ b/bundles-openrouter.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-perplexity.html b/bundles-perplexity.html
index a852d0010a..5f228683ec 100644
--- a/bundles-perplexity.html
+++ b/bundles-perplexity.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-pgvector.html b/bundles-pgvector.html
index abb8788ca7..7e80a0c1be 100644
--- a/bundles-pgvector.html
+++ b/bundles-pgvector.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-pinecone.html b/bundles-pinecone.html
index 2dbf78e43f..769aec3d24 100644
--- a/bundles-pinecone.html
+++ b/bundles-pinecone.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-qdrant.html b/bundles-qdrant.html
index c32962793e..338bf0c7ff 100644
--- a/bundles-qdrant.html
+++ b/bundles-qdrant.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-redis.html b/bundles-redis.html
index 9b8c9a73b6..ab2ff6d2c0 100644
--- a/bundles-redis.html
+++ b/bundles-redis.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-sambanova.html b/bundles-sambanova.html
index bee5f88a5f..f5660da6d6 100644
--- a/bundles-sambanova.html
+++ b/bundles-sambanova.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-searchapi.html b/bundles-searchapi.html
index de2e91e143..51fb3ed7de 100644
--- a/bundles-searchapi.html
+++ b/bundles-searchapi.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-serper.html b/bundles-serper.html
index 23e3483386..92c6107abe 100644
--- a/bundles-serper.html
+++ b/bundles-serper.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-supabase.html b/bundles-supabase.html
index 01cb6ec3a8..381576965c 100644
--- a/bundles-supabase.html
+++ b/bundles-supabase.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-upstash.html b/bundles-upstash.html
index 3db1938c7d..87e7d35d26 100644
--- a/bundles-upstash.html
+++ b/bundles-upstash.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-vectara.html b/bundles-vectara.html
index 85337c7ba8..83434a0e80 100644
--- a/bundles-vectara.html
+++ b/bundles-vectara.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-vertexai.html b/bundles-vertexai.html
index a8df735869..3411c4234b 100644
--- a/bundles-vertexai.html
+++ b/bundles-vertexai.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-vllm.html b/bundles-vllm.html
index be3100e336..051977520d 100644
--- a/bundles-vllm.html
+++ b/bundles-vllm.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-weaviate.html b/bundles-weaviate.html
index ffdd77a23b..e8cf0cf949 100644
--- a/bundles-weaviate.html
+++ b/bundles-weaviate.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-wikipedia.html b/bundles-wikipedia.html
index 955165c84c..f376a4ac0a 100644
--- a/bundles-wikipedia.html
+++ b/bundles-wikipedia.html
@@ -24,7 +24,7 @@
-
+
diff --git a/bundles-xai.html b/bundles-xai.html
index 3e0d0b6fad..83ad977f44 100644
--- a/bundles-xai.html
+++ b/bundles-xai.html
@@ -24,7 +24,7 @@
-
+
diff --git a/calculator.html b/calculator.html
index 6162cc09a1..9da33bfdf1 100644
--- a/calculator.html
+++ b/calculator.html
@@ -24,7 +24,7 @@
-
+
diff --git a/chat-input-and-output.html b/chat-input-and-output.html
index 18a026d918..905abec0df 100644
--- a/chat-input-and-output.html
+++ b/chat-input-and-output.html
@@ -24,7 +24,7 @@
-
+
diff --git a/chat-with-files.html b/chat-with-files.html
index 29e44a3fb1..9209c5409b 100644
--- a/chat-with-files.html
+++ b/chat-with-files.html
@@ -24,7 +24,7 @@
-
+
diff --git a/chat-with-rag.html b/chat-with-rag.html
index f2b494ac45..ae217fcbed 100644
--- a/chat-with-rag.html
+++ b/chat-with-rag.html
@@ -24,7 +24,7 @@
-
+
diff --git a/component-webhook.html b/component-webhook.html
index fccb376d59..1a6fea835d 100644
--- a/component-webhook.html
+++ b/component-webhook.html
@@ -24,7 +24,7 @@
-
+
diff --git a/components-agents.html b/components-agents.html
index e64cb9d9eb..0f7b963ee6 100644
--- a/components-agents.html
+++ b/components-agents.html
@@ -24,7 +24,7 @@
-
+
diff --git a/components-bundle-components.html b/components-bundle-components.html
index a3aa436b50..79c320e17a 100644
--- a/components-bundle-components.html
+++ b/components-bundle-components.html
@@ -24,7 +24,7 @@
-
+
diff --git a/components-custom-components.html b/components-custom-components.html
index 125c1055d1..fbf7c25f40 100644
--- a/components-custom-components.html
+++ b/components-custom-components.html
@@ -24,7 +24,7 @@
-
+
diff --git a/components-embedding-models.html b/components-embedding-models.html
index 7137b78500..1ef09e1d2c 100644
--- a/components-embedding-models.html
+++ b/components-embedding-models.html
@@ -24,7 +24,7 @@
-
+
diff --git a/components-models.html b/components-models.html
index 562df683f3..919f05bae9 100644
--- a/components-models.html
+++ b/components-models.html
@@ -24,7 +24,7 @@
-
+
diff --git a/components-prompts.html b/components-prompts.html
index 90d5381040..922fe67a5f 100644
--- a/components-prompts.html
+++ b/components-prompts.html
@@ -24,7 +24,7 @@
-
+
diff --git a/concepts-components.html b/concepts-components.html
index 2a54552c41..762a771779 100644
--- a/concepts-components.html
+++ b/concepts-components.html
@@ -24,7 +24,7 @@
-
+
diff --git a/concepts-file-management.html b/concepts-file-management.html
index 13129d2d9c..80643db89f 100644
--- a/concepts-file-management.html
+++ b/concepts-file-management.html
@@ -24,7 +24,7 @@
-
+
@@ -137,7 +137,7 @@ The payload in each code snippet now includes tweaks with your Work with video files​
For videos, see the Twelve Labs and YouTubeBundles.
Langflow supports two storage backends for file management:
+
Langflow supports two storage backends for file management.
Local storage: Langflow's default storage backend. Files are stored locally in your Langflow configuration directory. Set LANGFLOW_STORAGE_TYPE=local or leave it unset to use local storage.
@@ -166,6 +166,7 @@ This example policy allows basic CRUD operations on S3 objects.
S3_BUCKET_DIRECTORY: An optional folder path within the bucket where files are stored, such as s3://S3_BUCKET_NAME/S3_BUCKET_DIRECTORY.
The following environment variables configure file storage backends for Langflow's file management system:
Variable
Format
Default
Description
LANGFLOW_STORAGE_TYPE
String
local
Set the file storage backend. Supported values: local (files stored in the Langflow configuration directory) or s3 (files stored in AWS S3). For S3 storage, you must also configure AWS credentials and bucket settings.
LANGFLOW_OBJECT_STORAGE_BUCKET_NAME
String
Not set
The name of the S3 bucket to use for file storage. Required when LANGFLOW_STORAGE_TYPE=s3.
LANGFLOW_OBJECT_STORAGE_PREFIX
String
Not set
Optional prefix/folder path within the S3 bucket where files will be stored. If not set, files are stored at the bucket root.
LANGFLOW_OBJECT_STORAGE_TAGS
JSON object
Not set
Optional S3 object tags applied to stored files when LANGFLOW_STORAGE_TYPE=s3. Ignored for local storage. Provided as a JSON map of string keys to string values, such as {"env": "prod", "owner": "data-team"}.
You can add files to the Read File component in the visual editor or at runtime, and you can upload multiple files at once.
For more information about uploading files and working with files in flows, see File management and Create a chatbot that can ingest files.
+
The Read File component can read files from the local Langflow database, AWS S3, or Google Drive.
+For more information, see Configure file storage.
By default, the maximum file size is 1024 MB.
To modify this value, change the LANGFLOW_MAX_FILE_SIZE_UPLOADenvironment variable.
diff --git a/release-notes.html b/release-notes.html
index e170444ddb..486d6563f7 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -24,7 +24,7 @@
-
+
@@ -134,7 +134,7 @@ SSE transport is still supported as a fallback for backwards compatibility.
Changes to read/write file components
The Save File component was renamed to Write File, and it can now save to S3 and Google Drive.
-The File component was renamed to Read File.
+The File component was renamed to Read File, and it can now read from AWS S3 and Google Drive.
Both components support Tool Mode.
diff --git a/run-flow.html b/run-flow.html
index a925e24a9e..e0556db128 100644
--- a/run-flow.html
+++ b/run-flow.html
@@ -24,7 +24,7 @@
-
+
diff --git a/search.html b/search.html
index 0c2ea43f59..45b5b1b928 100644
--- a/search.html
+++ b/search.html
@@ -24,7 +24,7 @@
-
+
diff --git a/security.html b/security.html
index 48c3117b08..de65e0b01e 100644
--- a/security.html
+++ b/security.html
@@ -24,7 +24,7 @@
-
+
diff --git a/session-id.html b/session-id.html
index a6683ffb58..a70f242bb1 100644
--- a/session-id.html
+++ b/session-id.html
@@ -24,7 +24,7 @@
-
+
diff --git a/sitemap.xml b/sitemap.xml
index ffb9cda686..ab649bba8c 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-https://docs.langflow.org/apihttps://docs.langflow.org/api/openapi.jsonhttps://docs.langflow.org/api/openapi.yamlhttps://docs.langflow.org/searchhttps://docs.langflow.org/agent-tutorial2026-01-15T19:35:25.000Zhttps://docs.langflow.org/agents2026-01-15T19:35:25.000Zhttps://docs.langflow.org/agents-tools2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-build2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-files2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-flows2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-flows-run2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-keys-and-authentication2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-logs2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-monitor2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-openai-responses2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-projects2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-reference-api-examples2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-request2026-01-15T19:35:25.000Zhttps://docs.langflow.org/api-users2026-01-15T19:35:25.000Zhttps://docs.langflow.org/batch-run2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-aiml2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-altk2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-amazon2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-anthropic2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-apify2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-arxiv2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-assemblyai2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-azure2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-baidu2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-bing2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-cassandra2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-chroma2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-cleanlab2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-clickhouse2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-cloudflare2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-cohere2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-cometapi2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-composio2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-couchbase2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-cuga2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-datastax2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-deepseek2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-docling2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-duckduckgo2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-elastic2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-exa2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-faiss2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-glean2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-google2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-groq2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-huggingface2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-ibm2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-icosacomputing2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-langchain2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-lmstudio2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-maritalk2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-mem02026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-milvus2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-mistralai2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-mongodb2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-notion2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-novita2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-nvidia2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-ollama2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-openai2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-openrouter2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-perplexity2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-pgvector2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-pinecone2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-qdrant2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-redis2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-sambanova2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-searchapi2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-serper2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-supabase2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-upstash2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-vectara2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-vertexai2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-vllm2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-weaviate2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-wikipedia2026-01-15T19:35:25.000Zhttps://docs.langflow.org/bundles-xai2026-01-15T19:35:25.000Zhttps://docs.langflow.org/calculator2026-01-15T19:35:25.000Zhttps://docs.langflow.org/chat-input-and-output2026-01-15T19:35:25.000Zhttps://docs.langflow.org/chat-with-files2026-01-15T19:35:25.000Zhttps://docs.langflow.org/chat-with-rag2026-01-15T19:35:25.000Zhttps://docs.langflow.org/component-webhook2026-01-15T19:35:25.000Zhttps://docs.langflow.org/components-agents2026-01-15T19:35:25.000Zhttps://docs.langflow.org/components-bundle-components2026-01-15T19:35:25.000Zhttps://docs.langflow.org/components-custom-components2026-01-15T19:35:25.000Zhttps://docs.langflow.org/components-embedding-models2026-01-15T19:35:25.000Zhttps://docs.langflow.org/components-models2026-01-15T19:35:25.000Zhttps://docs.langflow.org/components-prompts2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-components2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-file-management2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-flows2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-flows-import2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-overview2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-playground2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-publish2026-01-15T19:35:25.000Zhttps://docs.langflow.org/concepts-voice-mode2026-01-15T19:35:25.000Zhttps://docs.langflow.org/configuration-cli2026-01-15T19:35:25.000Zhttps://docs.langflow.org/configuration-custom-database2026-01-15T19:35:25.000Zhttps://docs.langflow.org/configuration-global-variables2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-bundles2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-community2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-component-tests2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-components2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-github-issues2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-how-to-contribute2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-telemetry2026-01-15T19:35:25.000Zhttps://docs.langflow.org/contributing-templates2026-01-15T19:35:25.000Zhttps://docs.langflow.org/current-date2026-01-15T19:35:25.000Zhttps://docs.langflow.org/data-operations2026-01-15T19:35:25.000Zhttps://docs.langflow.org/data-types2026-01-15T19:35:25.000Zhttps://docs.langflow.org/dataframe-operations2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-architecture2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-caddyfile2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-docker2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-gcp2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-hugging-face-spaces2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-kubernetes-dev2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-kubernetes-prod2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-nginx-ssl2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-overview2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-prod-best-practices2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-public-server2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-railway2026-01-15T19:35:25.000Zhttps://docs.langflow.org/deployment-render2026-01-15T19:35:25.000Zhttps://docs.langflow.org/develop-application2026-01-15T19:35:25.000Zhttps://docs.langflow.org/directory2026-01-15T19:35:25.000Zhttps://docs.langflow.org/dynamic-create-data2026-01-15T19:35:25.000Zhttps://docs.langflow.org/enterprise-database-guide2026-01-15T19:35:25.000Zhttps://docs.langflow.org/environment-variables2026-01-15T19:35:25.000Zhttps://docs.langflow.org/get-started-installation2026-01-15T19:35:25.000Zhttps://docs.langflow.org/get-started-quickstart2026-01-15T19:35:25.000Zhttps://docs.langflow.org/if-else2026-01-15T19:35:25.000Zhttps://docs.langflow.org/install-custom-dependencies2026-01-15T19:35:25.000Zhttps://docs.langflow.org/integrations-arize2026-01-15T19:35:25.000Zhttps://docs.langflow.org/integrations-instana-traceloop2026-01-15T19:35:25.000Zhttps://docs.langflow.org/integrations-langfuse2026-01-15T19:35:25.000Zhttps://docs.langflow.org/integrations-langsmith2026-01-15T19:35:25.000Zhttps://docs.langflow.org/integrations-langwatch2026-01-15T19:35:25.000Zhttps://docs.langflow.org/integrations-opik2026-01-15T19:35:25.000Zhttps://docs.langflow.org/legacy-core-components2026-01-15T19:35:25.000Zhttps://docs.langflow.org/llm-selector2026-01-15T19:35:25.000Zhttps://docs.langflow.org/logging2026-01-15T19:35:25.000Zhttps://docs.langflow.org/loop2026-01-15T19:35:25.000Zhttps://docs.langflow.org/luna-for-langflow2026-01-15T19:35:25.000Zhttps://docs.langflow.org/mcp-client2026-01-15T19:35:25.000Zhttps://docs.langflow.org/mcp-component-astra2026-01-15T19:35:25.000Zhttps://docs.langflow.org/mcp-server2026-01-15T19:35:25.000Zhttps://docs.langflow.org/mcp-tools2026-01-15T19:35:25.000Zhttps://docs.langflow.org/mcp-tutorial2026-01-15T19:35:25.000Zhttps://docs.langflow.org/memory2026-01-15T19:35:25.000Zhttps://docs.langflow.org/message-history2026-01-15T19:35:25.000Zhttps://docs.langflow.org/mock-data2026-01-15T19:35:25.000Zhttps://docs.langflow.org/notify-and-listen2026-01-15T19:35:25.000Zhttps://docs.langflow.org/parser2026-01-15T19:35:25.000Zhttps://docs.langflow.org/python-interpreter2026-01-15T19:35:25.000Zhttps://docs.langflow.org/read-file2026-01-15T19:35:25.000Zhttps://docs.langflow.org/release-notes2026-01-15T19:35:25.000Zhttps://docs.langflow.org/run-flow2026-01-15T19:35:25.000Zhttps://docs.langflow.org/security2026-01-15T19:35:25.000Zhttps://docs.langflow.org/session-id2026-01-15T19:35:25.000Zhttps://docs.langflow.org/smart-router2026-01-15T19:35:25.000Zhttps://docs.langflow.org/smart-transform2026-01-15T19:35:25.000Zhttps://docs.langflow.org/split-text2026-01-15T19:35:25.000Zhttps://docs.langflow.org/sql-database2026-01-15T19:35:25.000Zhttps://docs.langflow.org/structured-output2026-01-15T19:35:25.000Zhttps://docs.langflow.org/text-input-and-output2026-01-15T19:35:25.000Zhttps://docs.langflow.org/troubleshoot2026-01-15T19:35:25.000Zhttps://docs.langflow.org/type-convert2026-01-15T19:35:25.000Zhttps://docs.langflow.org/typescript-client2026-01-15T19:35:25.000Zhttps://docs.langflow.org/url2026-01-15T19:35:25.000Zhttps://docs.langflow.org/web-search2026-01-15T19:35:25.000Zhttps://docs.langflow.org/webhook2026-01-15T19:35:25.000Zhttps://docs.langflow.org/write-file2026-01-15T19:35:25.000Zhttps://docs.langflow.org/2026-01-15T19:35:25.000Z
\ No newline at end of file
+https://docs.langflow.org/apihttps://docs.langflow.org/api/openapi.jsonhttps://docs.langflow.org/api/openapi.yamlhttps://docs.langflow.org/searchhttps://docs.langflow.org/agent-tutorial2026-01-22T19:54:51.000Zhttps://docs.langflow.org/agents2026-01-22T19:54:51.000Zhttps://docs.langflow.org/agents-tools2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-build2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-files2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-flows2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-flows-run2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-keys-and-authentication2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-logs2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-monitor2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-openai-responses2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-projects2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-reference-api-examples2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-request2026-01-22T19:54:51.000Zhttps://docs.langflow.org/api-users2026-01-22T19:54:51.000Zhttps://docs.langflow.org/batch-run2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-aiml2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-altk2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-amazon2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-anthropic2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-apify2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-arxiv2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-assemblyai2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-azure2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-baidu2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-bing2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-cassandra2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-chroma2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-cleanlab2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-clickhouse2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-cloudflare2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-cohere2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-cometapi2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-composio2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-couchbase2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-cuga2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-datastax2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-deepseek2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-docling2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-duckduckgo2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-elastic2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-exa2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-faiss2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-glean2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-google2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-groq2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-huggingface2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-ibm2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-icosacomputing2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-langchain2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-lmstudio2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-maritalk2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-mem02026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-milvus2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-mistralai2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-mongodb2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-notion2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-novita2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-nvidia2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-ollama2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-openai2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-openrouter2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-perplexity2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-pgvector2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-pinecone2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-qdrant2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-redis2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-sambanova2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-searchapi2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-serper2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-supabase2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-upstash2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-vectara2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-vertexai2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-vllm2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-weaviate2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-wikipedia2026-01-22T19:54:51.000Zhttps://docs.langflow.org/bundles-xai2026-01-22T19:54:51.000Zhttps://docs.langflow.org/calculator2026-01-22T19:54:51.000Zhttps://docs.langflow.org/chat-input-and-output2026-01-22T19:54:51.000Zhttps://docs.langflow.org/chat-with-files2026-01-22T19:54:51.000Zhttps://docs.langflow.org/chat-with-rag2026-01-22T19:54:51.000Zhttps://docs.langflow.org/component-webhook2026-01-22T19:54:51.000Zhttps://docs.langflow.org/components-agents2026-01-22T19:54:51.000Zhttps://docs.langflow.org/components-bundle-components2026-01-22T19:54:51.000Zhttps://docs.langflow.org/components-custom-components2026-01-22T19:54:51.000Zhttps://docs.langflow.org/components-embedding-models2026-01-22T19:54:51.000Zhttps://docs.langflow.org/components-models2026-01-22T19:54:51.000Zhttps://docs.langflow.org/components-prompts2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-components2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-file-management2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-flows2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-flows-import2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-overview2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-playground2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-publish2026-01-22T19:54:51.000Zhttps://docs.langflow.org/concepts-voice-mode2026-01-22T19:54:51.000Zhttps://docs.langflow.org/configuration-cli2026-01-22T19:54:51.000Zhttps://docs.langflow.org/configuration-custom-database2026-01-22T19:54:51.000Zhttps://docs.langflow.org/configuration-global-variables2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-bundles2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-community2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-component-tests2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-components2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-github-issues2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-how-to-contribute2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-telemetry2026-01-22T19:54:51.000Zhttps://docs.langflow.org/contributing-templates2026-01-22T19:54:51.000Zhttps://docs.langflow.org/current-date2026-01-22T19:54:51.000Zhttps://docs.langflow.org/data-operations2026-01-22T19:54:51.000Zhttps://docs.langflow.org/data-types2026-01-22T19:54:51.000Zhttps://docs.langflow.org/dataframe-operations2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-architecture2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-caddyfile2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-docker2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-gcp2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-hugging-face-spaces2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-kubernetes-dev2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-kubernetes-prod2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-nginx-ssl2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-overview2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-prod-best-practices2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-public-server2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-railway2026-01-22T19:54:51.000Zhttps://docs.langflow.org/deployment-render2026-01-22T19:54:51.000Zhttps://docs.langflow.org/develop-application2026-01-22T19:54:51.000Zhttps://docs.langflow.org/directory2026-01-22T19:54:51.000Zhttps://docs.langflow.org/dynamic-create-data2026-01-22T19:54:51.000Zhttps://docs.langflow.org/enterprise-database-guide2026-01-22T19:54:51.000Zhttps://docs.langflow.org/environment-variables2026-01-22T19:54:51.000Zhttps://docs.langflow.org/get-started-installation2026-01-22T19:54:51.000Zhttps://docs.langflow.org/get-started-quickstart2026-01-22T19:54:51.000Zhttps://docs.langflow.org/if-else2026-01-22T19:54:51.000Zhttps://docs.langflow.org/install-custom-dependencies2026-01-22T19:54:51.000Zhttps://docs.langflow.org/integrations-arize2026-01-22T19:54:51.000Zhttps://docs.langflow.org/integrations-instana-traceloop2026-01-22T19:54:51.000Zhttps://docs.langflow.org/integrations-langfuse2026-01-22T19:54:51.000Zhttps://docs.langflow.org/integrations-langsmith2026-01-22T19:54:51.000Zhttps://docs.langflow.org/integrations-langwatch2026-01-22T19:54:51.000Zhttps://docs.langflow.org/integrations-opik2026-01-22T19:54:51.000Zhttps://docs.langflow.org/legacy-core-components2026-01-22T19:54:51.000Zhttps://docs.langflow.org/llm-selector2026-01-22T19:54:51.000Zhttps://docs.langflow.org/logging2026-01-22T19:54:51.000Zhttps://docs.langflow.org/loop2026-01-22T19:54:51.000Zhttps://docs.langflow.org/luna-for-langflow2026-01-22T19:54:51.000Zhttps://docs.langflow.org/mcp-client2026-01-22T19:54:51.000Zhttps://docs.langflow.org/mcp-component-astra2026-01-22T19:54:51.000Zhttps://docs.langflow.org/mcp-server2026-01-22T19:54:51.000Zhttps://docs.langflow.org/mcp-tools2026-01-22T19:54:51.000Zhttps://docs.langflow.org/mcp-tutorial2026-01-22T19:54:51.000Zhttps://docs.langflow.org/memory2026-01-22T19:54:51.000Zhttps://docs.langflow.org/message-history2026-01-22T19:54:51.000Zhttps://docs.langflow.org/mock-data2026-01-22T19:54:51.000Zhttps://docs.langflow.org/notify-and-listen2026-01-22T19:54:51.000Zhttps://docs.langflow.org/parser2026-01-22T19:54:51.000Zhttps://docs.langflow.org/python-interpreter2026-01-22T19:54:51.000Zhttps://docs.langflow.org/read-file2026-01-22T19:54:51.000Zhttps://docs.langflow.org/release-notes2026-01-22T19:54:51.000Zhttps://docs.langflow.org/run-flow2026-01-22T19:54:51.000Zhttps://docs.langflow.org/security2026-01-22T19:54:51.000Zhttps://docs.langflow.org/session-id2026-01-22T19:54:51.000Zhttps://docs.langflow.org/smart-router2026-01-22T19:54:51.000Zhttps://docs.langflow.org/smart-transform2026-01-22T19:54:51.000Zhttps://docs.langflow.org/split-text2026-01-22T19:54:51.000Zhttps://docs.langflow.org/sql-database2026-01-22T19:54:51.000Zhttps://docs.langflow.org/structured-output2026-01-22T19:54:51.000Zhttps://docs.langflow.org/text-input-and-output2026-01-22T19:54:51.000Zhttps://docs.langflow.org/troubleshoot2026-01-22T19:54:51.000Zhttps://docs.langflow.org/type-convert2026-01-22T19:54:51.000Zhttps://docs.langflow.org/typescript-client2026-01-22T19:54:51.000Zhttps://docs.langflow.org/url2026-01-22T19:54:51.000Zhttps://docs.langflow.org/web-search2026-01-22T19:54:51.000Zhttps://docs.langflow.org/webhook2026-01-22T19:54:51.000Zhttps://docs.langflow.org/write-file2026-01-22T19:54:51.000Zhttps://docs.langflow.org/2026-01-22T19:54:51.000Z
\ No newline at end of file
diff --git a/smart-router.html b/smart-router.html
index f6aef1588f..2b9d320bf5 100644
--- a/smart-router.html
+++ b/smart-router.html
@@ -24,7 +24,7 @@
-
+
diff --git a/smart-transform.html b/smart-transform.html
index fe14c79ebe..84f3621731 100644
--- a/smart-transform.html
+++ b/smart-transform.html
@@ -24,7 +24,7 @@
-
+
diff --git a/split-text.html b/split-text.html
index 1654a97d62..36b91fb886 100644
--- a/split-text.html
+++ b/split-text.html
@@ -24,7 +24,7 @@
-
+
diff --git a/sql-database.html b/sql-database.html
index 0ce8fcffd0..ea6cee1afc 100644
--- a/sql-database.html
+++ b/sql-database.html
@@ -24,7 +24,7 @@
-
+
diff --git a/structured-output.html b/structured-output.html
index 0545072e48..52bd6f580f 100644
--- a/structured-output.html
+++ b/structured-output.html
@@ -24,7 +24,7 @@
-
+
diff --git a/text-input-and-output.html b/text-input-and-output.html
index d6af3142c1..79b7121a08 100644
--- a/text-input-and-output.html
+++ b/text-input-and-output.html
@@ -24,7 +24,7 @@
-
+
diff --git a/troubleshoot.html b/troubleshoot.html
index e4b4d5e751..b7e9d93c1f 100644
--- a/troubleshoot.html
+++ b/troubleshoot.html
@@ -24,7 +24,7 @@
-
+
diff --git a/type-convert.html b/type-convert.html
index 782437f50d..ed595f4b82 100644
--- a/type-convert.html
+++ b/type-convert.html
@@ -24,7 +24,7 @@
-
+
diff --git a/typescript-client.html b/typescript-client.html
index ec9efbb2af..19686327fa 100644
--- a/typescript-client.html
+++ b/typescript-client.html
@@ -24,7 +24,7 @@
-
+
diff --git a/url.html b/url.html
index 24c209af10..63eaae7160 100644
--- a/url.html
+++ b/url.html
@@ -24,7 +24,7 @@
-
+
diff --git a/web-search.html b/web-search.html
index e54fd929ba..d6d2252a4c 100644
--- a/web-search.html
+++ b/web-search.html
@@ -24,7 +24,7 @@
-
+
diff --git a/webhook.html b/webhook.html
index 6b7271287e..b178cedb2f 100644
--- a/webhook.html
+++ b/webhook.html
@@ -24,7 +24,7 @@
-
+
diff --git a/write-file.html b/write-file.html
index 1dbc8c5b0a..a62ec5b161 100644
--- a/write-file.html
+++ b/write-file.html
@@ -24,7 +24,7 @@
-
+
@@ -60,6 +60,11 @@ Several file formats are supported, and you can store files in You can connect the same output to multiple Write File components if you want to create multiple files, save the data in different file formats, or save files to multiple locations.
+
Click Storage Location, and then select Local, AWS, or Google Drive.
+If required, enter your cloud provider's credentials.
+For more information, see Configure file storage.
+
+
In File Name, enter a file name and an optional path.
The File Name parameter controls where the file is saved.
It can contain a file name or an entire file path:
@@ -81,7 +86,7 @@ For example, ~/Desktop/my_file saves my_file to the de
If you do, the extension is treated as part of the file name; it has no impact on the File Format parameter.
-
In the component's header menu, click Controls, select the desired file format, and then click Close.
+
Select the desired file format, and then click Close.
The available File Format options depend on the input data type: