From 4fca6f5642452e38e51a6b028fba8fed9b413ba0 Mon Sep 17 00:00:00 2001 From: "github-merge-queue[bot]" Date: Mon, 17 Nov 2025 17:38:40 +0000 Subject: [PATCH] deploy: 7cbd4ec63629b7bee279b9e1e6d8e4701dd052aa --- 404.html | 4 +- agent-tutorial.html | 4 +- agents-tools.html | 4 +- agents.html | 4 +- api-build.html | 4 +- api-files.html | 4 +- api-flows-run.html | 4 +- api-flows.html | 4 +- api-keys-and-authentication.html | 4 +- api-logs.html | 4 +- api-monitor.html | 4 +- api-openai-responses.html | 4 +- api-projects.html | 4 +- api-reference-api-examples.html | 4 +- api-users.html | 4 +- api.html | 4 +- api/openapi.json.html | 4 +- api/openapi.yaml.html | 4 +- assets/js/08b309e9.c02c15ea.js | 1 + assets/js/22dd74f7.03827990.js | 1 - assets/js/22dd74f7.c448c82a.js | 1 + ...79906.45ed451e.js => 69079906.6f0fb038.js} | 2 +- assets/js/6e85978c.21559946.js | 1 + assets/js/6e85978c.4dfa2cd0.js | 1 - assets/js/main.2392006d.js | 2 + ...CENSE.txt => main.2392006d.js.LICENSE.txt} | 0 assets/js/main.85de4677.js | 2 - assets/js/runtime~main.7ac3fefa.js | 1 + assets/js/runtime~main.c31169c6.js | 1 - bundles-aiml.html | 4 +- bundles-amazon.html | 4 +- bundles-anthropic.html | 4 +- bundles-apify.html | 4 +- bundles-arxiv.html | 4 +- bundles-assemblyai.html | 4 +- bundles-azure.html | 4 +- bundles-baidu.html | 4 +- bundles-bing.html | 4 +- bundles-cassandra.html | 4 +- bundles-chroma.html | 4 +- bundles-cleanlab.html | 4 +- bundles-clickhouse.html | 4 +- bundles-cloudflare.html | 4 +- bundles-cohere.html | 4 +- bundles-composio.html | 4 +- bundles-couchbase.html | 4 +- bundles-datastax.html | 4 +- bundles-deepseek.html | 4 +- bundles-docling.html | 4 +- bundles-duckduckgo.html | 4 +- bundles-elastic.html | 4 +- bundles-exa.html | 4 +- bundles-faiss.html | 4 +- bundles-glean.html | 4 +- bundles-google.html | 4 +- bundles-groq.html | 4 +- bundles-huggingface.html | 4 +- bundles-ibm.html | 4 +- bundles-icosacomputing.html | 4 +- bundles-langchain.html | 4 +- bundles-lmstudio.html | 4 +- bundles-maritalk.html | 4 +- bundles-mem0.html | 4 +- bundles-milvus.html | 4 +- bundles-mistralai.html | 4 +- bundles-mongodb.html | 4 +- bundles-notion.html | 4 +- bundles-novita.html | 4 +- bundles-nvidia.html | 4 +- bundles-ollama.html | 4 +- bundles-openai.html | 4 +- bundles-openrouter.html | 4 +- bundles-perplexity.html | 4 +- bundles-pgvector.html | 4 +- bundles-pinecone.html | 4 +- bundles-qdrant.html | 4 +- bundles-redis.html | 4 +- bundles-sambanova.html | 4 +- bundles-searchapi.html | 4 +- bundles-serper.html | 4 +- bundles-supabase.html | 4 +- bundles-upstash.html | 4 +- bundles-vectara.html | 4 +- bundles-vertexai.html | 4 +- bundles-weaviate.html | 4 +- bundles-wikipedia.html | 4 +- bundles-xai.html | 4 +- chat-with-files.html | 4 +- chat-with-rag.html | 4 +- components-agents.html | 4 +- components-bundle-components.html | 4 +- components-custom-components.html | 4 +- components-data.html | 4 +- components-embedding-models.html | 4 +- components-helpers.html | 4 +- components-io.html | 4 +- components-logic.html | 4 +- components-models.html | 4 +- components-processing.html | 4 +- components-prompts.html | 4 +- components-tools.html | 4 +- concepts-components.html | 6 +- concepts-file-management.html | 4 +- concepts-flows-import.html | 4 +- concepts-flows.html | 4 +- concepts-overview.html | 4 +- concepts-playground.html | 4 +- concepts-publish.html | 4 +- concepts-voice-mode.html | 4 +- configuration-cli.html | 4 +- configuration-custom-database.html | 4 +- configuration-global-variables.html | 4 +- contributing-bundles.html | 4 +- contributing-community.html | 4 +- contributing-component-tests.html | 4 +- contributing-components.html | 4 +- contributing-github-issues.html | 4 +- contributing-how-to-contribute.html | 4 +- contributing-telemetry.html | 4 +- contributing-templates.html | 4 +- data-types.html | 4 +- deployment-architecture.html | 6 +- deployment-caddyfile.html | 6 +- deployment-docker.html | 6 +- deployment-gcp.html | 6 +- deployment-hugging-face-spaces.html | 6 +- deployment-kubernetes-dev.html | 6 +- deployment-kubernetes-prod.html | 6 +- deployment-nginx-ssl.html | 6 +- deployment-overview.html | 6 +- deployment-prod-best-practices.html | 6 +- deployment-public-server.html | 6 +- deployment-railway.html | 6 +- deployment-render.html | 8 +- develop-application.html | 6 +- enterprise-database-guide.html | 4 +- environment-variables.html | 4 +- get-started-installation.html | 4 +- get-started-quickstart.html | 4 +- index.html | 4 +- install-custom-dependencies.html | 4 +- integrations-arize.html | 4 +- integrations-instana-traceloop.html | 4 +- integrations-langfuse.html | 4 +- integrations-langsmith.html | 4 +- integrations-langwatch.html | 4 +- integrations-opik.html | 4 +- logging.html | 4 +- luna-for-langflow.html | 4 +- mcp-client.html | 4 +- mcp-component-astra.html | 4 +- mcp-server.html | 4 +- mcp-tutorial.html | 4 +- memory.html | 4 +- release-notes.html | 4 +- search.html | 4 +- security.html | 96 +++++++++++++++++++ session-id.html | 4 +- sitemap.xml | 2 +- troubleshoot.html | 4 +- typescript-client.html | 4 +- webhook.html | 4 +- 162 files changed, 418 insertions(+), 321 deletions(-) create mode 100644 assets/js/08b309e9.c02c15ea.js delete mode 100644 assets/js/22dd74f7.03827990.js create mode 100644 assets/js/22dd74f7.c448c82a.js rename assets/js/{69079906.45ed451e.js => 69079906.6f0fb038.js} (81%) create mode 100644 assets/js/6e85978c.21559946.js delete mode 100644 assets/js/6e85978c.4dfa2cd0.js create mode 100644 assets/js/main.2392006d.js rename assets/js/{main.85de4677.js.LICENSE.txt => main.2392006d.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.85de4677.js create mode 100644 assets/js/runtime~main.7ac3fefa.js delete mode 100644 assets/js/runtime~main.c31169c6.js create mode 100644 security.html diff --git a/404.html b/404.html index 00c03e48ef..f4521e9e29 100644 --- a/404.html +++ b/404.html @@ -24,8 +24,8 @@ - - + + diff --git a/agent-tutorial.html b/agent-tutorial.html index 6f0873578a..1a7257f0d5 100644 --- a/agent-tutorial.html +++ b/agent-tutorial.html @@ -24,8 +24,8 @@ - - + + diff --git a/agents-tools.html b/agents-tools.html index ab6265a9f2..e8de784051 100644 --- a/agents-tools.html +++ b/agents-tools.html @@ -24,8 +24,8 @@ - - + + diff --git a/agents.html b/agents.html index a1625a2930..0038d86245 100644 --- a/agents.html +++ b/agents.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-build.html b/api-build.html index f3459fd0db..bfe0e4b18d 100644 --- a/api-build.html +++ b/api-build.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-files.html b/api-files.html index cd4ada8694..2d2b00f4e1 100644 --- a/api-files.html +++ b/api-files.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-flows-run.html b/api-flows-run.html index 9ad1bcfd8c..5626b46afd 100644 --- a/api-flows-run.html +++ b/api-flows-run.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-flows.html b/api-flows.html index 7bb7d0b7c5..1695aec591 100644 --- a/api-flows.html +++ b/api-flows.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-keys-and-authentication.html b/api-keys-and-authentication.html index 606d3a8a79..36da0de2d8 100644 --- a/api-keys-and-authentication.html +++ b/api-keys-and-authentication.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-logs.html b/api-logs.html index eabba4b0f5..c046f99444 100644 --- a/api-logs.html +++ b/api-logs.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-monitor.html b/api-monitor.html index dc8fa055c7..8c1f7ab9c7 100644 --- a/api-monitor.html +++ b/api-monitor.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-openai-responses.html b/api-openai-responses.html index 1cb84a8e16..02bf88508d 100644 --- a/api-openai-responses.html +++ b/api-openai-responses.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-projects.html b/api-projects.html index 7dc11b0118..8c27511fcf 100644 --- a/api-projects.html +++ b/api-projects.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html index a640040821..ed74d9ec41 100644 --- a/api-reference-api-examples.html +++ b/api-reference-api-examples.html @@ -24,8 +24,8 @@ - - + + diff --git a/api-users.html b/api-users.html index 34cdfce3ae..0f0f293fa5 100644 --- a/api-users.html +++ b/api-users.html @@ -24,8 +24,8 @@ - - + + diff --git a/api.html b/api.html index 7c2680adf6..e91c501237 100644 --- a/api.html +++ b/api.html @@ -24,8 +24,8 @@ - - + + diff --git a/api/openapi.json.html b/api/openapi.json.html index 32969947e4..b544f2340e 100644 --- a/api/openapi.json.html +++ b/api/openapi.json.html @@ -24,8 +24,8 @@ - - + + diff --git a/api/openapi.yaml.html b/api/openapi.yaml.html index 43a5860830..59dde745a9 100644 --- a/api/openapi.yaml.html +++ b/api/openapi.yaml.html @@ -24,8 +24,8 @@ - - + + diff --git a/assets/js/08b309e9.c02c15ea.js b/assets/js/08b309e9.c02c15ea.js new file mode 100644 index 0000000000..14e7b95b34 --- /dev/null +++ b/assets/js/08b309e9.c02c15ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[889],{35911:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"Deployment/security","title":"Security","description":"The Langflow UI is an IDE and code execution platform, which means that Langflow is inherently capable of executing arbitrary,","source":"@site/docs/Deployment/security.mdx","sourceDirName":"Deployment","slug":"/security","permalink":"/security","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Security","slug":"/security"},"sidebar":"docs","previous":{"title":"Render","permalink":"/deployment-render"},"next":{"title":"Components overview","permalink":"/concepts-components"}}');var s=t(74848),o=t(28453);const r={title:"Security",slug:"/security"},a=void 0,l={},c=[{value:"Secure Langflow during local development",id:"secure-langflow-during-local-development",level:2},{value:"Secure first-party deployments",id:"secure-first-party-deployments",level:2},{value:"Secure third-party deployments",id:"secure-third-party-deployments",level:2},{value:"Security bulletin",id:"security-bulletin",level:2}];function d(e){const n={a:"a",admonition:"admonition",h2:"h2",li:"li",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"The Langflow UI is an IDE and code execution platform, which means that Langflow is inherently capable of executing arbitrary,\ndeveloper-provided code.\nBy design, the Langflow UI includes a code editor allowing developers to author and execute arbitrary Python with full access to the host\nLangflow backend process, filesystem, and network.\nIn addition, some components wrap and use code execution, including use of AI models to generate code to be executed based\non user input."}),"\n",(0,s.jsx)(n.p,{children:"Langflow neither enforces isolation between users within a single Langflow process, nor restricts access to the local disk or network resources. Flow visibility and user access controls are designed for usability, not security enforcement. Users can access underlying database connections and system resources directly. For multi-tenant deployments, Langflow relies on infrastructure-level security rather than application-level isolation, which means it is your responsibility to enforce tenant isolation."}),"\n",(0,s.jsxs)(n.admonition,{type:"warning",children:[(0,s.jsx)(n.p,{children:"You are responsible for the following:"}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Enforcing comprehensive infrastructure isolation."}),"\n",(0,s.jsx)(n.li,{children:"Running flows safely, particularly flows that use LLM-generated code or user inputs that could contain user-submitted code."}),"\n",(0,s.jsx)(n.li,{children:"Ensuring that end-user interactions with Langflow-backed APIs are secure from end-to-end, including data at rest and in transit."}),"\n"]})]}),"\n",(0,s.jsx)(n.h2,{id:"secure-langflow-during-local-development",children:"Secure Langflow during local development"}),"\n",(0,s.jsx)(n.p,{children:"Langflow is a code execution platform with full access to your local system.\nYou are responsible for ensuring the safety of flows you execute."}),"\n",(0,s.jsxs)(n.p,{children:["In the event that Langflow could execute untrusted or LLM-generated code, consider using isolated or containerized execution environments. For more information, see ",(0,s.jsx)(n.a,{href:"/develop-application",children:"Containerize a Langflow application"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"secure-first-party-deployments",children:"Secure first-party deployments"}),"\n",(0,s.jsx)(n.p,{children:"When you are serving APIs backed by flows that you or your organization authored, you are responsible for ensuring Langflow-based APIs provide security to your end users."}),"\n",(0,s.jsx)(n.p,{children:"Follow industry best practices for APIs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Use a secure API gateway to provide authentication and authorization"}),"\n",(0,s.jsx)(n.li,{children:"Ensure user data is appropriately isolated"}),"\n",(0,s.jsx)(n.li,{children:"Sanitize inputs and outputs against XSS and injection attacks"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For more information on setting up a reverse proxy, see ",(0,s.jsx)(n.a,{href:"/deployment-nginx-ssl",children:"Deploy Langflow with Nginx and SSL"}),".\nFor more information on authentication configuration, see ",(0,s.jsx)(n.a,{href:"/api-keys-and-authentication",children:"API keys and authentication"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"secure-third-party-deployments",children:"Secure third-party deployments"}),"\n",(0,s.jsx)(n.p,{children:"If you provide Langflow as a service to third parties, you must assume that any code executed by Langflow could be potentially malicious."}),"\n",(0,s.jsx)(n.p,{children:"Langflow provides no isolation between tenants, so it's your responsibility to enforce isolation at the infrastructure level."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Use process-level isolation to prevent tenants from sharing a single Langflow process."}),"\n",(0,s.jsx)(n.li,{children:"Use disk-level isolation to prevent shared access to writable persistent storage."}),"\n",(0,s.jsx)(n.li,{children:"Use network-level isolation to prevent access to private networks."}),"\n",(0,s.jsx)(n.li,{children:"Use database-level isolation to prevent access to or modification of shared database resources."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Authentication and authorization must be provided and enforced outside of the Langflow container.\nFor shared services, such as databases, enforce access limitations externally through credentials and security policies."}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/deployment-prod-best-practices",children:"Best practices for Langflow on Kubernetes"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"security-bulletin",children:"Security bulletin"}),"\n",(0,s.jsxs)(n.p,{children:["For the most up-to-date information about security vulnerabilities, fixes, and CVEs, see the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/SECURITY.md",children:"Langflow Security Policy"})," and ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/security/advisories",children:"Langflow GitHub Security Advisories"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["If you discover a security vulnerability in Langflow, the Langflow team encourages you to report it responsibly through the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/security",children:"GitHub Security tab"}),". Please don't publicly disclose vulnerabilities until they have been assessed and resolved."]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.03827990.js b/assets/js/22dd74f7.03827990.js deleted file mode 100644 index 9c98ad21e7..0000000000 --- a/assets/js/22dd74f7.03827990.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1567],{55226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Get started","items":[{"type":"link","label":"About Langflow","href":"/","docId":"Get-Started/about-langflow","unlisted":false},{"type":"link","label":"Install Langflow","href":"/get-started-installation","docId":"Get-Started/get-started-installation","unlisted":false},{"type":"link","label":"Quickstart","href":"/get-started-quickstart","docId":"Get-Started/get-started-quickstart","unlisted":false},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Create a vector RAG chatbot","href":"/chat-with-rag","docId":"Tutorials/chat-with-rag","unlisted":false},{"type":"link","label":"Create a chatbot that can ingest files","href":"/chat-with-files","docId":"Tutorials/chat-with-files","unlisted":false},{"type":"link","label":"Connect applications to agents","href":"/agent-tutorial","docId":"Tutorials/agent","unlisted":false},{"type":"link","label":"Connect to MCP servers from your application","href":"/mcp-tutorial","docId":"Tutorials/mcp-tutorial","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Flows","items":[{"type":"link","label":"Use the visual editor","href":"/concepts-overview","docId":"Flows/concepts-overview","unlisted":false},{"type":"link","label":"Build flows","href":"/concepts-flows","docId":"Flows/concepts-flows","unlisted":false},{"type":"category","label":"Run flows","items":[{"type":"link","label":"Trigger flows with the Langflow API","href":"/concepts-publish","docId":"Flows/concepts-publish","unlisted":false},{"type":"link","label":"Trigger flows with webhooks","href":"/webhook","docId":"Flows/webhook","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Test flows","href":"/concepts-playground","docId":"Flows/concepts-playground","unlisted":false},{"type":"link","label":"Import and export flows","href":"/concepts-flows-import","docId":"Flows/concepts-flows-import","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Agents","items":[{"type":"link","label":"Use Langflow agents","href":"/agents","docId":"Agents/agents","unlisted":false},{"type":"link","label":"Configure tools for agents","href":"/agents-tools","docId":"Agents/agents-tools","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Model Context Protocol (MCP)","items":[{"type":"link","label":"Use Langflow as an MCP client","href":"/mcp-client","docId":"Agents/mcp-client","unlisted":false},{"type":"link","label":"Use Langflow as an MCP server","href":"/mcp-server","docId":"Agents/mcp-server","unlisted":false},{"type":"link","label":"Connect an Astra DB MCP server to Langflow","href":"/mcp-component-astra","docId":"Agents/mcp-component-astra","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Develop","items":[{"type":"link","label":"API keys and authentication","href":"/api-keys-and-authentication","docId":"Develop/api-keys-and-authentication","unlisted":false},{"type":"link","label":"Install custom dependencies","href":"/install-custom-dependencies","docId":"Develop/install-custom-dependencies","unlisted":false},{"type":"link","label":"Global variables","href":"/configuration-global-variables","docId":"Develop/configuration-global-variables","unlisted":false},{"type":"link","label":"Environment variables","href":"/environment-variables","docId":"Develop/environment-variables","unlisted":false},{"type":"category","label":"Storage and memory","items":[{"type":"link","label":"Manage files","href":"/concepts-file-management","docId":"Develop/concepts-file-management","unlisted":false},{"type":"link","label":"Manage memory","href":"/memory","docId":"Develop/memory","unlisted":false},{"type":"link","label":"Use Session IDs","href":"/session-id","docId":"Develop/session-id","unlisted":false},{"type":"link","label":"Configure an external PostgreSQL database","href":"/configuration-custom-database","docId":"Develop/configuration-custom-database","unlisted":false},{"type":"link","label":"Database guide for enterprise administrators","href":"/enterprise-database-guide","docId":"Develop/enterprise-database-guide","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Observability","items":[{"type":"link","label":"Logs","href":"/logging","docId":"Develop/logging","unlisted":false},{"type":"category","label":"Monitoring","items":[{"type":"link","label":"Arize","href":"/integrations-arize","docId":"Develop/integrations-arize","unlisted":false},{"type":"link","label":"Langfuse","href":"/integrations-langfuse","docId":"Develop/integrations-langfuse","unlisted":false},{"type":"link","label":"LangSmith","href":"/integrations-langsmith","docId":"Develop/integrations-langsmith","unlisted":false},{"type":"link","label":"LangWatch","href":"/integrations-langwatch","docId":"Develop/integrations-langwatch","unlisted":false},{"type":"link","label":"Opik","href":"/integrations-opik","docId":"Develop/integrations-opik","unlisted":false},{"type":"link","label":"Traceloop","href":"/integrations-instana-traceloop","docId":"Develop/integrations-instana-traceloop","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Telemetry","href":"/contributing-telemetry","docId":"Develop/contributing-telemetry","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Use Langflow data types","href":"/data-types","docId":"Develop/data-types","unlisted":false},{"type":"link","label":"Use voice mode","href":"/concepts-voice-mode","docId":"Develop/concepts-voice-mode","unlisted":false},{"type":"link","label":"Use the Langflow CLI","href":"/configuration-cli","docId":"Develop/configuration-cli","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Deploy","items":[{"type":"link","label":"Langflow deployment overview","href":"/deployment-overview","docId":"Deployment/deployment-overview","unlisted":false},{"type":"link","label":"Deploy a public Langflow server","href":"/deployment-public-server","docId":"Deployment/deployment-public-server","unlisted":false},{"type":"link","label":"Deploy Langflow with Nginx and SSL","href":"/deployment-nginx-ssl","docId":"Deployment/deployment-nginx-ssl","unlisted":false},{"type":"category","label":"Containerized deployments","items":[{"type":"link","label":"Containerize a Langflow application","href":"/develop-application","docId":"Deployment/develop-application","unlisted":false},{"type":"link","label":"Langflow Docker images","href":"/deployment-docker","docId":"Deployment/deployment-docker","unlisted":false},{"type":"link","label":"Deploy Langflow on a remote server","href":"/deployment-caddyfile","docId":"Deployment/deployment-caddyfile","unlisted":false},{"type":"category","label":"Kubernetes","items":[{"type":"link","label":"Deployment architecture","href":"/deployment-architecture","docId":"Deployment/deployment-architecture","unlisted":false},{"type":"link","label":"Best practices","href":"/deployment-prod-best-practices","docId":"Deployment/deployment-prod-best-practices","unlisted":false},{"type":"link","label":"Deploy in development","href":"/deployment-kubernetes-dev","docId":"Deployment/deployment-kubernetes-dev","unlisted":false},{"type":"link","label":"Deploy in production","href":"/deployment-kubernetes-prod","docId":"Deployment/deployment-kubernetes-prod","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Cloud platforms","items":[{"type":"link","label":"Google Cloud Platform","href":"/deployment-gcp","docId":"Deployment/deployment-gcp","unlisted":false},{"type":"link","label":"Hugging Face Spaces","href":"/deployment-hugging-face-spaces","docId":"Deployment/deployment-hugging-face-spaces","unlisted":false},{"type":"link","label":"Railway","href":"/deployment-railway","docId":"Deployment/deployment-railway","unlisted":false},{"type":"link","label":"Render","href":"/deployment-render","docId":"Deployment/deployment-render","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Components reference","items":[{"type":"link","label":"Components overview","href":"/concepts-components","docId":"Components/concepts-components","unlisted":false},{"type":"category","label":"Core components","items":[{"type":"link","label":"Input / Output","href":"/components-io","docId":"Components/components-io","unlisted":false},{"type":"link","label":"Agents","href":"/components-agents","docId":"Components/components-agents","unlisted":false},{"type":"category","label":"Models","items":[{"type":"link","label":"Language Model","href":"/components-models","docId":"Components/components-models","unlisted":false},{"type":"link","label":"Embedding Model","href":"/components-embedding-models","docId":"Components/components-embedding-models","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Data","href":"/components-data","docId":"Components/components-data","unlisted":false},{"type":"category","label":"Processing","items":[{"type":"link","label":"Processing components","href":"/components-processing","docId":"Components/components-processing","unlisted":false},{"type":"link","label":"Prompt Template","href":"/components-prompts","docId":"Components/components-prompts","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Logic","href":"/components-logic","docId":"Components/components-logic","unlisted":false},{"type":"link","label":"Helpers","href":"/components-helpers","docId":"Components/components-helpers","unlisted":false},{"type":"link","label":"Tools","href":"/components-tools","docId":"Components/components-tools","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bundles","items":[{"type":"link","label":"About bundles","href":"/components-bundle-components","docId":"Components/components-bundles","unlisted":false},{"type":"link","label":"AI/ML API","href":"/bundles-aiml","docId":"Components/bundles-aiml","unlisted":false},{"type":"link","label":"Amazon","href":"/bundles-amazon","docId":"Components/bundles-amazon","unlisted":false},{"type":"link","label":"Anthropic","href":"/bundles-anthropic","docId":"Components/bundles-anthropic","unlisted":false},{"type":"link","label":"Apify","href":"/bundles-apify","docId":"Components/bundles-apify","unlisted":false},{"type":"link","label":"arXiv","href":"/bundles-arxiv","docId":"Components/bundles-arxiv","unlisted":false},{"type":"link","label":"AssemblyAI","href":"/bundles-assemblyai","docId":"Components/bundles-assemblyai","unlisted":false},{"type":"link","label":"Azure","href":"/bundles-azure","docId":"Components/bundles-azure","unlisted":false},{"type":"link","label":"Baidu","href":"/bundles-baidu","docId":"Components/bundles-baidu","unlisted":false},{"type":"link","label":"Bing","href":"/bundles-bing","docId":"Components/bundles-bing","unlisted":false},{"type":"link","label":"Cassandra","href":"/bundles-cassandra","docId":"Components/bundles-cassandra","unlisted":false},{"type":"link","label":"Chroma","href":"/bundles-chroma","docId":"Components/bundles-chroma","unlisted":false},{"type":"link","label":"Cleanlab","href":"/bundles-cleanlab","docId":"Components/bundles-cleanlab","unlisted":false},{"type":"link","label":"ClickHouse","href":"/bundles-clickhouse","docId":"Components/bundles-clickhouse","unlisted":false},{"type":"link","label":"Cloudflare","href":"/bundles-cloudflare","docId":"Components/bundles-cloudflare","unlisted":false},{"type":"link","label":"Cohere","href":"/bundles-cohere","docId":"Components/bundles-cohere","unlisted":false},{"type":"link","label":"Couchbase","href":"/bundles-couchbase","docId":"Components/bundles-couchbase","unlisted":false},{"type":"link","label":"DataStax","href":"/bundles-datastax","docId":"Components/bundles-datastax","unlisted":false},{"type":"link","label":"DeepSeek","href":"/bundles-deepseek","docId":"Components/bundles-deepseek","unlisted":false},{"type":"link","label":"Docling","href":"/bundles-docling","docId":"Components/bundles-docling","unlisted":false},{"type":"link","label":"DuckDuckGo","href":"/bundles-duckduckgo","docId":"Components/bundles-duckduckgo","unlisted":false},{"type":"link","label":"Elastic","href":"/bundles-elastic","docId":"Components/bundles-elastic","unlisted":false},{"type":"link","label":"Exa","href":"/bundles-exa","docId":"Components/bundles-exa","unlisted":false},{"type":"link","label":"FAISS","href":"/bundles-faiss","docId":"Components/bundles-faiss","unlisted":false},{"type":"link","label":"Glean","href":"/bundles-glean","docId":"Components/bundles-glean","unlisted":false},{"type":"link","label":"Google components","href":"/bundles-google","docId":"Components/bundles-google","unlisted":false},{"type":"link","label":"Groq","href":"/bundles-groq","docId":"Components/bundles-groq","unlisted":false},{"type":"link","label":"Hugging Face","href":"/bundles-huggingface","docId":"Components/bundles-huggingface","unlisted":false},{"type":"link","label":"IBM","href":"/bundles-ibm","docId":"Components/bundles-ibm","unlisted":false},{"type":"link","label":"Icosa Computing","href":"/bundles-icosacomputing","docId":"Components/bundles-icosacomputing","unlisted":false},{"type":"link","label":"LangChain","href":"/bundles-langchain","docId":"Components/bundles-langchain","unlisted":false},{"type":"link","label":"LM Studio","href":"/bundles-lmstudio","docId":"Components/bundles-lmstudio","unlisted":false},{"type":"link","label":"MariTalk","href":"/bundles-maritalk","docId":"Components/bundles-maritalk","unlisted":false},{"type":"link","label":"Mem0","href":"/bundles-mem0","docId":"Components/bundles-mem0","unlisted":false},{"type":"link","label":"Milvus","href":"/bundles-milvus","docId":"Components/bundles-milvus","unlisted":false},{"type":"link","label":"MistralAI","href":"/bundles-mistralai","docId":"Components/bundles-mistralai","unlisted":false},{"type":"link","label":"MongoDB","href":"/bundles-mongodb","docId":"Components/bundles-mongodb","unlisted":false},{"type":"link","label":"Notion","href":"/bundles-notion","docId":"Components/bundles-notion","unlisted":false},{"type":"link","label":"Novita","href":"/bundles-novita","docId":"Components/bundles-novita","unlisted":false},{"type":"link","label":"NVIDIA","href":"/bundles-nvidia","docId":"Components/bundles-nvidia","unlisted":false},{"type":"link","label":"Ollama","href":"/bundles-ollama","docId":"Components/bundles-ollama","unlisted":false},{"type":"link","label":"OpenAI","href":"/bundles-openai","docId":"Components/bundles-openai","unlisted":false},{"type":"link","label":"OpenRouter","href":"/bundles-openrouter","docId":"Components/bundles-openrouter","unlisted":false},{"type":"link","label":"Perplexity","href":"/bundles-perplexity","docId":"Components/bundles-perplexity","unlisted":false},{"type":"link","label":"pgvector","href":"/bundles-pgvector","docId":"Components/bundles-pgvector","unlisted":false},{"type":"link","label":"Pinecone","href":"/bundles-pinecone","docId":"Components/bundles-pinecone","unlisted":false},{"type":"link","label":"Qdrant","href":"/bundles-qdrant","docId":"Components/bundles-qdrant","unlisted":false},{"type":"link","label":"Redis","href":"/bundles-redis","docId":"Components/bundles-redis","unlisted":false},{"type":"link","label":"SambaNova","href":"/bundles-sambanova","docId":"Components/bundles-sambanova","unlisted":false},{"type":"link","label":"SearchApi","href":"/bundles-searchapi","docId":"Components/bundles-searchapi","unlisted":false},{"type":"link","label":"Serper","href":"/bundles-serper","docId":"Components/bundles-serper","unlisted":false},{"type":"link","label":"Supabase","href":"/bundles-supabase","docId":"Components/bundles-supabase","unlisted":false},{"type":"link","label":"Upstash","href":"/bundles-upstash","docId":"Components/bundles-upstash","unlisted":false},{"type":"link","label":"Vectara","href":"/bundles-vectara","docId":"Components/bundles-vectara","unlisted":false},{"type":"link","label":"Vertex AI","href":"/bundles-vertexai","docId":"Components/bundles-vertexai","unlisted":false},{"type":"link","label":"Weaviate","href":"/bundles-weaviate","docId":"Components/bundles-weaviate","unlisted":false},{"type":"link","label":"Wikipedia","href":"/bundles-wikipedia","docId":"Components/bundles-wikipedia","unlisted":false},{"type":"link","label":"xAI","href":"/bundles-xai","docId":"Components/bundles-xai","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Create custom Python components","href":"/components-custom-components","docId":"Components/components-custom-components","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"API reference","items":[{"type":"link","label":"Get started with the Langflow API","href":"/api-reference-api-examples","docId":"API-Reference/api-reference-api-examples","unlisted":false},{"type":"link","label":"Use the TypeScript client","href":"/typescript-client","docId":"API-Reference/typescript-client","unlisted":false},{"type":"link","label":"Flow trigger endpoints","href":"/api-flows-run","docId":"API-Reference/api-flows-run","unlisted":false},{"type":"link","label":"OpenAI Responses endpoints","href":"/api-openai-responses","docId":"API-Reference/api-openai-responses","unlisted":false},{"type":"link","label":"Flow management endpoints","href":"/api-flows","docId":"API-Reference/api-flows","unlisted":false},{"type":"link","label":"Files endpoints","href":"/api-files","docId":"API-Reference/api-files","unlisted":false},{"type":"link","label":"Projects endpoints","href":"/api-projects","docId":"API-Reference/api-projects","unlisted":false},{"type":"link","label":"Logs endpoints","href":"/api-logs","docId":"API-Reference/api-logs","unlisted":false},{"type":"link","label":"Monitor endpoints","href":"/api-monitor","docId":"API-Reference/api-monitor","unlisted":false},{"type":"link","label":"Build endpoints","href":"/api-build","docId":"API-Reference/api-build","unlisted":false},{"type":"link","label":"Users endpoints","href":"/api-users","docId":"API-Reference/api-users","unlisted":false},{"type":"link","label":"Langflow API specification","href":"/api"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Contribute","items":[{"type":"link","label":"Join the Langflow community","href":"/contributing-community","docId":"Contributing/contributing-community","unlisted":false},{"type":"link","label":"Contribute to Langflow","href":"/contributing-how-to-contribute","docId":"Contributing/contributing-how-to-contribute","unlisted":false},{"type":"link","label":"Contribute components","href":"/contributing-components","docId":"Contributing/contributing-components","unlisted":false},{"type":"link","label":"Contribute component tests","href":"/contributing-component-tests","docId":"Contributing/contributing-component-tests","unlisted":false},{"type":"link","label":"Contribute templates","href":"/contributing-templates","docId":"Contributing/contributing-templates","unlisted":false},{"type":"link","label":"Contribute bundles","href":"/contributing-bundles","docId":"Contributing/contributing-bundles","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Release notes","items":[{"type":"link","label":"Release notes","href":"/release-notes","docId":"Support/release-notes","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Support","items":[{"type":"link","label":"Troubleshoot","href":"/troubleshoot","docId":"Support/troubleshooting","unlisted":false},{"type":"link","label":"Get help and request enhancements","href":"/contributing-github-issues","docId":"Support/contributing-github-issues","unlisted":false},{"type":"link","label":"IBM Elite Support for Langflow","href":"/luna-for-langflow","docId":"Support/luna-for-langflow","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"html","className":"sidebar-ad","value":"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n Get started in minutes\\n Download Langflow Desktop\\n
\\n \\n "}]},"docs":{"Agents/agents":{"id":"Agents/agents","title":"Use Langflow agents","description":"Langflow\'s Agent component is critical for building agent flows.","sidebar":"docs"},"Agents/agents-tools":{"id":"Agents/agents-tools","title":"Configure tools for agents","description":"By default, Langflow agents only include the functionality built-in to their base LLM.","sidebar":"docs"},"Agents/mcp-client":{"id":"Agents/mcp-client","title":"Use Langflow as an MCP client","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","sidebar":"docs"},"Agents/mcp-component-astra":{"id":"Agents/mcp-component-astra","title":"Connect an Astra DB MCP server to Langflow","description":"This guide demonstrates how to use Langflow as an MCP client by using the MCP Tools component to run a DataStax Astra DB MCP server in an agent flow.","sidebar":"docs"},"Agents/mcp-server":{"id":"Agents/mcp-server","title":"Use Langflow as an MCP server","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","sidebar":"docs"},"API-Reference/api-build":{"id":"API-Reference/api-build","title":"Build endpoints","description":"The /build endpoints are used by Langflow\'s frontend visual editor code.","sidebar":"docs"},"API-Reference/api-files":{"id":"API-Reference/api-files","title":"Files endpoints","description":"Use the /files endpoints to move files between your local machine and Langflow.","sidebar":"docs"},"API-Reference/api-flows":{"id":"API-Reference/api-flows","title":"Flow management endpoints","description":"Use the /flows endpoint to create, read, update, and delete flows.","sidebar":"docs"},"API-Reference/api-flows-run":{"id":"API-Reference/api-flows-run","title":"Flow trigger endpoints","description":"Use the /run and /webhook endpoints to run flows.","sidebar":"docs"},"API-Reference/api-logs":{"id":"API-Reference/api-logs","title":"Logs endpoints","description":"Retrieve logs for your Langflow flows and server.","sidebar":"docs"},"API-Reference/api-monitor":{"id":"API-Reference/api-monitor","title":"Monitor endpoints","description":"The /monitor endpoints are for internal Langflow functionality, primarily related to running flows in the Playground, storing chat history, and generating flow logs.","sidebar":"docs"},"API-Reference/api-openai-responses":{"id":"API-Reference/api-openai-responses","title":"OpenAI Responses API","description":"Langflow includes an endpoint that is compatible with the OpenAI Responses API.","sidebar":"docs"},"API-Reference/api-projects":{"id":"API-Reference/api-projects","title":"Projects endpoints","description":"Use the /projects endpoint to create, read, update, and delete Langflow projects.","sidebar":"docs"},"API-Reference/api-reference-api-examples":{"id":"API-Reference/api-reference-api-examples","title":"Get started with the Langflow API","description":"You can use the Langflow API for programmatic interactions with Langflow, such as the following:","sidebar":"docs"},"API-Reference/api-users":{"id":"API-Reference/api-users","title":"Users endpoints","description":"Use the /users endpoint to manage user accounts in Langflow.","sidebar":"docs"},"API-Reference/typescript-client":{"id":"API-Reference/typescript-client","title":"Langflow TypeScript client","description":"The Langflow TypeScript client allows your TypeScript applications to programmatically interact with the Langflow API.","sidebar":"docs"},"Components/bundles-aiml":{"id":"Components/bundles-aiml","title":"AI/ML API","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-amazon":{"id":"Components/bundles-amazon","title":"Amazon","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-anthropic":{"id":"Components/bundles-anthropic","title":"Anthropic","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-apify":{"id":"Components/bundles-apify","title":"Apify","description":"Apify is a web scraping and data extraction platform with more than 3,000 ready-made cloud tools called Actors.","sidebar":"docs"},"Components/bundles-arxiv":{"id":"Components/bundles-arxiv","title":"arXiv","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-assemblyai":{"id":"Components/bundles-assemblyai","title":"AssemblyAI","description":"The AssemblyAI components allow you to apply powerful Speech AI models to your app for tasks like:","sidebar":"docs"},"Components/bundles-azure":{"id":"Components/bundles-azure","title":"Azure","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-baidu":{"id":"Components/bundles-baidu","title":"Baidu","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-bing":{"id":"Components/bundles-bing","title":"Bing","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cassandra":{"id":"Components/bundles-cassandra","title":"Cassandra","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-chroma":{"id":"Components/bundles-chroma","title":"Chroma","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cleanlab":{"id":"Components/bundles-cleanlab","title":"Cleanlab","description":"Cleanlab adds automation and trust to every data point going in and every prediction coming out of AI and RAG solutions.","sidebar":"docs"},"Components/bundles-clickhouse":{"id":"Components/bundles-clickhouse","title":"ClickHouse","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cloudflare":{"id":"Components/bundles-cloudflare","title":"Cloudflare","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cohere":{"id":"Components/bundles-cohere","title":"Cohere","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-composio":{"id":"Components/bundles-composio","title":"Composio","description":"Bundles contain custom components that support specific third-party integrations with Langflow."},"Components/bundles-couchbase":{"id":"Components/bundles-couchbase","title":"Couchbase","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-datastax":{"id":"Components/bundles-datastax","title":"DataStax","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-deepseek":{"id":"Components/bundles-deepseek","title":"DeepSeek","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-docling":{"id":"Components/bundles-docling","title":"Docling","description":"Langflow integrates with Docling through a bundle of components for parsing documents.","sidebar":"docs"},"Components/bundles-duckduckgo":{"id":"Components/bundles-duckduckgo","title":"DuckDuckGo","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-elastic":{"id":"Components/bundles-elastic","title":"Elastic","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-exa":{"id":"Components/bundles-exa","title":"Exa","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-faiss":{"id":"Components/bundles-faiss","title":"FAISS","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-glean":{"id":"Components/bundles-glean","title":"Glean","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-google":{"id":"Components/bundles-google","title":"Google components","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-groq":{"id":"Components/bundles-groq","title":"Groq","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-huggingface":{"id":"Components/bundles-huggingface","title":"Hugging Face","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-ibm":{"id":"Components/bundles-ibm","title":"IBM","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-icosacomputing":{"id":"Components/bundles-icosacomputing","title":"Icosa Computing","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-langchain":{"id":"Components/bundles-langchain","title":"LangChain","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-lmstudio":{"id":"Components/bundles-lmstudio","title":"LM Studio","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-maritalk":{"id":"Components/bundles-maritalk","title":"MariTalk","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-mem0":{"id":"Components/bundles-mem0","title":"Mem0","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-milvus":{"id":"Components/bundles-milvus","title":"Milvus","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-mistralai":{"id":"Components/bundles-mistralai","title":"MistralAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-mongodb":{"id":"Components/bundles-mongodb","title":"MongoDB","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-notion":{"id":"Components/bundles-notion","title":"Notion","description":"To use Notion components in Langflow, you first need to create a Notion integration and configure it with the necessary capabilities. This guide will walk you through the process of setting up a Notion integration and granting it access to your Notion databases, and then provide two examples of flows with Notion components.","sidebar":"docs"},"Components/bundles-novita":{"id":"Components/bundles-novita","title":"Novita","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-nvidia":{"id":"Components/bundles-nvidia","title":"NVIDIA","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-ollama":{"id":"Components/bundles-ollama","title":"Ollama","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-openai":{"id":"Components/bundles-openai","title":"OpenAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-openrouter":{"id":"Components/bundles-openrouter","title":"OpenRouter","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-perplexity":{"id":"Components/bundles-perplexity","title":"Perplexity","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-pgvector":{"id":"Components/bundles-pgvector","title":"pgvector","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-pinecone":{"id":"Components/bundles-pinecone","title":"Pinecone","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-qdrant":{"id":"Components/bundles-qdrant","title":"Qdrant","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-redis":{"id":"Components/bundles-redis","title":"Redis","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-sambanova":{"id":"Components/bundles-sambanova","title":"SambaNova","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-searchapi":{"id":"Components/bundles-searchapi","title":"SearchApi","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-serper":{"id":"Components/bundles-serper","title":"Serper","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-supabase":{"id":"Components/bundles-supabase","title":"Supabase","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-upstash":{"id":"Components/bundles-upstash","title":"Upstash","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-vectara":{"id":"Components/bundles-vectara","title":"Vectara","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-vertexai":{"id":"Components/bundles-vertexai","title":"Vertex AI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-weaviate":{"id":"Components/bundles-weaviate","title":"Weaviate","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-wikipedia":{"id":"Components/bundles-wikipedia","title":"Wikipedia","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-xai":{"id":"Components/bundles-xai","title":"xAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/components-agents":{"id":"Components/components-agents","title":"Agents","description":"Langflow\'s Agent and MCP Tools components are critical for building agent flows.","sidebar":"docs"},"Components/components-bundles":{"id":"Components/components-bundles","title":"About bundles","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/components-custom-components":{"id":"Components/components-custom-components","title":"Create custom Python components","description":"Custom components extend Langflow\'s functionality through Python classes that inherit from Component. This enables integration of new features, data manipulation, external services, and specialized tools.","sidebar":"docs"},"Components/components-data":{"id":"Components/components-data","title":"Data","description":"Data components bring data into your flows from various sources like files, API endpoints, and URLs.","sidebar":"docs"},"Components/components-embedding-models":{"id":"Components/components-embedding-models","title":"Embedding Model","description":"Embedding model components in Langflow generate text embeddings using a specified Large Language Model (LLM).","sidebar":"docs"},"Components/components-helpers":{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data and perform simple tasks in your flow.","sidebar":"docs"},"Components/components-io":{"id":"Components/components-io","title":"Input / Output","description":"Input and output components define where data enters and exits your flow, but they don\'t have identical functionality.","sidebar":"docs"},"Components/components-logic":{"id":"Components/components-logic","title":"Logic","description":"Logic components provide functionalities for routing, conditional processing, and flow management.","sidebar":"docs"},"Components/components-models":{"id":"Components/components-models","title":"Language Model","description":"Language model components in Langflow generate text using a specified Large Language Model (LLM).","sidebar":"docs"},"Components/components-processing":{"id":"Components/components-processing","title":"Processing components","description":"Processing components process and transform data within a flow.","sidebar":"docs"},"Components/components-prompts":{"id":"Components/components-prompts","title":"Prompt Template","description":"Use the Prompt Template core component to create a prompt that supplies instructions and context to an LLM or agent, separate from other input like chat messages and file uploads.","sidebar":"docs"},"Components/components-tools":{"id":"Components/components-tools","title":"Tools","description":"In Langflow version 1.5, the Tools category was deprecated.","sidebar":"docs"},"Components/concepts-components":{"id":"Components/concepts-components","title":"Components overview","description":"Components are the building blocks of your flows.","sidebar":"docs"},"Contributing/contributing-bundles":{"id":"Contributing/contributing-bundles","title":"Contribute bundles","description":"Bundles are groups of components that are related to a specific service provider.","sidebar":"docs"},"Contributing/contributing-community":{"id":"Contributing/contributing-community","title":"Join the Langflow community","description":"There are several ways you can interact with the Langflow community and learn more about the Langflow codebase.","sidebar":"docs"},"Contributing/contributing-component-tests":{"id":"Contributing/contributing-component-tests","title":"Contribute component tests","description":"This guide outlines how to structure and implement tests for application components to ensure consistency and adequate coverage.","sidebar":"docs"},"Contributing/contributing-components":{"id":"Contributing/contributing-components","title":"Contribute components","description":"New components are added as objects of the Component class.","sidebar":"docs"},"Contributing/contributing-how-to-contribute":{"id":"Contributing/contributing-how-to-contribute","title":"Contribute to Langflow","description":"This guide is intended to help you start contributing to Langflow.","sidebar":"docs"},"Contributing/contributing-templates":{"id":"Contributing/contributing-templates","title":"Contribute templates","description":"Follow these best practices when submitting a template to Langflow.","sidebar":"docs"},"Deployment/deployment-architecture":{"id":"Deployment/deployment-architecture","title":"Langflow architecture on Kubernetes","description":"There are two broad types of Langflow deployments:","sidebar":"docs"},"Deployment/deployment-caddyfile":{"id":"Deployment/deployment-caddyfile","title":"Deploy Langflow on a remote server","description":"Learn how to deploy Langflow on your own remote server with secure web access.","sidebar":"docs"},"Deployment/deployment-docker":{"id":"Deployment/deployment-docker","title":"Deploy Langflow on Docker","description":"Running applications in Docker containers ensures consistent behavior across different systems and eliminates dependency conflicts.","sidebar":"docs"},"Deployment/deployment-gcp":{"id":"Deployment/deployment-gcp","title":"Deploy Langflow on Google Cloud Platform","description":"This guide demonstrates how to deploy Langflow on Google Cloud Platform with a Cloud Shell script that walks through the process of setting up a Debian-based VM with the Langflow package, Nginx, and the necessary configurations to run the Langflow development environment in GCP.","sidebar":"docs"},"Deployment/deployment-hugging-face-spaces":{"id":"Deployment/deployment-hugging-face-spaces","title":"Deploy Langflow on Hugging Face Spaces","description":"This guide explains how to deploy Langflow on Hugging Face Spaces.","sidebar":"docs"},"Deployment/deployment-kubernetes-dev":{"id":"Deployment/deployment-kubernetes-dev","title":"Deploy the Langflow development environment on Kubernetes","description":"The Langflow integrated development environment (IDE) Helm chart is designed to provide a complete environment for developers to create, test, and debug their flows. It includes both the Langflow API and visual editor.","sidebar":"docs"},"Deployment/deployment-kubernetes-prod":{"id":"Deployment/deployment-kubernetes-prod","title":"Deploy the Langflow production environment on Kubernetes","description":"The Langflow runtime Helm chart is tailored for deploying applications in a production environment. It is focused on stability, performance, isolation, and security to ensure that applications run reliably and efficiently.","sidebar":"docs"},"Deployment/deployment-nginx-ssl":{"id":"Deployment/deployment-nginx-ssl","title":"Deploy Langflow with Nginx and SSL","description":"Deploy Langflow on a Linux-based server using Nginx as a reverse proxy, Let\'s Encrypt for SSL certificates, and Certbot for automated certificate management.","sidebar":"docs"},"Deployment/deployment-overview":{"id":"Deployment/deployment-overview","title":"Langflow deployment overview","description":"This section includes the different ways to bring your locally-built flows to the world.","sidebar":"docs"},"Deployment/deployment-prod-best-practices":{"id":"Deployment/deployment-prod-best-practices","title":"Best practices for Langflow on Kubernetes","description":"This guide provides best practices for deploying Langflow in production environments on Kubernetes.","sidebar":"docs"},"Deployment/deployment-public-server":{"id":"Deployment/deployment-public-server","title":"Deploy a public Langflow server","description":"By default, your Langflow server at http7860 isn\'t exposed to the public internet.","sidebar":"docs"},"Deployment/deployment-railway":{"id":"Deployment/deployment-railway","title":"Deploy Langflow on Railway","description":"Deploy Langflow to Railway using a one-click template","sidebar":"docs"},"Deployment/deployment-render":{"id":"Deployment/deployment-render","title":"Deploy Langflow on Render","description":"This guide explains how to deploy Langflow on Render, a cloud platform for deploying web applications and APIs.","sidebar":"docs"},"Deployment/develop-application":{"id":"Deployment/develop-application","title":"Containerize a Langflow application","description":"Designing flows in the visual editor is only the first step in building an application that uses Langflow.","sidebar":"docs"},"Develop/api-keys-and-authentication":{"id":"Develop/api-keys-and-authentication","title":"API keys and authentication","description":"Never expose Langflow ports directly to the internet without proper security measures.","sidebar":"docs"},"Develop/concepts-file-management":{"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.","sidebar":"docs"},"Develop/concepts-voice-mode":{"id":"Develop/concepts-voice-mode","title":"Use voice mode","description":"Voice mode is not available in Langflow Desktop.","sidebar":"docs"},"Develop/configuration-cli":{"id":"Develop/configuration-cli","title":"Langflow CLI","description":"The Langflow command line interface is the main interface for managing and running the Langflow server.","sidebar":"docs"},"Develop/configuration-custom-database":{"id":"Develop/configuration-custom-database","title":"Configure an external PostgreSQL database","description":"Langflow\'s default database is SQLite, but you can configure Langflow to use PostgreSQL instead.","sidebar":"docs"},"Develop/configuration-global-variables":{"id":"Develop/configuration-global-variables","title":"Global variables","description":"Use global variables to store and reuse credentials and generic values across all of your flows.","sidebar":"docs"},"Develop/contributing-telemetry":{"id":"Develop/contributing-telemetry","title":"Telemetry","description":"Langflow uses anonymous telemetry to collect statistics about feature usage and performance.","sidebar":"docs"},"Develop/data-types":{"id":"Develop/data-types","title":"Langflow data types","description":"Langflow components are designed to accept and produce specific types of inputs and outputs.","sidebar":"docs"},"Develop/enterprise-database-guide":{"id":"Develop/enterprise-database-guide","title":"Langflow database guide for enterprise DBAs","description":"The Langflow database stores data that is essential for more Langflow operations, including startup, flow execution, user interactions, and administrative tasks.","sidebar":"docs"},"Develop/environment-variables":{"id":"Develop/environment-variables","title":"Environment variables","description":"In general, environment variables, like LANGFLOWPORT or LANGFLOWLOG_LEVEL, configure how Langflow runs.","sidebar":"docs"},"Develop/install-custom-dependencies":{"id":"Develop/install-custom-dependencies","title":"Install custom dependencies","description":"Langflow provides optional dependency groups and support for custom dependencies to extend Langflow functionality. This guide covers how to add dependencies for different Langflow installations, including Langflow Desktop and Langflow OSS.","sidebar":"docs"},"Develop/integrations-arize":{"id":"Develop/integrations-arize","title":"Arize","description":"Arize is a tool built on OpenTelemetry and OpenInference for monitoring and optimizing LLM applications.","sidebar":"docs"},"Develop/integrations-instana-traceloop":{"id":"Develop/integrations-instana-traceloop","title":"Traceloop","description":"Instrument Langflow with the Traceloop SDK, and export traces and metrics to Instana using OpenTelemetry.","sidebar":"docs"},"Develop/integrations-langfuse":{"id":"Develop/integrations-langfuse","title":"Langfuse","description":"Langfuse is an open-source platform for LLM observability. It provides tracing and monitoring capabilities for AI applications, helping developers debug, analyze, and optimize their AI systems. Langfuse integrates with various tools and frameworks, including workflow builders and runtimes like Langflow.","sidebar":"docs"},"Develop/integrations-langsmith":{"id":"Develop/integrations-langsmith","title":"LangSmith","description":"LangSmith is a full-lifecycle DevOps service from LangChain that provides monitoring and observability. To integrate with Langflow, add your LangChain API key and configuration as Langflow environment variables, and then start Langflow.","sidebar":"docs"},"Develop/integrations-langwatch":{"id":"Develop/integrations-langwatch","title":"LangWatch","description":"LangWatch is an all-in-one LLMOps platform for monitoring, observability, analytics, evaluations and alerting for getting user insights and improve your LLM workflows.","sidebar":"docs"},"Develop/integrations-opik":{"id":"Develop/integrations-opik","title":"Opik","description":"Opik is an open-source platform designed for evaluating, testing, and monitoring large language model (LLM) applications. Developed by Comet, it aims to facilitate more intuitive collaboration, testing, and monitoring of LLM-based applications.","sidebar":"docs"},"Develop/logging":{"id":"Develop/logging","title":"Logs","description":"Langflow produces logs for individual flows and the Langflow application itself using the structlog library for logging.","sidebar":"docs"},"Develop/memory":{"id":"Develop/memory","title":"Memory management options","description":"Langflow provides flexible memory management options for storage and retrieval of data relevant to your flows and your Langflow server.","sidebar":"docs"},"Develop/session-id":{"id":"Develop/session-id","title":"Use session ID to manage communication between components","description":"Session ID is a unique identifier for client/server connections. A single session equals the duration of a client\'s connection to a server.","sidebar":"docs"},"Flows/concepts-flows":{"id":"Flows/concepts-flows","title":"Build flows","description":"A flow is a functional representation of an application workflow.","sidebar":"docs"},"Flows/concepts-flows-import":{"id":"Flows/concepts-flows-import","title":"Import and export flows","description":"You can export flows to transfer them between Langflow instances, share them with others, or create backups.","sidebar":"docs"},"Flows/concepts-overview":{"id":"Flows/concepts-overview","title":"Use the visual editor","description":"You use Langflow\'s visual editor to create, test, and share flows, which are functional representations of application workflows.","sidebar":"docs"},"Flows/concepts-playground":{"id":"Flows/concepts-playground","title":"Test flows in the Playground","description":"Langflow\'s Playground is a dynamic interface you can use to test your LLM-based flows in real-time.","sidebar":"docs"},"Flows/concepts-publish":{"id":"Flows/concepts-publish","title":"Trigger flows with the Langflow API","description":"After you build a flow, you probably want to run it within an application, such as a chatbot within a mobile app or website.","sidebar":"docs"},"Flows/webhook":{"id":"Flows/webhook","title":"Trigger flows with webhooks","description":"You can use the Webhook component to start a flow run in response to an external event.","sidebar":"docs"},"Get-Started/about-langflow":{"id":"Get-Started/about-langflow","title":"What is Langflow?","description":"Langflow is an open-source, Python-based, customizable framework for building AI applications.","sidebar":"docs"},"Get-Started/get-started-installation":{"id":"Get-Started/get-started-installation","title":"Install Langflow","description":"Langflow can be installed in multiple ways:","sidebar":"docs"},"Get-Started/get-started-quickstart":{"id":"Get-Started/get-started-quickstart","title":"Quickstart","description":"Get started with Langflow by loading a template flow, running it, and then serving it at the /run API endpoint.","sidebar":"docs"},"Support/contributing-github-issues":{"id":"Support/contributing-github-issues","title":"Get help and request enhancements","description":"The Langflow GitHub repository is an integral part of the Langflow community.","sidebar":"docs"},"Support/luna-for-langflow":{"id":"Support/luna-for-langflow","title":"IBM Elite Support for Langflow","description":"IBM Elite Support offers enterprise support for Langflow to help you develop and deploy Langflow applications with confidence.","sidebar":"docs"},"Support/release-notes":{"id":"Support/release-notes","title":"Langflow release notes","description":"This page summarizes significant changes to Langflow in each release.","sidebar":"docs"},"Support/troubleshooting":{"id":"Support/troubleshooting","title":"Troubleshoot Langflow","description":"This page provides troubleshooting advice for issues you might encounter when using Langflow or contributing to Langflow.","sidebar":"docs"},"Tutorials/agent":{"id":"Tutorials/agent","title":"Connect applications to agents","description":"This tutorial shows you how to connect a JavaScript application to a Langflow agent.","sidebar":"docs"},"Tutorials/chat-with-files":{"id":"Tutorials/chat-with-files","title":"Create a chatbot that can ingest files","description":"This tutorial shows you how to build a chatbot that can read and answer questions about files you upload, such as meeting notes or job applications.","sidebar":"docs"},"Tutorials/chat-with-rag":{"id":"Tutorials/chat-with-rag","title":"Create a vector RAG chatbot","description":"This tutorial demonstrates how you can use Langflow to create a chatbot application that uses Retrieval Augmented Generation (RAG) to embed your data as vectors in a vector database, and then chat with the data.","sidebar":"docs"},"Tutorials/mcp-tutorial":{"id":"Tutorials/mcp-tutorial","title":"Connect to MCP servers from your application","description":"This tutorial shows you how to connect MCP servers to your applications using Langflow\'s MCP Tools component.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.c448c82a.js b/assets/js/22dd74f7.c448c82a.js new file mode 100644 index 0000000000..b3e5c64d3b --- /dev/null +++ b/assets/js/22dd74f7.c448c82a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1567],{55226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Get started","items":[{"type":"link","label":"About Langflow","href":"/","docId":"Get-Started/about-langflow","unlisted":false},{"type":"link","label":"Install Langflow","href":"/get-started-installation","docId":"Get-Started/get-started-installation","unlisted":false},{"type":"link","label":"Quickstart","href":"/get-started-quickstart","docId":"Get-Started/get-started-quickstart","unlisted":false},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Create a vector RAG chatbot","href":"/chat-with-rag","docId":"Tutorials/chat-with-rag","unlisted":false},{"type":"link","label":"Create a chatbot that can ingest files","href":"/chat-with-files","docId":"Tutorials/chat-with-files","unlisted":false},{"type":"link","label":"Connect applications to agents","href":"/agent-tutorial","docId":"Tutorials/agent","unlisted":false},{"type":"link","label":"Connect to MCP servers from your application","href":"/mcp-tutorial","docId":"Tutorials/mcp-tutorial","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Flows","items":[{"type":"link","label":"Use the visual editor","href":"/concepts-overview","docId":"Flows/concepts-overview","unlisted":false},{"type":"link","label":"Build flows","href":"/concepts-flows","docId":"Flows/concepts-flows","unlisted":false},{"type":"category","label":"Run flows","items":[{"type":"link","label":"Trigger flows with the Langflow API","href":"/concepts-publish","docId":"Flows/concepts-publish","unlisted":false},{"type":"link","label":"Trigger flows with webhooks","href":"/webhook","docId":"Flows/webhook","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Test flows","href":"/concepts-playground","docId":"Flows/concepts-playground","unlisted":false},{"type":"link","label":"Import and export flows","href":"/concepts-flows-import","docId":"Flows/concepts-flows-import","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Agents","items":[{"type":"link","label":"Use Langflow agents","href":"/agents","docId":"Agents/agents","unlisted":false},{"type":"link","label":"Configure tools for agents","href":"/agents-tools","docId":"Agents/agents-tools","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Model Context Protocol (MCP)","items":[{"type":"link","label":"Use Langflow as an MCP client","href":"/mcp-client","docId":"Agents/mcp-client","unlisted":false},{"type":"link","label":"Use Langflow as an MCP server","href":"/mcp-server","docId":"Agents/mcp-server","unlisted":false},{"type":"link","label":"Connect an Astra DB MCP server to Langflow","href":"/mcp-component-astra","docId":"Agents/mcp-component-astra","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Develop","items":[{"type":"link","label":"API keys and authentication","href":"/api-keys-and-authentication","docId":"Develop/api-keys-and-authentication","unlisted":false},{"type":"link","label":"Install custom dependencies","href":"/install-custom-dependencies","docId":"Develop/install-custom-dependencies","unlisted":false},{"type":"link","label":"Global variables","href":"/configuration-global-variables","docId":"Develop/configuration-global-variables","unlisted":false},{"type":"link","label":"Environment variables","href":"/environment-variables","docId":"Develop/environment-variables","unlisted":false},{"type":"category","label":"Storage and memory","items":[{"type":"link","label":"Manage files","href":"/concepts-file-management","docId":"Develop/concepts-file-management","unlisted":false},{"type":"link","label":"Manage memory","href":"/memory","docId":"Develop/memory","unlisted":false},{"type":"link","label":"Use Session IDs","href":"/session-id","docId":"Develop/session-id","unlisted":false},{"type":"link","label":"Configure an external PostgreSQL database","href":"/configuration-custom-database","docId":"Develop/configuration-custom-database","unlisted":false},{"type":"link","label":"Database guide for enterprise administrators","href":"/enterprise-database-guide","docId":"Develop/enterprise-database-guide","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Observability","items":[{"type":"link","label":"Logs","href":"/logging","docId":"Develop/logging","unlisted":false},{"type":"category","label":"Monitoring","items":[{"type":"link","label":"Arize","href":"/integrations-arize","docId":"Develop/integrations-arize","unlisted":false},{"type":"link","label":"Langfuse","href":"/integrations-langfuse","docId":"Develop/integrations-langfuse","unlisted":false},{"type":"link","label":"LangSmith","href":"/integrations-langsmith","docId":"Develop/integrations-langsmith","unlisted":false},{"type":"link","label":"LangWatch","href":"/integrations-langwatch","docId":"Develop/integrations-langwatch","unlisted":false},{"type":"link","label":"Opik","href":"/integrations-opik","docId":"Develop/integrations-opik","unlisted":false},{"type":"link","label":"Traceloop","href":"/integrations-instana-traceloop","docId":"Develop/integrations-instana-traceloop","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Telemetry","href":"/contributing-telemetry","docId":"Develop/contributing-telemetry","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Use Langflow data types","href":"/data-types","docId":"Develop/data-types","unlisted":false},{"type":"link","label":"Use voice mode","href":"/concepts-voice-mode","docId":"Develop/concepts-voice-mode","unlisted":false},{"type":"link","label":"Use the Langflow CLI","href":"/configuration-cli","docId":"Develop/configuration-cli","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Deploy","items":[{"type":"link","label":"Langflow deployment overview","href":"/deployment-overview","docId":"Deployment/deployment-overview","unlisted":false},{"type":"link","label":"Deploy a public Langflow server","href":"/deployment-public-server","docId":"Deployment/deployment-public-server","unlisted":false},{"type":"link","label":"Deploy Langflow with Nginx and SSL","href":"/deployment-nginx-ssl","docId":"Deployment/deployment-nginx-ssl","unlisted":false},{"type":"category","label":"Containerized deployments","items":[{"type":"link","label":"Containerize a Langflow application","href":"/develop-application","docId":"Deployment/develop-application","unlisted":false},{"type":"link","label":"Langflow Docker images","href":"/deployment-docker","docId":"Deployment/deployment-docker","unlisted":false},{"type":"link","label":"Deploy Langflow on a remote server","href":"/deployment-caddyfile","docId":"Deployment/deployment-caddyfile","unlisted":false},{"type":"category","label":"Kubernetes","items":[{"type":"link","label":"Deployment architecture","href":"/deployment-architecture","docId":"Deployment/deployment-architecture","unlisted":false},{"type":"link","label":"Best practices","href":"/deployment-prod-best-practices","docId":"Deployment/deployment-prod-best-practices","unlisted":false},{"type":"link","label":"Deploy in development","href":"/deployment-kubernetes-dev","docId":"Deployment/deployment-kubernetes-dev","unlisted":false},{"type":"link","label":"Deploy in production","href":"/deployment-kubernetes-prod","docId":"Deployment/deployment-kubernetes-prod","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Cloud platforms","items":[{"type":"link","label":"Google Cloud Platform","href":"/deployment-gcp","docId":"Deployment/deployment-gcp","unlisted":false},{"type":"link","label":"Hugging Face Spaces","href":"/deployment-hugging-face-spaces","docId":"Deployment/deployment-hugging-face-spaces","unlisted":false},{"type":"link","label":"Railway","href":"/deployment-railway","docId":"Deployment/deployment-railway","unlisted":false},{"type":"link","label":"Render","href":"/deployment-render","docId":"Deployment/deployment-render","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Security","href":"/security","docId":"Deployment/security","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Components reference","items":[{"type":"link","label":"Components overview","href":"/concepts-components","docId":"Components/concepts-components","unlisted":false},{"type":"category","label":"Core components","items":[{"type":"link","label":"Input / Output","href":"/components-io","docId":"Components/components-io","unlisted":false},{"type":"link","label":"Agents","href":"/components-agents","docId":"Components/components-agents","unlisted":false},{"type":"category","label":"Models","items":[{"type":"link","label":"Language Model","href":"/components-models","docId":"Components/components-models","unlisted":false},{"type":"link","label":"Embedding Model","href":"/components-embedding-models","docId":"Components/components-embedding-models","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Data","href":"/components-data","docId":"Components/components-data","unlisted":false},{"type":"category","label":"Processing","items":[{"type":"link","label":"Processing components","href":"/components-processing","docId":"Components/components-processing","unlisted":false},{"type":"link","label":"Prompt Template","href":"/components-prompts","docId":"Components/components-prompts","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Logic","href":"/components-logic","docId":"Components/components-logic","unlisted":false},{"type":"link","label":"Helpers","href":"/components-helpers","docId":"Components/components-helpers","unlisted":false},{"type":"link","label":"Tools","href":"/components-tools","docId":"Components/components-tools","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bundles","items":[{"type":"link","label":"About bundles","href":"/components-bundle-components","docId":"Components/components-bundles","unlisted":false},{"type":"link","label":"AI/ML API","href":"/bundles-aiml","docId":"Components/bundles-aiml","unlisted":false},{"type":"link","label":"Amazon","href":"/bundles-amazon","docId":"Components/bundles-amazon","unlisted":false},{"type":"link","label":"Anthropic","href":"/bundles-anthropic","docId":"Components/bundles-anthropic","unlisted":false},{"type":"link","label":"Apify","href":"/bundles-apify","docId":"Components/bundles-apify","unlisted":false},{"type":"link","label":"arXiv","href":"/bundles-arxiv","docId":"Components/bundles-arxiv","unlisted":false},{"type":"link","label":"AssemblyAI","href":"/bundles-assemblyai","docId":"Components/bundles-assemblyai","unlisted":false},{"type":"link","label":"Azure","href":"/bundles-azure","docId":"Components/bundles-azure","unlisted":false},{"type":"link","label":"Baidu","href":"/bundles-baidu","docId":"Components/bundles-baidu","unlisted":false},{"type":"link","label":"Bing","href":"/bundles-bing","docId":"Components/bundles-bing","unlisted":false},{"type":"link","label":"Cassandra","href":"/bundles-cassandra","docId":"Components/bundles-cassandra","unlisted":false},{"type":"link","label":"Chroma","href":"/bundles-chroma","docId":"Components/bundles-chroma","unlisted":false},{"type":"link","label":"Cleanlab","href":"/bundles-cleanlab","docId":"Components/bundles-cleanlab","unlisted":false},{"type":"link","label":"ClickHouse","href":"/bundles-clickhouse","docId":"Components/bundles-clickhouse","unlisted":false},{"type":"link","label":"Cloudflare","href":"/bundles-cloudflare","docId":"Components/bundles-cloudflare","unlisted":false},{"type":"link","label":"Cohere","href":"/bundles-cohere","docId":"Components/bundles-cohere","unlisted":false},{"type":"link","label":"Couchbase","href":"/bundles-couchbase","docId":"Components/bundles-couchbase","unlisted":false},{"type":"link","label":"DataStax","href":"/bundles-datastax","docId":"Components/bundles-datastax","unlisted":false},{"type":"link","label":"DeepSeek","href":"/bundles-deepseek","docId":"Components/bundles-deepseek","unlisted":false},{"type":"link","label":"Docling","href":"/bundles-docling","docId":"Components/bundles-docling","unlisted":false},{"type":"link","label":"DuckDuckGo","href":"/bundles-duckduckgo","docId":"Components/bundles-duckduckgo","unlisted":false},{"type":"link","label":"Elastic","href":"/bundles-elastic","docId":"Components/bundles-elastic","unlisted":false},{"type":"link","label":"Exa","href":"/bundles-exa","docId":"Components/bundles-exa","unlisted":false},{"type":"link","label":"FAISS","href":"/bundles-faiss","docId":"Components/bundles-faiss","unlisted":false},{"type":"link","label":"Glean","href":"/bundles-glean","docId":"Components/bundles-glean","unlisted":false},{"type":"link","label":"Google components","href":"/bundles-google","docId":"Components/bundles-google","unlisted":false},{"type":"link","label":"Groq","href":"/bundles-groq","docId":"Components/bundles-groq","unlisted":false},{"type":"link","label":"Hugging Face","href":"/bundles-huggingface","docId":"Components/bundles-huggingface","unlisted":false},{"type":"link","label":"IBM","href":"/bundles-ibm","docId":"Components/bundles-ibm","unlisted":false},{"type":"link","label":"Icosa Computing","href":"/bundles-icosacomputing","docId":"Components/bundles-icosacomputing","unlisted":false},{"type":"link","label":"LangChain","href":"/bundles-langchain","docId":"Components/bundles-langchain","unlisted":false},{"type":"link","label":"LM Studio","href":"/bundles-lmstudio","docId":"Components/bundles-lmstudio","unlisted":false},{"type":"link","label":"MariTalk","href":"/bundles-maritalk","docId":"Components/bundles-maritalk","unlisted":false},{"type":"link","label":"Mem0","href":"/bundles-mem0","docId":"Components/bundles-mem0","unlisted":false},{"type":"link","label":"Milvus","href":"/bundles-milvus","docId":"Components/bundles-milvus","unlisted":false},{"type":"link","label":"MistralAI","href":"/bundles-mistralai","docId":"Components/bundles-mistralai","unlisted":false},{"type":"link","label":"MongoDB","href":"/bundles-mongodb","docId":"Components/bundles-mongodb","unlisted":false},{"type":"link","label":"Notion","href":"/bundles-notion","docId":"Components/bundles-notion","unlisted":false},{"type":"link","label":"Novita","href":"/bundles-novita","docId":"Components/bundles-novita","unlisted":false},{"type":"link","label":"NVIDIA","href":"/bundles-nvidia","docId":"Components/bundles-nvidia","unlisted":false},{"type":"link","label":"Ollama","href":"/bundles-ollama","docId":"Components/bundles-ollama","unlisted":false},{"type":"link","label":"OpenAI","href":"/bundles-openai","docId":"Components/bundles-openai","unlisted":false},{"type":"link","label":"OpenRouter","href":"/bundles-openrouter","docId":"Components/bundles-openrouter","unlisted":false},{"type":"link","label":"Perplexity","href":"/bundles-perplexity","docId":"Components/bundles-perplexity","unlisted":false},{"type":"link","label":"pgvector","href":"/bundles-pgvector","docId":"Components/bundles-pgvector","unlisted":false},{"type":"link","label":"Pinecone","href":"/bundles-pinecone","docId":"Components/bundles-pinecone","unlisted":false},{"type":"link","label":"Qdrant","href":"/bundles-qdrant","docId":"Components/bundles-qdrant","unlisted":false},{"type":"link","label":"Redis","href":"/bundles-redis","docId":"Components/bundles-redis","unlisted":false},{"type":"link","label":"SambaNova","href":"/bundles-sambanova","docId":"Components/bundles-sambanova","unlisted":false},{"type":"link","label":"SearchApi","href":"/bundles-searchapi","docId":"Components/bundles-searchapi","unlisted":false},{"type":"link","label":"Serper","href":"/bundles-serper","docId":"Components/bundles-serper","unlisted":false},{"type":"link","label":"Supabase","href":"/bundles-supabase","docId":"Components/bundles-supabase","unlisted":false},{"type":"link","label":"Upstash","href":"/bundles-upstash","docId":"Components/bundles-upstash","unlisted":false},{"type":"link","label":"Vectara","href":"/bundles-vectara","docId":"Components/bundles-vectara","unlisted":false},{"type":"link","label":"Vertex AI","href":"/bundles-vertexai","docId":"Components/bundles-vertexai","unlisted":false},{"type":"link","label":"Weaviate","href":"/bundles-weaviate","docId":"Components/bundles-weaviate","unlisted":false},{"type":"link","label":"Wikipedia","href":"/bundles-wikipedia","docId":"Components/bundles-wikipedia","unlisted":false},{"type":"link","label":"xAI","href":"/bundles-xai","docId":"Components/bundles-xai","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Create custom Python components","href":"/components-custom-components","docId":"Components/components-custom-components","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"API reference","items":[{"type":"link","label":"Get started with the Langflow API","href":"/api-reference-api-examples","docId":"API-Reference/api-reference-api-examples","unlisted":false},{"type":"link","label":"Use the TypeScript client","href":"/typescript-client","docId":"API-Reference/typescript-client","unlisted":false},{"type":"link","label":"Flow trigger endpoints","href":"/api-flows-run","docId":"API-Reference/api-flows-run","unlisted":false},{"type":"link","label":"OpenAI Responses endpoints","href":"/api-openai-responses","docId":"API-Reference/api-openai-responses","unlisted":false},{"type":"link","label":"Flow management endpoints","href":"/api-flows","docId":"API-Reference/api-flows","unlisted":false},{"type":"link","label":"Files endpoints","href":"/api-files","docId":"API-Reference/api-files","unlisted":false},{"type":"link","label":"Projects endpoints","href":"/api-projects","docId":"API-Reference/api-projects","unlisted":false},{"type":"link","label":"Logs endpoints","href":"/api-logs","docId":"API-Reference/api-logs","unlisted":false},{"type":"link","label":"Monitor endpoints","href":"/api-monitor","docId":"API-Reference/api-monitor","unlisted":false},{"type":"link","label":"Build endpoints","href":"/api-build","docId":"API-Reference/api-build","unlisted":false},{"type":"link","label":"Users endpoints","href":"/api-users","docId":"API-Reference/api-users","unlisted":false},{"type":"link","label":"Langflow API specification","href":"/api"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Contribute","items":[{"type":"link","label":"Join the Langflow community","href":"/contributing-community","docId":"Contributing/contributing-community","unlisted":false},{"type":"link","label":"Contribute to Langflow","href":"/contributing-how-to-contribute","docId":"Contributing/contributing-how-to-contribute","unlisted":false},{"type":"link","label":"Contribute components","href":"/contributing-components","docId":"Contributing/contributing-components","unlisted":false},{"type":"link","label":"Contribute component tests","href":"/contributing-component-tests","docId":"Contributing/contributing-component-tests","unlisted":false},{"type":"link","label":"Contribute templates","href":"/contributing-templates","docId":"Contributing/contributing-templates","unlisted":false},{"type":"link","label":"Contribute bundles","href":"/contributing-bundles","docId":"Contributing/contributing-bundles","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Release notes","items":[{"type":"link","label":"Release notes","href":"/release-notes","docId":"Support/release-notes","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Support","items":[{"type":"link","label":"Troubleshoot","href":"/troubleshoot","docId":"Support/troubleshooting","unlisted":false},{"type":"link","label":"Get help and request enhancements","href":"/contributing-github-issues","docId":"Support/contributing-github-issues","unlisted":false},{"type":"link","label":"IBM Elite Support for Langflow","href":"/luna-for-langflow","docId":"Support/luna-for-langflow","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"html","className":"sidebar-ad","value":"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n Get started in minutes\\n Download Langflow Desktop\\n
\\n
\\n "}]},"docs":{"Agents/agents":{"id":"Agents/agents","title":"Use Langflow agents","description":"Langflow\'s Agent component is critical for building agent flows.","sidebar":"docs"},"Agents/agents-tools":{"id":"Agents/agents-tools","title":"Configure tools for agents","description":"By default, Langflow agents only include the functionality built-in to their base LLM.","sidebar":"docs"},"Agents/mcp-client":{"id":"Agents/mcp-client","title":"Use Langflow as an MCP client","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","sidebar":"docs"},"Agents/mcp-component-astra":{"id":"Agents/mcp-component-astra","title":"Connect an Astra DB MCP server to Langflow","description":"This guide demonstrates how to use Langflow as an MCP client by using the MCP Tools component to run a DataStax Astra DB MCP server in an agent flow.","sidebar":"docs"},"Agents/mcp-server":{"id":"Agents/mcp-server","title":"Use Langflow as an MCP server","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","sidebar":"docs"},"API-Reference/api-build":{"id":"API-Reference/api-build","title":"Build endpoints","description":"The /build endpoints are used by Langflow\'s frontend visual editor code.","sidebar":"docs"},"API-Reference/api-files":{"id":"API-Reference/api-files","title":"Files endpoints","description":"Use the /files endpoints to move files between your local machine and Langflow.","sidebar":"docs"},"API-Reference/api-flows":{"id":"API-Reference/api-flows","title":"Flow management endpoints","description":"Use the /flows endpoint to create, read, update, and delete flows.","sidebar":"docs"},"API-Reference/api-flows-run":{"id":"API-Reference/api-flows-run","title":"Flow trigger endpoints","description":"Use the /run and /webhook endpoints to run flows.","sidebar":"docs"},"API-Reference/api-logs":{"id":"API-Reference/api-logs","title":"Logs endpoints","description":"Retrieve logs for your Langflow flows and server.","sidebar":"docs"},"API-Reference/api-monitor":{"id":"API-Reference/api-monitor","title":"Monitor endpoints","description":"The /monitor endpoints are for internal Langflow functionality, primarily related to running flows in the Playground, storing chat history, and generating flow logs.","sidebar":"docs"},"API-Reference/api-openai-responses":{"id":"API-Reference/api-openai-responses","title":"OpenAI Responses API","description":"Langflow includes an endpoint that is compatible with the OpenAI Responses API.","sidebar":"docs"},"API-Reference/api-projects":{"id":"API-Reference/api-projects","title":"Projects endpoints","description":"Use the /projects endpoint to create, read, update, and delete Langflow projects.","sidebar":"docs"},"API-Reference/api-reference-api-examples":{"id":"API-Reference/api-reference-api-examples","title":"Get started with the Langflow API","description":"You can use the Langflow API for programmatic interactions with Langflow, such as the following:","sidebar":"docs"},"API-Reference/api-users":{"id":"API-Reference/api-users","title":"Users endpoints","description":"Use the /users endpoint to manage user accounts in Langflow.","sidebar":"docs"},"API-Reference/typescript-client":{"id":"API-Reference/typescript-client","title":"Langflow TypeScript client","description":"The Langflow TypeScript client allows your TypeScript applications to programmatically interact with the Langflow API.","sidebar":"docs"},"Components/bundles-aiml":{"id":"Components/bundles-aiml","title":"AI/ML API","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-amazon":{"id":"Components/bundles-amazon","title":"Amazon","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-anthropic":{"id":"Components/bundles-anthropic","title":"Anthropic","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-apify":{"id":"Components/bundles-apify","title":"Apify","description":"Apify is a web scraping and data extraction platform with more than 3,000 ready-made cloud tools called Actors.","sidebar":"docs"},"Components/bundles-arxiv":{"id":"Components/bundles-arxiv","title":"arXiv","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-assemblyai":{"id":"Components/bundles-assemblyai","title":"AssemblyAI","description":"The AssemblyAI components allow you to apply powerful Speech AI models to your app for tasks like:","sidebar":"docs"},"Components/bundles-azure":{"id":"Components/bundles-azure","title":"Azure","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-baidu":{"id":"Components/bundles-baidu","title":"Baidu","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-bing":{"id":"Components/bundles-bing","title":"Bing","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cassandra":{"id":"Components/bundles-cassandra","title":"Cassandra","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-chroma":{"id":"Components/bundles-chroma","title":"Chroma","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cleanlab":{"id":"Components/bundles-cleanlab","title":"Cleanlab","description":"Cleanlab adds automation and trust to every data point going in and every prediction coming out of AI and RAG solutions.","sidebar":"docs"},"Components/bundles-clickhouse":{"id":"Components/bundles-clickhouse","title":"ClickHouse","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cloudflare":{"id":"Components/bundles-cloudflare","title":"Cloudflare","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-cohere":{"id":"Components/bundles-cohere","title":"Cohere","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-composio":{"id":"Components/bundles-composio","title":"Composio","description":"Bundles contain custom components that support specific third-party integrations with Langflow."},"Components/bundles-couchbase":{"id":"Components/bundles-couchbase","title":"Couchbase","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-datastax":{"id":"Components/bundles-datastax","title":"DataStax","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-deepseek":{"id":"Components/bundles-deepseek","title":"DeepSeek","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-docling":{"id":"Components/bundles-docling","title":"Docling","description":"Langflow integrates with Docling through a bundle of components for parsing documents.","sidebar":"docs"},"Components/bundles-duckduckgo":{"id":"Components/bundles-duckduckgo","title":"DuckDuckGo","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-elastic":{"id":"Components/bundles-elastic","title":"Elastic","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-exa":{"id":"Components/bundles-exa","title":"Exa","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-faiss":{"id":"Components/bundles-faiss","title":"FAISS","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-glean":{"id":"Components/bundles-glean","title":"Glean","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-google":{"id":"Components/bundles-google","title":"Google components","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-groq":{"id":"Components/bundles-groq","title":"Groq","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-huggingface":{"id":"Components/bundles-huggingface","title":"Hugging Face","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-ibm":{"id":"Components/bundles-ibm","title":"IBM","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-icosacomputing":{"id":"Components/bundles-icosacomputing","title":"Icosa Computing","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-langchain":{"id":"Components/bundles-langchain","title":"LangChain","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-lmstudio":{"id":"Components/bundles-lmstudio","title":"LM Studio","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-maritalk":{"id":"Components/bundles-maritalk","title":"MariTalk","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-mem0":{"id":"Components/bundles-mem0","title":"Mem0","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-milvus":{"id":"Components/bundles-milvus","title":"Milvus","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-mistralai":{"id":"Components/bundles-mistralai","title":"MistralAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-mongodb":{"id":"Components/bundles-mongodb","title":"MongoDB","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-notion":{"id":"Components/bundles-notion","title":"Notion","description":"To use Notion components in Langflow, you first need to create a Notion integration and configure it with the necessary capabilities. This guide will walk you through the process of setting up a Notion integration and granting it access to your Notion databases, and then provide two examples of flows with Notion components.","sidebar":"docs"},"Components/bundles-novita":{"id":"Components/bundles-novita","title":"Novita","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-nvidia":{"id":"Components/bundles-nvidia","title":"NVIDIA","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-ollama":{"id":"Components/bundles-ollama","title":"Ollama","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-openai":{"id":"Components/bundles-openai","title":"OpenAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-openrouter":{"id":"Components/bundles-openrouter","title":"OpenRouter","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-perplexity":{"id":"Components/bundles-perplexity","title":"Perplexity","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-pgvector":{"id":"Components/bundles-pgvector","title":"pgvector","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-pinecone":{"id":"Components/bundles-pinecone","title":"Pinecone","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-qdrant":{"id":"Components/bundles-qdrant","title":"Qdrant","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-redis":{"id":"Components/bundles-redis","title":"Redis","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-sambanova":{"id":"Components/bundles-sambanova","title":"SambaNova","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-searchapi":{"id":"Components/bundles-searchapi","title":"SearchApi","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-serper":{"id":"Components/bundles-serper","title":"Serper","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-supabase":{"id":"Components/bundles-supabase","title":"Supabase","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-upstash":{"id":"Components/bundles-upstash","title":"Upstash","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-vectara":{"id":"Components/bundles-vectara","title":"Vectara","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-vertexai":{"id":"Components/bundles-vertexai","title":"Vertex AI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-weaviate":{"id":"Components/bundles-weaviate","title":"Weaviate","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-wikipedia":{"id":"Components/bundles-wikipedia","title":"Wikipedia","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/bundles-xai":{"id":"Components/bundles-xai","title":"xAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/components-agents":{"id":"Components/components-agents","title":"Agents","description":"Langflow\'s Agent and MCP Tools components are critical for building agent flows.","sidebar":"docs"},"Components/components-bundles":{"id":"Components/components-bundles","title":"About bundles","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","sidebar":"docs"},"Components/components-custom-components":{"id":"Components/components-custom-components","title":"Create custom Python components","description":"Custom components extend Langflow\'s functionality through Python classes that inherit from Component. This enables integration of new features, data manipulation, external services, and specialized tools.","sidebar":"docs"},"Components/components-data":{"id":"Components/components-data","title":"Data","description":"Data components bring data into your flows from various sources like files, API endpoints, and URLs.","sidebar":"docs"},"Components/components-embedding-models":{"id":"Components/components-embedding-models","title":"Embedding Model","description":"Embedding model components in Langflow generate text embeddings using a specified Large Language Model (LLM).","sidebar":"docs"},"Components/components-helpers":{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data and perform simple tasks in your flow.","sidebar":"docs"},"Components/components-io":{"id":"Components/components-io","title":"Input / Output","description":"Input and output components define where data enters and exits your flow, but they don\'t have identical functionality.","sidebar":"docs"},"Components/components-logic":{"id":"Components/components-logic","title":"Logic","description":"Logic components provide functionalities for routing, conditional processing, and flow management.","sidebar":"docs"},"Components/components-models":{"id":"Components/components-models","title":"Language Model","description":"Language model components in Langflow generate text using a specified Large Language Model (LLM).","sidebar":"docs"},"Components/components-processing":{"id":"Components/components-processing","title":"Processing components","description":"Processing components process and transform data within a flow.","sidebar":"docs"},"Components/components-prompts":{"id":"Components/components-prompts","title":"Prompt Template","description":"Use the Prompt Template core component to create a prompt that supplies instructions and context to an LLM or agent, separate from other input like chat messages and file uploads.","sidebar":"docs"},"Components/components-tools":{"id":"Components/components-tools","title":"Tools","description":"In Langflow version 1.5, the Tools category was deprecated.","sidebar":"docs"},"Components/concepts-components":{"id":"Components/concepts-components","title":"Components overview","description":"Components are the building blocks of your flows.","sidebar":"docs"},"Contributing/contributing-bundles":{"id":"Contributing/contributing-bundles","title":"Contribute bundles","description":"Bundles are groups of components that are related to a specific service provider.","sidebar":"docs"},"Contributing/contributing-community":{"id":"Contributing/contributing-community","title":"Join the Langflow community","description":"There are several ways you can interact with the Langflow community and learn more about the Langflow codebase.","sidebar":"docs"},"Contributing/contributing-component-tests":{"id":"Contributing/contributing-component-tests","title":"Contribute component tests","description":"This guide outlines how to structure and implement tests for application components to ensure consistency and adequate coverage.","sidebar":"docs"},"Contributing/contributing-components":{"id":"Contributing/contributing-components","title":"Contribute components","description":"New components are added as objects of the Component class.","sidebar":"docs"},"Contributing/contributing-how-to-contribute":{"id":"Contributing/contributing-how-to-contribute","title":"Contribute to Langflow","description":"This guide is intended to help you start contributing to Langflow.","sidebar":"docs"},"Contributing/contributing-templates":{"id":"Contributing/contributing-templates","title":"Contribute templates","description":"Follow these best practices when submitting a template to Langflow.","sidebar":"docs"},"Deployment/deployment-architecture":{"id":"Deployment/deployment-architecture","title":"Langflow architecture on Kubernetes","description":"There are two broad types of Langflow deployments:","sidebar":"docs"},"Deployment/deployment-caddyfile":{"id":"Deployment/deployment-caddyfile","title":"Deploy Langflow on a remote server","description":"Learn how to deploy Langflow on your own remote server with secure web access.","sidebar":"docs"},"Deployment/deployment-docker":{"id":"Deployment/deployment-docker","title":"Deploy Langflow on Docker","description":"Running applications in Docker containers ensures consistent behavior across different systems and eliminates dependency conflicts.","sidebar":"docs"},"Deployment/deployment-gcp":{"id":"Deployment/deployment-gcp","title":"Deploy Langflow on Google Cloud Platform","description":"This guide demonstrates how to deploy Langflow on Google Cloud Platform with a Cloud Shell script that walks through the process of setting up a Debian-based VM with the Langflow package, Nginx, and the necessary configurations to run the Langflow development environment in GCP.","sidebar":"docs"},"Deployment/deployment-hugging-face-spaces":{"id":"Deployment/deployment-hugging-face-spaces","title":"Deploy Langflow on Hugging Face Spaces","description":"This guide explains how to deploy Langflow on Hugging Face Spaces.","sidebar":"docs"},"Deployment/deployment-kubernetes-dev":{"id":"Deployment/deployment-kubernetes-dev","title":"Deploy the Langflow development environment on Kubernetes","description":"The Langflow integrated development environment (IDE) Helm chart is designed to provide a complete environment for developers to create, test, and debug their flows. It includes both the Langflow API and visual editor.","sidebar":"docs"},"Deployment/deployment-kubernetes-prod":{"id":"Deployment/deployment-kubernetes-prod","title":"Deploy the Langflow production environment on Kubernetes","description":"The Langflow runtime Helm chart is tailored for deploying applications in a production environment. It is focused on stability, performance, isolation, and security to ensure that applications run reliably and efficiently.","sidebar":"docs"},"Deployment/deployment-nginx-ssl":{"id":"Deployment/deployment-nginx-ssl","title":"Deploy Langflow with Nginx and SSL","description":"Deploy Langflow on a Linux-based server using Nginx as a reverse proxy, Let\'s Encrypt for SSL certificates, and Certbot for automated certificate management.","sidebar":"docs"},"Deployment/deployment-overview":{"id":"Deployment/deployment-overview","title":"Langflow deployment overview","description":"This section includes the different ways to bring your locally-built flows to the world.","sidebar":"docs"},"Deployment/deployment-prod-best-practices":{"id":"Deployment/deployment-prod-best-practices","title":"Best practices for Langflow on Kubernetes","description":"This guide provides best practices for deploying Langflow in production environments on Kubernetes.","sidebar":"docs"},"Deployment/deployment-public-server":{"id":"Deployment/deployment-public-server","title":"Deploy a public Langflow server","description":"By default, your Langflow server at http7860 isn\'t exposed to the public internet.","sidebar":"docs"},"Deployment/deployment-railway":{"id":"Deployment/deployment-railway","title":"Deploy Langflow on Railway","description":"Deploy Langflow to Railway using a one-click template","sidebar":"docs"},"Deployment/deployment-render":{"id":"Deployment/deployment-render","title":"Deploy Langflow on Render","description":"This guide explains how to deploy Langflow on Render, a cloud platform for deploying web applications and APIs.","sidebar":"docs"},"Deployment/develop-application":{"id":"Deployment/develop-application","title":"Containerize a Langflow application","description":"Designing flows in the visual editor is only the first step in building an application that uses Langflow.","sidebar":"docs"},"Deployment/security":{"id":"Deployment/security","title":"Security","description":"The Langflow UI is an IDE and code execution platform, which means that Langflow is inherently capable of executing arbitrary,","sidebar":"docs"},"Develop/api-keys-and-authentication":{"id":"Develop/api-keys-and-authentication","title":"API keys and authentication","description":"Never expose Langflow ports directly to the internet without proper security measures.","sidebar":"docs"},"Develop/concepts-file-management":{"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.","sidebar":"docs"},"Develop/concepts-voice-mode":{"id":"Develop/concepts-voice-mode","title":"Use voice mode","description":"Voice mode is not available in Langflow Desktop.","sidebar":"docs"},"Develop/configuration-cli":{"id":"Develop/configuration-cli","title":"Langflow CLI","description":"The Langflow command line interface is the main interface for managing and running the Langflow server.","sidebar":"docs"},"Develop/configuration-custom-database":{"id":"Develop/configuration-custom-database","title":"Configure an external PostgreSQL database","description":"Langflow\'s default database is SQLite, but you can configure Langflow to use PostgreSQL instead.","sidebar":"docs"},"Develop/configuration-global-variables":{"id":"Develop/configuration-global-variables","title":"Global variables","description":"Use global variables to store and reuse credentials and generic values across all of your flows.","sidebar":"docs"},"Develop/contributing-telemetry":{"id":"Develop/contributing-telemetry","title":"Telemetry","description":"Langflow uses anonymous telemetry to collect statistics about feature usage and performance.","sidebar":"docs"},"Develop/data-types":{"id":"Develop/data-types","title":"Langflow data types","description":"Langflow components are designed to accept and produce specific types of inputs and outputs.","sidebar":"docs"},"Develop/enterprise-database-guide":{"id":"Develop/enterprise-database-guide","title":"Langflow database guide for enterprise DBAs","description":"The Langflow database stores data that is essential for more Langflow operations, including startup, flow execution, user interactions, and administrative tasks.","sidebar":"docs"},"Develop/environment-variables":{"id":"Develop/environment-variables","title":"Environment variables","description":"In general, environment variables, like LANGFLOWPORT or LANGFLOWLOG_LEVEL, configure how Langflow runs.","sidebar":"docs"},"Develop/install-custom-dependencies":{"id":"Develop/install-custom-dependencies","title":"Install custom dependencies","description":"Langflow provides optional dependency groups and support for custom dependencies to extend Langflow functionality. This guide covers how to add dependencies for different Langflow installations, including Langflow Desktop and Langflow OSS.","sidebar":"docs"},"Develop/integrations-arize":{"id":"Develop/integrations-arize","title":"Arize","description":"Arize is a tool built on OpenTelemetry and OpenInference for monitoring and optimizing LLM applications.","sidebar":"docs"},"Develop/integrations-instana-traceloop":{"id":"Develop/integrations-instana-traceloop","title":"Traceloop","description":"Instrument Langflow with the Traceloop SDK, and export traces and metrics to Instana using OpenTelemetry.","sidebar":"docs"},"Develop/integrations-langfuse":{"id":"Develop/integrations-langfuse","title":"Langfuse","description":"Langfuse is an open-source platform for LLM observability. It provides tracing and monitoring capabilities for AI applications, helping developers debug, analyze, and optimize their AI systems. Langfuse integrates with various tools and frameworks, including workflow builders and runtimes like Langflow.","sidebar":"docs"},"Develop/integrations-langsmith":{"id":"Develop/integrations-langsmith","title":"LangSmith","description":"LangSmith is a full-lifecycle DevOps service from LangChain that provides monitoring and observability. To integrate with Langflow, add your LangChain API key and configuration as Langflow environment variables, and then start Langflow.","sidebar":"docs"},"Develop/integrations-langwatch":{"id":"Develop/integrations-langwatch","title":"LangWatch","description":"LangWatch is an all-in-one LLMOps platform for monitoring, observability, analytics, evaluations and alerting for getting user insights and improve your LLM workflows.","sidebar":"docs"},"Develop/integrations-opik":{"id":"Develop/integrations-opik","title":"Opik","description":"Opik is an open-source platform designed for evaluating, testing, and monitoring large language model (LLM) applications. Developed by Comet, it aims to facilitate more intuitive collaboration, testing, and monitoring of LLM-based applications.","sidebar":"docs"},"Develop/logging":{"id":"Develop/logging","title":"Logs","description":"Langflow produces logs for individual flows and the Langflow application itself using the structlog library for logging.","sidebar":"docs"},"Develop/memory":{"id":"Develop/memory","title":"Memory management options","description":"Langflow provides flexible memory management options for storage and retrieval of data relevant to your flows and your Langflow server.","sidebar":"docs"},"Develop/session-id":{"id":"Develop/session-id","title":"Use session ID to manage communication between components","description":"Session ID is a unique identifier for client/server connections. A single session equals the duration of a client\'s connection to a server.","sidebar":"docs"},"Flows/concepts-flows":{"id":"Flows/concepts-flows","title":"Build flows","description":"A flow is a functional representation of an application workflow.","sidebar":"docs"},"Flows/concepts-flows-import":{"id":"Flows/concepts-flows-import","title":"Import and export flows","description":"You can export flows to transfer them between Langflow instances, share them with others, or create backups.","sidebar":"docs"},"Flows/concepts-overview":{"id":"Flows/concepts-overview","title":"Use the visual editor","description":"You use Langflow\'s visual editor to create, test, and share flows, which are functional representations of application workflows.","sidebar":"docs"},"Flows/concepts-playground":{"id":"Flows/concepts-playground","title":"Test flows in the Playground","description":"Langflow\'s Playground is a dynamic interface you can use to test your LLM-based flows in real-time.","sidebar":"docs"},"Flows/concepts-publish":{"id":"Flows/concepts-publish","title":"Trigger flows with the Langflow API","description":"After you build a flow, you probably want to run it within an application, such as a chatbot within a mobile app or website.","sidebar":"docs"},"Flows/webhook":{"id":"Flows/webhook","title":"Trigger flows with webhooks","description":"You can use the Webhook component to start a flow run in response to an external event.","sidebar":"docs"},"Get-Started/about-langflow":{"id":"Get-Started/about-langflow","title":"What is Langflow?","description":"Langflow is an open-source, Python-based, customizable framework for building AI applications.","sidebar":"docs"},"Get-Started/get-started-installation":{"id":"Get-Started/get-started-installation","title":"Install Langflow","description":"Langflow can be installed in multiple ways:","sidebar":"docs"},"Get-Started/get-started-quickstart":{"id":"Get-Started/get-started-quickstart","title":"Quickstart","description":"Get started with Langflow by loading a template flow, running it, and then serving it at the /run API endpoint.","sidebar":"docs"},"Support/contributing-github-issues":{"id":"Support/contributing-github-issues","title":"Get help and request enhancements","description":"The Langflow GitHub repository is an integral part of the Langflow community.","sidebar":"docs"},"Support/luna-for-langflow":{"id":"Support/luna-for-langflow","title":"IBM Elite Support for Langflow","description":"IBM Elite Support offers enterprise support for Langflow to help you develop and deploy Langflow applications with confidence.","sidebar":"docs"},"Support/release-notes":{"id":"Support/release-notes","title":"Langflow release notes","description":"This page summarizes significant changes to Langflow in each release.","sidebar":"docs"},"Support/troubleshooting":{"id":"Support/troubleshooting","title":"Troubleshoot Langflow","description":"This page provides troubleshooting advice for issues you might encounter when using Langflow or contributing to Langflow.","sidebar":"docs"},"Tutorials/agent":{"id":"Tutorials/agent","title":"Connect applications to agents","description":"This tutorial shows you how to connect a JavaScript application to a Langflow agent.","sidebar":"docs"},"Tutorials/chat-with-files":{"id":"Tutorials/chat-with-files","title":"Create a chatbot that can ingest files","description":"This tutorial shows you how to build a chatbot that can read and answer questions about files you upload, such as meeting notes or job applications.","sidebar":"docs"},"Tutorials/chat-with-rag":{"id":"Tutorials/chat-with-rag","title":"Create a vector RAG chatbot","description":"This tutorial demonstrates how you can use Langflow to create a chatbot application that uses Retrieval Augmented Generation (RAG) to embed your data as vectors in a vector database, and then chat with the data.","sidebar":"docs"},"Tutorials/mcp-tutorial":{"id":"Tutorials/mcp-tutorial","title":"Connect to MCP servers from your application","description":"This tutorial shows you how to connect MCP servers to your applications using Langflow\'s MCP Tools component.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/69079906.45ed451e.js b/assets/js/69079906.6f0fb038.js similarity index 81% rename from assets/js/69079906.45ed451e.js rename to assets/js/69079906.6f0fb038.js index d71fa56ba1..052e775c6c 100644 --- a/assets/js/69079906.45ed451e.js +++ b/assets/js/69079906.6f0fb038.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[5739],{1975:(M,j,N)=>{N.d(j,{A:()=>D});const D="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTUzIDQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiBmaWxsPSIjOEEwNUZGIi8+CjxwYXRoIGQ9Ik0xNy41MDAxIDIxTDE4LjIwNTEgMjEuNzA1TDE5LjUwMDEgMjAuNDE1VjI2LjVIMjAuNTAwMVYyMC40MTVMMjEuNzk1MSAyMS43MDVMMjIuNTAwMSAyMUwyMC4wMDAxIDE4LjVMMTcuNTAwMSAyMVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMy43NTAxIDIzSDIzLjUwMDFWMjJIMjMuNzUwMUMyNC4zNDY4IDIyLjAyMzkgMjQuOTI4NiAyMS44MDk3IDI1LjM2NzQgMjEuNDA0N0MyNS44MDYyIDIwLjk5OTYgMjYuMDY2MiAyMC40MzY4IDI2LjA5MDEgMTkuODRDMjYuMTEzOSAxOS4yNDMzIDI1Ljg5OTggMTguNjYxNSAyNS40OTQ3IDE4LjIyMjdDMjUuMDg5NiAxNy43ODM4IDI0LjUyNjggMTcuNTIzOSAyMy45MzAxIDE3LjVIMjMuNTAwMUwyMy40NTAxIDE3LjA5QzIzLjMzOTEgMTYuMjQ4MyAyMi45MjYgMTUuNDc1NSAyMi4yODc2IDE0LjkxNTdDMjEuNjQ5MiAxNC4zNTU5IDIwLjgyOTEgMTQuMDQ3MyAxOS45ODAxIDE0LjA0NzNDMTkuMTMxIDE0LjA0NzMgMTguMzEwOSAxNC4zNTU5IDE3LjY3MjUgMTQuOTE1N0MxNy4wMzQxIDE1LjQ3NTUgMTYuNjIxIDE2LjI0ODMgMTYuNTEwMSAxNy4wOUwxNi41MDAxIDE3LjVIMTYuMDcwMUMxNS40NzMzIDE3LjUyMzkgMTQuOTEwNSAxNy43ODM4IDE0LjUwNTQgMTguMjIyN0MxNC4xMDAzIDE4LjY2MTUgMTMuODg2MiAxOS4yNDMzIDEzLjkxMDEgMTkuODRDMTMuOTMzOSAyMC40MzY4IDE0LjE5MzkgMjAuOTk5NiAxNC42MzI3IDIxLjQwNDdDMTUuMDcxNSAyMS44MDk3IDE1LjY1MzMgMjIuMDIzOSAxNi4yNTAxIDIySDE2LjUwMDFWMjNIMTYuMjUwMUMxNS40NDgzIDIyLjk5NSAxNC42NzY2IDIyLjY5MzcgMTQuMDgzNSAyMi4xNTQxQzEzLjQ5MDUgMjEuNjE0NSAxMy4xMTc4IDIwLjg3NDcgMTMuMDM3MSAyMC4wNzdDMTIuOTU2NSAxOS4yNzkyIDEzLjE3MzYgMTguNDc5OCAxMy42NDY3IDE3LjgzMjVDMTQuMTE5OCAxNy4xODUxIDE0LjgxNTUgMTYuNzM1NSAxNS42MDAxIDE2LjU3QzE1LjgxNTkgMTUuNTYzMyAxNi4zNzA1IDE0LjY2MSAxNy4xNzEyIDE0LjAxMzhDMTcuOTcxOSAxMy4zNjY1IDE4Ljk3MDQgMTMuMDEzNCAyMC4wMDAxIDEzLjAxMzRDMjEuMDI5NyAxMy4wMTM0IDIyLjAyODIgMTMuMzY2NSAyMi44Mjg5IDE0LjAxMzhDMjMuNjI5NiAxNC42NjEgMjQuMTg0MiAxNS41NjMzIDI0LjQwMDEgMTYuNTdDMjUuMTg0NiAxNi43MzU1IDI1Ljg4MDMgMTcuMTg1MSAyNi4zNTM0IDE3LjgzMjVDMjYuODI2NSAxOC40Nzk4IDI3LjA0MzYgMTkuMjc5MiAyNi45NjMgMjAuMDc3QzI2Ljg4MjMgMjAuODc0NyAyNi41MDk2IDIxLjYxNDUgMjUuOTE2NiAyMi4xNTQxQzI1LjMyMzUgMjIuNjkzNyAyNC41NTE4IDIyLjk5NSAyMy43NTAxIDIzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTM5LjA2MzIgMjVIMzUuNDM3MlYxNC45OUgzOS4wNjMyQzQxLjgyMTIgMTQuOTkgNDMuNTE1MiAxNi43ODIgNDMuNTE1MiAyMC4wMDJDNDMuNTE1MiAyMy4yMjIgNDEuODIxMiAyNSAzOS4wNjMyIDI1Wk0zNi42OTcyIDIzLjg4SDM5LjA2MzJDNDEuNjExMiAyMy44OCA0Mi4xOTkyIDIxLjk2MiA0Mi4xOTkyIDIwLjAwMkM0Mi4xOTkyIDE4LjA0MiA0MS42MTEyIDE2LjExIDM5LjA2MzIgMTYuMTFIMzYuNjk3MlYyMy44OFpNNTEuNDMwOSAyMS4xNjRDNTEuNDMwOSAyMS4zNzQgNTEuNDMwOSAyMS42MTIgNTEuNDE2OSAyMS43MjRINDUuODMwOUM0NS44NTg5IDIyLjk4NCA0Ni41NTg5IDI0LjI0NCA0OC4xNDA5IDI0LjI0NEM0OS41NDA5IDI0LjI0NCA1MC4wNzI5IDIzLjMwNiA1MC4xOTg5IDIyLjgwMkg1MS4zMzI5QzUwLjk2ODkgMjQuMTMyIDQ5Ljk2MDkgMjUuMjEgNDguMTI2OSAyNS4yMUM0NS44NzI5IDI1LjIxIDQ0LjY1NDkgMjMuNTg2IDQ0LjY1NDkgMjEuNDE2QzQ0LjY1NDkgMTkuMTM0IDQ2LjAxMjkgMTcuNjUgNDguMTI2OSAxNy42NUM1MC4yMTI5IDE3LjY1IDUxLjQzMDkgMTkuMDc4IDUxLjQzMDkgMjEuMTY0Wk00NS44MzA5IDIwLjc0NEg1MC4yNDA5QzUwLjI0MDkgMTkuNTY4IDQ5LjQwMDkgMTguNjE2IDQ4LjA3MDkgMTguNjE2QzQ2LjgzODkgMTguNjE2IDQ1LjkwMDkgMTkuNDk4IDQ1LjgzMDkgMjAuNzQ0Wk01Ni4xODk4IDE3LjY2NEM1Ny45ODE4IDE3LjY2NCA1OS40MDk4IDE5LjA3OCA1OS40MDk4IDIxLjQzQzU5LjQwOTggMjMuNzgyIDU3Ljk4MTggMjUuMTk2IDU2LjE4OTggMjUuMTk2QzU1LjA0MTggMjUuMTk2IDU0LjM2OTggMjQuNjkyIDUzLjk0OTggMjQuMDc2SDUzLjkyMThWMjcuNDc4SDUyLjgwMThWMTcuODZINTMuOTIxOFYxOC43NDJINTMuOTQ5OEM1NC4zNjk4IDE4LjE5NiA1NS4wNDE4IDE3LjY2NCA1Ni4xODk4IDE3LjY2NFpNNTYuMDc3OCAyNC4yMTZDNTcuNTQ3OCAyNC4yMTYgNTguMjMzOCAyMi44MyA1OC4yMzM4IDIxLjQzQzU4LjIzMzggMjAuMDMgNTcuNTQ3OCAxOC42NDQgNTYuMDc3OCAxOC42NDRDNTQuNzQ3OCAxOC42NDQgNTMuOTIxOCAxOS43NSA1My45MjE4IDIxLjQzQzUzLjkyMTggMjMuMTEgNTQuNzQ3OCAyNC4yMTYgNTYuMDc3OCAyNC4yMTZaTTYxLjkwOTQgMjVINjAuNzg5NFYxNC45OUg2MS45MDk0VjI1Wk02Ni43ODU1IDI1LjIxQzY0LjYwMTUgMjUuMjEgNjMuMjg1NSAyMy42NTYgNjMuMjg1NSAyMS40M0M2My4yODU1IDE5LjIwNCA2NC42MDE1IDE3LjY1IDY2Ljc4NTUgMTcuNjVDNjguOTU1NSAxNy42NSA3MC4yNzE1IDE5LjIwNCA3MC4yNzE1IDIxLjQzQzcwLjI3MTUgMjMuNjU2IDY4Ljk1NTUgMjUuMjEgNjYuNzg1NSAyNS4yMVpNNjYuNzg1NSAyNC4yM0M2OC4zODE1IDI0LjIzIDY5LjA5NTUgMjIuOTU2IDY5LjA5NTUgMjEuNDNDNjkuMDk1NSAxOS45MDQgNjguMzgxNSAxOC42MyA2Ni43ODU1IDE4LjYzQzY1LjE3NTUgMTguNjMgNjQuNDYxNSAxOS45MDQgNjQuNDYxNSAyMS40M0M2NC40NjE1IDIyLjk1NiA2NS4xNzU1IDI0LjIzIDY2Ljc4NTUgMjQuMjNaTTcyLjIwMiAyNy41MDZDNzEuOTUgMjcuNTA2IDcxLjc4MiAyNy40OTIgNzEuNDYgMjcuNDM2VjI2LjQ4NEM3MS42OTggMjYuNTEyIDcxLjgxIDI2LjUyNiA3Mi4wMiAyNi41MjZDNzIuNjA4IDI2LjUyNiA3My4yNTIgMjYuMTYyIDczLjU2IDI0LjkzTDcwLjY2MiAxNy44Nkg3MS45MjJMNzQuMTIgMjMuNTQ0SDc0LjE0OEw3Ni4yNDggMTcuODZINzcuNDUyTDc0LjU2OCAyNS4yMUM3My44NTQgMjcuMDE2IDczLjE2OCAyNy41MDYgNzIuMjAyIDI3LjUwNlpNODQuMjM3IDE3Ljg2VjE4Ljg0SDgyLjgzN1YyMy4xMzhDODIuODM3IDIzLjg5NCA4My4wMTkgMjQuMDkgODMuNjQ5IDI0LjA5QzgzLjg4NyAyNC4wOSA4My45OTkgMjQuMDc2IDg0LjIzNyAyNC4wNDhWMjVDODMuOTE1IDI1LjA1NiA4My43NDcgMjUuMDcgODMuNDk1IDI1LjA3QzgyLjQ0NSAyNS4wNyA4MS43MTcgMjQuNzA2IDgxLjcxNyAyMy4wODJWMTguODRIODAuNjY3VjE3Ljg2SDgxLjcxN1YxNS40OEg4Mi44MzdWMTcuODZIODQuMjM3Wk04OC41MDk1IDI1LjIxQzg2LjMyNTUgMjUuMjEgODUuMDA5NSAyMy42NTYgODUuMDA5NSAyMS40M0M4NS4wMDk1IDE5LjIwNCA4Ni4zMjU1IDE3LjY1IDg4LjUwOTUgMTcuNjVDOTAuNjc5NSAxNy42NSA5MS45OTU1IDE5LjIwNCA5MS45OTU1IDIxLjQzQzkxLjk5NTUgMjMuNjU2IDkwLjY3OTUgMjUuMjEgODguNTA5NSAyNS4yMVpNODguNTA5NSAyNC4yM0M5MC4xMDU1IDI0LjIzIDkwLjgxOTUgMjIuOTU2IDkwLjgxOTUgMjEuNDNDOTAuODE5NSAxOS45MDQgOTAuMTA1NSAxOC42MyA4OC41MDk1IDE4LjYzQzg2Ljg5OTUgMTguNjMgODYuMTg1NSAxOS45MDQgODYuMTg1NSAyMS40M0M4Ni4xODU1IDIyLjk1NiA4Ni44OTk1IDI0LjIzIDg4LjUwOTUgMjQuMjNaTTk3Ljk4IDI1SDk2LjcyVjE0Ljk5SDEwMC43MzhDMTAyLjkzNiAxNC45OSAxMDQuMDg0IDE2LjAyNiAxMDQuMDg0IDE3Ljg3NEMxMDQuMDg0IDE5LjEyIDEwMy4zMTQgMjAuMDcyIDEwMi4yNjQgMjAuMzI0VjIwLjM1MkMxMDQuNTE4IDIwLjc4NiAxMDMuNjkyIDI0Ljc0OCAxMDQuMjI0IDI0LjkxNlYyNUgxMDIuODY2QzEwMi40MzIgMjQuNTggMTAzLjM4NCAyMC45NTQgMTAwLjg1IDIwLjk1NEg5Ny45OFYyNVpNOTcuOTggMTkuODM0SDEwMC40NDRDMTAxLjk3IDE5LjgzNCAxMDIuODI0IDE5LjE0OCAxMDIuODI0IDE3LjkwMkMxMDIuODI0IDE2Ljc1NCAxMDIuMTggMTYuMTEgMTAwLjQ4NiAxNi4xMUg5Ny45OFYxOS44MzRaTTExMS45NjIgMjEuMTY0QzExMS45NjIgMjEuMzc0IDExMS45NjIgMjEuNjEyIDExMS45NDggMjEuNzI0SDEwNi4zNjJDMTA2LjM5IDIyLjk4NCAxMDcuMDkgMjQuMjQ0IDEwOC42NzIgMjQuMjQ0QzExMC4wNzIgMjQuMjQ0IDExMC42MDQgMjMuMzA2IDExMC43MyAyMi44MDJIMTExLjg2NEMxMTEuNSAyNC4xMzIgMTEwLjQ5MiAyNS4yMSAxMDguNjU4IDI1LjIxQzEwNi40MDQgMjUuMjEgMTA1LjE4NiAyMy41ODYgMTA1LjE4NiAyMS40MTZDMTA1LjE4NiAxOS4xMzQgMTA2LjU0NCAxNy42NSAxMDguNjU4IDE3LjY1QzExMC43NDQgMTcuNjUgMTExLjk2MiAxOS4wNzggMTExLjk2MiAyMS4xNjRaTTEwNi4zNjIgMjAuNzQ0SDExMC43NzJDMTEwLjc3MiAxOS41NjggMTA5LjkzMiAxOC42MTYgMTA4LjYwMiAxOC42MTZDMTA3LjM3IDE4LjYxNiAxMDYuNDMyIDE5LjQ5OCAxMDYuMzYyIDIwLjc0NFpNMTE2LjgzMyAxNy42NjRDMTE4LjEzNSAxNy42NjQgMTE5LjIyNyAxOC4zNzggMTE5LjIyNyAyMC4wMTZWMjVIMTE4LjEwN1YyMC4yOTZDMTE4LjEwNyAxOS4zNzIgMTE3LjY3MyAxOC42NDQgMTE2LjU1MyAxOC42NDRDMTE1LjI5MyAxOC42NDQgMTE0LjQ1MyAxOS40NDIgMTE0LjQ1MyAyMC41NDhWMjVIMTEzLjMzM1YxNy44NkgxMTQuNDUzVjE4LjcxNEgxMTQuNDgxQzExNC44NTkgMTguMjEgMTE1LjYxNSAxNy42NjQgMTE2LjgzMyAxNy42NjRaTTEyNi4wNDcgMTguNzg0VjE0Ljk5SDEyNy4xNjdWMjVIMTI2LjA0N1YyNC4xMThIMTI2LjAxOUMxMjUuNTk5IDI0LjY2NCAxMjQuOTI3IDI1LjE5NiAxMjMuNzc5IDI1LjE5NkMxMjEuOTg3IDI1LjE5NiAxMjAuNTU5IDIzLjc4MiAxMjAuNTU5IDIxLjQzQzEyMC41NTkgMTkuMDc4IDEyMS45ODcgMTcuNjY0IDEyMy43NzkgMTcuNjY0QzEyNC45MjcgMTcuNjY0IDEyNS41OTkgMTguMTY4IDEyNi4wMTkgMTguNzg0SDEyNi4wNDdaTTEyMy44OTEgMjQuMjE2QzEyNS4yMjEgMjQuMjE2IDEyNi4wNDcgMjMuMTEgMTI2LjA0NyAyMS40M0MxMjYuMDQ3IDE5Ljc1IDEyNS4yMjEgMTguNjQ0IDEyMy44OTEgMTguNjQ0QzEyMi40MjEgMTguNjQ0IDEyMS43MzUgMjAuMDMgMTIxLjczNSAyMS40M0MxMjEuNzM1IDIyLjgzIDEyMi40MjEgMjQuMjE2IDEyMy44OTEgMjQuMjE2Wk0xMzUuMzIzIDIxLjE2NEMxMzUuMzIzIDIxLjM3NCAxMzUuMzIzIDIxLjYxMiAxMzUuMzA5IDIxLjcyNEgxMjkuNzIzQzEyOS43NTEgMjIuOTg0IDEzMC40NTEgMjQuMjQ0IDEzMi4wMzMgMjQuMjQ0QzEzMy40MzMgMjQuMjQ0IDEzMy45NjUgMjMuMzA2IDEzNC4wOTEgMjIuODAySDEzNS4yMjVDMTM0Ljg2MSAyNC4xMzIgMTMzLjg1MyAyNS4yMSAxMzIuMDE5IDI1LjIxQzEyOS43NjUgMjUuMjEgMTI4LjU0NyAyMy41ODYgMTI4LjU0NyAyMS40MTZDMTI4LjU0NyAxOS4xMzQgMTI5LjkwNSAxNy42NSAxMzIuMDE5IDE3LjY1QzEzNC4xMDUgMTcuNjUgMTM1LjMyMyAxOS4wNzggMTM1LjMyMyAyMS4xNjRaTTEyOS43MjMgMjAuNzQ0SDEzNC4xMzNDMTM0LjEzMyAxOS41NjggMTMzLjI5MyAxOC42MTYgMTMxLjk2MyAxOC42MTZDMTMwLjczMSAxOC42MTYgMTI5Ljc5MyAxOS40OTggMTI5LjcyMyAyMC43NDRaTTEzOS44MTYgMTcuNjY0QzE0MC4wODIgMTcuNjY0IDE0MC4yNzggMTcuNjc4IDE0MC40NzQgMTcuNzA2VjE4LjgyNkMxNDAuMzA2IDE4Ljc5OCAxNDAuMTggMTguNzg0IDE0MC4wMTIgMTguNzg0QzEzOC42OTYgMTguNzg0IDEzNy44MTQgMTkuODIgMTM3LjgxNCAyMS4xOTJWMjVIMTM2LjY5NFYxNy44NkgxMzcuODE0VjE5LjI3NEgxMzcuODQyQzEzOC4yMiAxOC4zMzYgMTM4Ljc5NCAxNy42NjQgMTM5LjgxNiAxNy42NjRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K"},59397:(M,j,N)=>{N.r(j),N.d(j,{assets:()=>A,contentTitle:()=>y,default:()=>x,frontMatter:()=>T,metadata:()=>D,toc:()=>u});const D=JSON.parse('{"id":"Deployment/deployment-render","title":"Deploy Langflow on Render","description":"This guide explains how to deploy Langflow on Render, a cloud platform for deploying web applications and APIs.","source":"@site/docs/Deployment/deployment-render.mdx","sourceDirName":"Deployment","slug":"/deployment-render","permalink":"/deployment-render","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Deploy Langflow on Render","slug":"/deployment-render"},"sidebar":"docs","previous":{"title":"Railway","permalink":"/deployment-railway"},"next":{"title":"Components overview","permalink":"/concepts-components"}}');var I=N(74848),g=N(28453);const T={title:"Deploy Langflow on Render",slug:"/deployment-render"},y=void 0,A={},u=[];function E(M){const j={a:"a",code:"code",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,g.R)(),...M.components};return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(j.p,{children:["This guide explains how to deploy Langflow on ",(0,I.jsx)(j.a,{href:"https://render.com/",children:"Render"}),", a cloud platform for deploying web applications and APIs."]}),"\n",(0,I.jsxs)(j.ol,{children:["\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsx)(j.p,{children:"Prepare a Render instance that can support Langflow."}),"\n",(0,I.jsxs)(j.p,{children:["Langflow requires at least 2 GB of RAM to run, so you must use a Render instance type of ",(0,I.jsx)(j.strong,{children:"Standard"})," or better.\nThis requires a paid Render account.\nFor more information, see ",(0,I.jsx)(j.a,{href:"https://render.com/docs/web-services",children:"Render Web Services"})," and ",(0,I.jsx)(j.a,{href:"https://render.com/pricing",children:"Render pricing"}),"."]}),"\n"]}),"\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsx)(j.p,{children:"Follow this link to start a Langflow deployment on Render:"}),"\n",(0,I.jsx)(j.p,{children:(0,I.jsx)(j.a,{href:"https://render.com/deploy?repo=https%3A%2F%2Fgithub.com%2Flangflow-ai%2Flangflow%2Ftree%2Fdev",children:(0,I.jsx)(j.img,{alt:"Deploy to Render",src:N(1975).A+"",width:"153",height:"40"})})}),"\n"]}),"\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsxs)(j.p,{children:["Enter a blueprint name, select the branch for your ",(0,I.jsx)(j.code,{children:"render.yaml"})," file, and then click ",(0,I.jsx)(j.strong,{children:"Deploy Blueprint"}),"."]}),"\n"]}),"\n"]}),"\n",(0,I.jsx)(j.p,{children:"When deployment is complete, your Langflow instance is ready to use."})]})}function x(M={}){const{wrapper:j}={...(0,g.R)(),...M.components};return j?(0,I.jsx)(j,{...M,children:(0,I.jsx)(E,{...M})}):E(M)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[5739],{1975:(M,j,N)=>{N.d(j,{A:()=>D});const D="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTUzIDQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiBmaWxsPSIjOEEwNUZGIi8+CjxwYXRoIGQ9Ik0xNy41MDAxIDIxTDE4LjIwNTEgMjEuNzA1TDE5LjUwMDEgMjAuNDE1VjI2LjVIMjAuNTAwMVYyMC40MTVMMjEuNzk1MSAyMS43MDVMMjIuNTAwMSAyMUwyMC4wMDAxIDE4LjVMMTcuNTAwMSAyMVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMy43NTAxIDIzSDIzLjUwMDFWMjJIMjMuNzUwMUMyNC4zNDY4IDIyLjAyMzkgMjQuOTI4NiAyMS44MDk3IDI1LjM2NzQgMjEuNDA0N0MyNS44MDYyIDIwLjk5OTYgMjYuMDY2MiAyMC40MzY4IDI2LjA5MDEgMTkuODRDMjYuMTEzOSAxOS4yNDMzIDI1Ljg5OTggMTguNjYxNSAyNS40OTQ3IDE4LjIyMjdDMjUuMDg5NiAxNy43ODM4IDI0LjUyNjggMTcuNTIzOSAyMy45MzAxIDE3LjVIMjMuNTAwMUwyMy40NTAxIDE3LjA5QzIzLjMzOTEgMTYuMjQ4MyAyMi45MjYgMTUuNDc1NSAyMi4yODc2IDE0LjkxNTdDMjEuNjQ5MiAxNC4zNTU5IDIwLjgyOTEgMTQuMDQ3MyAxOS45ODAxIDE0LjA0NzNDMTkuMTMxIDE0LjA0NzMgMTguMzEwOSAxNC4zNTU5IDE3LjY3MjUgMTQuOTE1N0MxNy4wMzQxIDE1LjQ3NTUgMTYuNjIxIDE2LjI0ODMgMTYuNTEwMSAxNy4wOUwxNi41MDAxIDE3LjVIMTYuMDcwMUMxNS40NzMzIDE3LjUyMzkgMTQuOTEwNSAxNy43ODM4IDE0LjUwNTQgMTguMjIyN0MxNC4xMDAzIDE4LjY2MTUgMTMuODg2MiAxOS4yNDMzIDEzLjkxMDEgMTkuODRDMTMuOTMzOSAyMC40MzY4IDE0LjE5MzkgMjAuOTk5NiAxNC42MzI3IDIxLjQwNDdDMTUuMDcxNSAyMS44MDk3IDE1LjY1MzMgMjIuMDIzOSAxNi4yNTAxIDIySDE2LjUwMDFWMjNIMTYuMjUwMUMxNS40NDgzIDIyLjk5NSAxNC42NzY2IDIyLjY5MzcgMTQuMDgzNSAyMi4xNTQxQzEzLjQ5MDUgMjEuNjE0NSAxMy4xMTc4IDIwLjg3NDcgMTMuMDM3MSAyMC4wNzdDMTIuOTU2NSAxOS4yNzkyIDEzLjE3MzYgMTguNDc5OCAxMy42NDY3IDE3LjgzMjVDMTQuMTE5OCAxNy4xODUxIDE0LjgxNTUgMTYuNzM1NSAxNS42MDAxIDE2LjU3QzE1LjgxNTkgMTUuNTYzMyAxNi4zNzA1IDE0LjY2MSAxNy4xNzEyIDE0LjAxMzhDMTcuOTcxOSAxMy4zNjY1IDE4Ljk3MDQgMTMuMDEzNCAyMC4wMDAxIDEzLjAxMzRDMjEuMDI5NyAxMy4wMTM0IDIyLjAyODIgMTMuMzY2NSAyMi44Mjg5IDE0LjAxMzhDMjMuNjI5NiAxNC42NjEgMjQuMTg0MiAxNS41NjMzIDI0LjQwMDEgMTYuNTdDMjUuMTg0NiAxNi43MzU1IDI1Ljg4MDMgMTcuMTg1MSAyNi4zNTM0IDE3LjgzMjVDMjYuODI2NSAxOC40Nzk4IDI3LjA0MzYgMTkuMjc5MiAyNi45NjMgMjAuMDc3QzI2Ljg4MjMgMjAuODc0NyAyNi41MDk2IDIxLjYxNDUgMjUuOTE2NiAyMi4xNTQxQzI1LjMyMzUgMjIuNjkzNyAyNC41NTE4IDIyLjk5NSAyMy43NTAxIDIzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTM5LjA2MzIgMjVIMzUuNDM3MlYxNC45OUgzOS4wNjMyQzQxLjgyMTIgMTQuOTkgNDMuNTE1MiAxNi43ODIgNDMuNTE1MiAyMC4wMDJDNDMuNTE1MiAyMy4yMjIgNDEuODIxMiAyNSAzOS4wNjMyIDI1Wk0zNi42OTcyIDIzLjg4SDM5LjA2MzJDNDEuNjExMiAyMy44OCA0Mi4xOTkyIDIxLjk2MiA0Mi4xOTkyIDIwLjAwMkM0Mi4xOTkyIDE4LjA0MiA0MS42MTEyIDE2LjExIDM5LjA2MzIgMTYuMTFIMzYuNjk3MlYyMy44OFpNNTEuNDMwOSAyMS4xNjRDNTEuNDMwOSAyMS4zNzQgNTEuNDMwOSAyMS42MTIgNTEuNDE2OSAyMS43MjRINDUuODMwOUM0NS44NTg5IDIyLjk4NCA0Ni41NTg5IDI0LjI0NCA0OC4xNDA5IDI0LjI0NEM0OS41NDA5IDI0LjI0NCA1MC4wNzI5IDIzLjMwNiA1MC4xOTg5IDIyLjgwMkg1MS4zMzI5QzUwLjk2ODkgMjQuMTMyIDQ5Ljk2MDkgMjUuMjEgNDguMTI2OSAyNS4yMUM0NS44NzI5IDI1LjIxIDQ0LjY1NDkgMjMuNTg2IDQ0LjY1NDkgMjEuNDE2QzQ0LjY1NDkgMTkuMTM0IDQ2LjAxMjkgMTcuNjUgNDguMTI2OSAxNy42NUM1MC4yMTI5IDE3LjY1IDUxLjQzMDkgMTkuMDc4IDUxLjQzMDkgMjEuMTY0Wk00NS44MzA5IDIwLjc0NEg1MC4yNDA5QzUwLjI0MDkgMTkuNTY4IDQ5LjQwMDkgMTguNjE2IDQ4LjA3MDkgMTguNjE2QzQ2LjgzODkgMTguNjE2IDQ1LjkwMDkgMTkuNDk4IDQ1LjgzMDkgMjAuNzQ0Wk01Ni4xODk4IDE3LjY2NEM1Ny45ODE4IDE3LjY2NCA1OS40MDk4IDE5LjA3OCA1OS40MDk4IDIxLjQzQzU5LjQwOTggMjMuNzgyIDU3Ljk4MTggMjUuMTk2IDU2LjE4OTggMjUuMTk2QzU1LjA0MTggMjUuMTk2IDU0LjM2OTggMjQuNjkyIDUzLjk0OTggMjQuMDc2SDUzLjkyMThWMjcuNDc4SDUyLjgwMThWMTcuODZINTMuOTIxOFYxOC43NDJINTMuOTQ5OEM1NC4zNjk4IDE4LjE5NiA1NS4wNDE4IDE3LjY2NCA1Ni4xODk4IDE3LjY2NFpNNTYuMDc3OCAyNC4yMTZDNTcuNTQ3OCAyNC4yMTYgNTguMjMzOCAyMi44MyA1OC4yMzM4IDIxLjQzQzU4LjIzMzggMjAuMDMgNTcuNTQ3OCAxOC42NDQgNTYuMDc3OCAxOC42NDRDNTQuNzQ3OCAxOC42NDQgNTMuOTIxOCAxOS43NSA1My45MjE4IDIxLjQzQzUzLjkyMTggMjMuMTEgNTQuNzQ3OCAyNC4yMTYgNTYuMDc3OCAyNC4yMTZaTTYxLjkwOTQgMjVINjAuNzg5NFYxNC45OUg2MS45MDk0VjI1Wk02Ni43ODU1IDI1LjIxQzY0LjYwMTUgMjUuMjEgNjMuMjg1NSAyMy42NTYgNjMuMjg1NSAyMS40M0M2My4yODU1IDE5LjIwNCA2NC42MDE1IDE3LjY1IDY2Ljc4NTUgMTcuNjVDNjguOTU1NSAxNy42NSA3MC4yNzE1IDE5LjIwNCA3MC4yNzE1IDIxLjQzQzcwLjI3MTUgMjMuNjU2IDY4Ljk1NTUgMjUuMjEgNjYuNzg1NSAyNS4yMVpNNjYuNzg1NSAyNC4yM0M2OC4zODE1IDI0LjIzIDY5LjA5NTUgMjIuOTU2IDY5LjA5NTUgMjEuNDNDNjkuMDk1NSAxOS45MDQgNjguMzgxNSAxOC42MyA2Ni43ODU1IDE4LjYzQzY1LjE3NTUgMTguNjMgNjQuNDYxNSAxOS45MDQgNjQuNDYxNSAyMS40M0M2NC40NjE1IDIyLjk1NiA2NS4xNzU1IDI0LjIzIDY2Ljc4NTUgMjQuMjNaTTcyLjIwMiAyNy41MDZDNzEuOTUgMjcuNTA2IDcxLjc4MiAyNy40OTIgNzEuNDYgMjcuNDM2VjI2LjQ4NEM3MS42OTggMjYuNTEyIDcxLjgxIDI2LjUyNiA3Mi4wMiAyNi41MjZDNzIuNjA4IDI2LjUyNiA3My4yNTIgMjYuMTYyIDczLjU2IDI0LjkzTDcwLjY2MiAxNy44Nkg3MS45MjJMNzQuMTIgMjMuNTQ0SDc0LjE0OEw3Ni4yNDggMTcuODZINzcuNDUyTDc0LjU2OCAyNS4yMUM3My44NTQgMjcuMDE2IDczLjE2OCAyNy41MDYgNzIuMjAyIDI3LjUwNlpNODQuMjM3IDE3Ljg2VjE4Ljg0SDgyLjgzN1YyMy4xMzhDODIuODM3IDIzLjg5NCA4My4wMTkgMjQuMDkgODMuNjQ5IDI0LjA5QzgzLjg4NyAyNC4wOSA4My45OTkgMjQuMDc2IDg0LjIzNyAyNC4wNDhWMjVDODMuOTE1IDI1LjA1NiA4My43NDcgMjUuMDcgODMuNDk1IDI1LjA3QzgyLjQ0NSAyNS4wNyA4MS43MTcgMjQuNzA2IDgxLjcxNyAyMy4wODJWMTguODRIODAuNjY3VjE3Ljg2SDgxLjcxN1YxNS40OEg4Mi44MzdWMTcuODZIODQuMjM3Wk04OC41MDk1IDI1LjIxQzg2LjMyNTUgMjUuMjEgODUuMDA5NSAyMy42NTYgODUuMDA5NSAyMS40M0M4NS4wMDk1IDE5LjIwNCA4Ni4zMjU1IDE3LjY1IDg4LjUwOTUgMTcuNjVDOTAuNjc5NSAxNy42NSA5MS45OTU1IDE5LjIwNCA5MS45OTU1IDIxLjQzQzkxLjk5NTUgMjMuNjU2IDkwLjY3OTUgMjUuMjEgODguNTA5NSAyNS4yMVpNODguNTA5NSAyNC4yM0M5MC4xMDU1IDI0LjIzIDkwLjgxOTUgMjIuOTU2IDkwLjgxOTUgMjEuNDNDOTAuODE5NSAxOS45MDQgOTAuMTA1NSAxOC42MyA4OC41MDk1IDE4LjYzQzg2Ljg5OTUgMTguNjMgODYuMTg1NSAxOS45MDQgODYuMTg1NSAyMS40M0M4Ni4xODU1IDIyLjk1NiA4Ni44OTk1IDI0LjIzIDg4LjUwOTUgMjQuMjNaTTk3Ljk4IDI1SDk2LjcyVjE0Ljk5SDEwMC43MzhDMTAyLjkzNiAxNC45OSAxMDQuMDg0IDE2LjAyNiAxMDQuMDg0IDE3Ljg3NEMxMDQuMDg0IDE5LjEyIDEwMy4zMTQgMjAuMDcyIDEwMi4yNjQgMjAuMzI0VjIwLjM1MkMxMDQuNTE4IDIwLjc4NiAxMDMuNjkyIDI0Ljc0OCAxMDQuMjI0IDI0LjkxNlYyNUgxMDIuODY2QzEwMi40MzIgMjQuNTggMTAzLjM4NCAyMC45NTQgMTAwLjg1IDIwLjk1NEg5Ny45OFYyNVpNOTcuOTggMTkuODM0SDEwMC40NDRDMTAxLjk3IDE5LjgzNCAxMDIuODI0IDE5LjE0OCAxMDIuODI0IDE3LjkwMkMxMDIuODI0IDE2Ljc1NCAxMDIuMTggMTYuMTEgMTAwLjQ4NiAxNi4xMUg5Ny45OFYxOS44MzRaTTExMS45NjIgMjEuMTY0QzExMS45NjIgMjEuMzc0IDExMS45NjIgMjEuNjEyIDExMS45NDggMjEuNzI0SDEwNi4zNjJDMTA2LjM5IDIyLjk4NCAxMDcuMDkgMjQuMjQ0IDEwOC42NzIgMjQuMjQ0QzExMC4wNzIgMjQuMjQ0IDExMC42MDQgMjMuMzA2IDExMC43MyAyMi44MDJIMTExLjg2NEMxMTEuNSAyNC4xMzIgMTEwLjQ5MiAyNS4yMSAxMDguNjU4IDI1LjIxQzEwNi40MDQgMjUuMjEgMTA1LjE4NiAyMy41ODYgMTA1LjE4NiAyMS40MTZDMTA1LjE4NiAxOS4xMzQgMTA2LjU0NCAxNy42NSAxMDguNjU4IDE3LjY1QzExMC43NDQgMTcuNjUgMTExLjk2MiAxOS4wNzggMTExLjk2MiAyMS4xNjRaTTEwNi4zNjIgMjAuNzQ0SDExMC43NzJDMTEwLjc3MiAxOS41NjggMTA5LjkzMiAxOC42MTYgMTA4LjYwMiAxOC42MTZDMTA3LjM3IDE4LjYxNiAxMDYuNDMyIDE5LjQ5OCAxMDYuMzYyIDIwLjc0NFpNMTE2LjgzMyAxNy42NjRDMTE4LjEzNSAxNy42NjQgMTE5LjIyNyAxOC4zNzggMTE5LjIyNyAyMC4wMTZWMjVIMTE4LjEwN1YyMC4yOTZDMTE4LjEwNyAxOS4zNzIgMTE3LjY3MyAxOC42NDQgMTE2LjU1MyAxOC42NDRDMTE1LjI5MyAxOC42NDQgMTE0LjQ1MyAxOS40NDIgMTE0LjQ1MyAyMC41NDhWMjVIMTEzLjMzM1YxNy44NkgxMTQuNDUzVjE4LjcxNEgxMTQuNDgxQzExNC44NTkgMTguMjEgMTE1LjYxNSAxNy42NjQgMTE2LjgzMyAxNy42NjRaTTEyNi4wNDcgMTguNzg0VjE0Ljk5SDEyNy4xNjdWMjVIMTI2LjA0N1YyNC4xMThIMTI2LjAxOUMxMjUuNTk5IDI0LjY2NCAxMjQuOTI3IDI1LjE5NiAxMjMuNzc5IDI1LjE5NkMxMjEuOTg3IDI1LjE5NiAxMjAuNTU5IDIzLjc4MiAxMjAuNTU5IDIxLjQzQzEyMC41NTkgMTkuMDc4IDEyMS45ODcgMTcuNjY0IDEyMy43NzkgMTcuNjY0QzEyNC45MjcgMTcuNjY0IDEyNS41OTkgMTguMTY4IDEyNi4wMTkgMTguNzg0SDEyNi4wNDdaTTEyMy44OTEgMjQuMjE2QzEyNS4yMjEgMjQuMjE2IDEyNi4wNDcgMjMuMTEgMTI2LjA0NyAyMS40M0MxMjYuMDQ3IDE5Ljc1IDEyNS4yMjEgMTguNjQ0IDEyMy44OTEgMTguNjQ0QzEyMi40MjEgMTguNjQ0IDEyMS43MzUgMjAuMDMgMTIxLjczNSAyMS40M0MxMjEuNzM1IDIyLjgzIDEyMi40MjEgMjQuMjE2IDEyMy44OTEgMjQuMjE2Wk0xMzUuMzIzIDIxLjE2NEMxMzUuMzIzIDIxLjM3NCAxMzUuMzIzIDIxLjYxMiAxMzUuMzA5IDIxLjcyNEgxMjkuNzIzQzEyOS43NTEgMjIuOTg0IDEzMC40NTEgMjQuMjQ0IDEzMi4wMzMgMjQuMjQ0QzEzMy40MzMgMjQuMjQ0IDEzMy45NjUgMjMuMzA2IDEzNC4wOTEgMjIuODAySDEzNS4yMjVDMTM0Ljg2MSAyNC4xMzIgMTMzLjg1MyAyNS4yMSAxMzIuMDE5IDI1LjIxQzEyOS43NjUgMjUuMjEgMTI4LjU0NyAyMy41ODYgMTI4LjU0NyAyMS40MTZDMTI4LjU0NyAxOS4xMzQgMTI5LjkwNSAxNy42NSAxMzIuMDE5IDE3LjY1QzEzNC4xMDUgMTcuNjUgMTM1LjMyMyAxOS4wNzggMTM1LjMyMyAyMS4xNjRaTTEyOS43MjMgMjAuNzQ0SDEzNC4xMzNDMTM0LjEzMyAxOS41NjggMTMzLjI5MyAxOC42MTYgMTMxLjk2MyAxOC42MTZDMTMwLjczMSAxOC42MTYgMTI5Ljc5MyAxOS40OTggMTI5LjcyMyAyMC43NDRaTTEzOS44MTYgMTcuNjY0QzE0MC4wODIgMTcuNjY0IDE0MC4yNzggMTcuNjc4IDE0MC40NzQgMTcuNzA2VjE4LjgyNkMxNDAuMzA2IDE4Ljc5OCAxNDAuMTggMTguNzg0IDE0MC4wMTIgMTguNzg0QzEzOC42OTYgMTguNzg0IDEzNy44MTQgMTkuODIgMTM3LjgxNCAyMS4xOTJWMjVIMTM2LjY5NFYxNy44NkgxMzcuODE0VjE5LjI3NEgxMzcuODQyQzEzOC4yMiAxOC4zMzYgMTM4Ljc5NCAxNy42NjQgMTM5LjgxNiAxNy42NjRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K"},59397:(M,j,N)=>{N.r(j),N.d(j,{assets:()=>A,contentTitle:()=>y,default:()=>x,frontMatter:()=>T,metadata:()=>D,toc:()=>u});const D=JSON.parse('{"id":"Deployment/deployment-render","title":"Deploy Langflow on Render","description":"This guide explains how to deploy Langflow on Render, a cloud platform for deploying web applications and APIs.","source":"@site/docs/Deployment/deployment-render.mdx","sourceDirName":"Deployment","slug":"/deployment-render","permalink":"/deployment-render","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Deploy Langflow on Render","slug":"/deployment-render"},"sidebar":"docs","previous":{"title":"Railway","permalink":"/deployment-railway"},"next":{"title":"Security","permalink":"/security"}}');var I=N(74848),g=N(28453);const T={title:"Deploy Langflow on Render",slug:"/deployment-render"},y=void 0,A={},u=[];function E(M){const j={a:"a",code:"code",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,g.R)(),...M.components};return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(j.p,{children:["This guide explains how to deploy Langflow on ",(0,I.jsx)(j.a,{href:"https://render.com/",children:"Render"}),", a cloud platform for deploying web applications and APIs."]}),"\n",(0,I.jsxs)(j.ol,{children:["\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsx)(j.p,{children:"Prepare a Render instance that can support Langflow."}),"\n",(0,I.jsxs)(j.p,{children:["Langflow requires at least 2 GB of RAM to run, so you must use a Render instance type of ",(0,I.jsx)(j.strong,{children:"Standard"})," or better.\nThis requires a paid Render account.\nFor more information, see ",(0,I.jsx)(j.a,{href:"https://render.com/docs/web-services",children:"Render Web Services"})," and ",(0,I.jsx)(j.a,{href:"https://render.com/pricing",children:"Render pricing"}),"."]}),"\n"]}),"\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsx)(j.p,{children:"Follow this link to start a Langflow deployment on Render:"}),"\n",(0,I.jsx)(j.p,{children:(0,I.jsx)(j.a,{href:"https://render.com/deploy?repo=https%3A%2F%2Fgithub.com%2Flangflow-ai%2Flangflow%2Ftree%2Fdev",children:(0,I.jsx)(j.img,{alt:"Deploy to Render",src:N(1975).A+"",width:"153",height:"40"})})}),"\n"]}),"\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsxs)(j.p,{children:["Enter a blueprint name, select the branch for your ",(0,I.jsx)(j.code,{children:"render.yaml"})," file, and then click ",(0,I.jsx)(j.strong,{children:"Deploy Blueprint"}),"."]}),"\n"]}),"\n"]}),"\n",(0,I.jsx)(j.p,{children:"When deployment is complete, your Langflow instance is ready to use."})]})}function x(M={}){const{wrapper:j}={...(0,g.R)(),...M.components};return j?(0,I.jsx)(j,{...M,children:(0,I.jsx)(E,{...M})}):E(M)}}}]); \ No newline at end of file diff --git a/assets/js/6e85978c.21559946.js b/assets/js/6e85978c.21559946.js new file mode 100644 index 0000000000..cbc9b66574 --- /dev/null +++ b/assets/js/6e85978c.21559946.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8090],{17901:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/prompt-component-with-multiple-inputs-6e43783422ff57a873929aa2c97f43f0.png"},27389:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/prompt-component-4917278161834031f30525642b4fd87e.png"},36813:(e,n,o)=>{o.d(n,{Ay:()=>i,RM:()=>c});var t=o(74848),s=o(28453),r=o(40619);const c=[];function l(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["Legacy components are longer supported and can be removed in a future release.\nYou can continue to use them in existing flows, but it is recommended that you replace them with supported components as soon as possible.\nSuggested replacements are included in the ",(0,t.jsx)(n.strong,{children:"Legacy"})," banner on components in your flows.\nThey are also given in release notes and Langflow documentation whenever possible."]}),"\n",(0,t.jsxs)(n.p,{children:["If you aren't sure how to replace a legacy component, ",(0,t.jsx)(r.A,{name:"Search","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Search"})," for components by provider, service, or component name.\nThe component may have been deprecated in favor of a completely new component, a similar component, or a new version of the same component in a different category."]}),"\n",(0,t.jsxs)(n.p,{children:["If there is no obvious replacement, consider whether another component can be adapted to your use case.\nFor example, many ",(0,t.jsx)(r.A,{name:"Component","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Core components"})," provide generic functionality that can support multiple providers and use cases, such as the ",(0,t.jsxs)(n.a,{href:"/components-data#api-request",children:[(0,t.jsx)(n.strong,{children:"API Request"})," component"]}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["If neither of these options are viable, you could use the legacy component's code to create your own custom component, or ",(0,t.jsx)(n.a,{href:"/contributing-github-issues",children:"start a discussion"})," about the legacy component."]}),"\n",(0,t.jsxs)(n.p,{children:["To discourage use of legacy components in new flows, these components are hidden by default.\nIn the visual editor, you can click ",(0,t.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Component settings"})," to toggle the ",(0,t.jsx)(n.strong,{children:"Legacy"})," filter."]})]})}function i(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},40661:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>u,contentTitle:()=>p,default:()=>x,frontMatter:()=>a,metadata:()=>t,toc:()=>m});const t=JSON.parse('{"id":"Components/concepts-components","title":"Components overview","description":"Components are the building blocks of your flows.","source":"@site/docs/Components/concepts-components.mdx","sourceDirName":"Components","slug":"/concepts-components","permalink":"/concepts-components","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Components overview","slug":"/concepts-components"},"sidebar":"docs","previous":{"title":"Security","permalink":"/security"},"next":{"title":"Input / Output","permalink":"/components-io"}}');var s=o(74848),r=o(28453),c=o(24754),l=o(40619),i=o(36813);const a={title:"Components overview",slug:"/concepts-components"},p=void 0,d={},h={annotations:c.hk,Code:c.Cy},u={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},m=[{value:"Add a component to a flow",id:"component-menus",level:2},{value:"Configure a component",id:"configure-a-component",level:3},{value:"Component header menus",id:"component-header-menus",level:3},{value:"Rename a component",id:"rename-a-component",level:3},{value:"Run a component",id:"run-a-component",level:3},{value:"Inspect component output and logs",id:"inspect-component-output-and-logs",level:3},{value:"Freeze a component",id:"freeze-a-component",level:3},{value:"Component ports",id:"component-ports",level:2},{value:"Dynamic ports",id:"dynamic-ports",level:3},{value:"Output type selection",id:"output-type-selection",level:3},{value:"Port colors",id:"port-colors",level:3},{value:"Component code",id:"component-code",level:2},{value:"Component versions",id:"component-versions",level:2},{value:"Update component versions",id:"update-component-versions",level:3},{value:"Group components",id:"group-components",level:2},{value:"Legacy components",id:"legacy-components",level:2},...i.RM];function g(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return h||y("CH",!1),h.Code||y("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(n.p,{children:"Components are the building blocks of your flows.\nLike classes in an application, each component is designed for a specific use case or integration."}),"\n",(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsx)(n.p,{children:"Langflow provides keyboard shortcuts for the workspace."}),(0,s.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, select ",(0,s.jsx)(n.strong,{children:"Settings"}),", and then click ",(0,s.jsx)(n.strong,{children:"Shortcuts"})," to view the available shortcuts."]})]}),"\n",(0,s.jsx)(n.h2,{id:"component-menus",children:"Add a component to a flow"}),"\n",(0,s.jsxs)(n.p,{children:["To add a component to a flow, drag the component from the ",(0,s.jsx)(l.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Core components"})," or ",(0,s.jsx)(l.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Bundles"})," menu into the ",(0,s.jsx)(n.a,{href:"/concepts-overview#workspace",children:"workspace"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Components are grouped by type or provider, and some components are hidden by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(l.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Core components"}),": Langflow's base components are grouped by purpose, such as ",(0,s.jsx)(n.strong,{children:"Inputs and Outputs"})," or ",(0,s.jsx)(n.strong,{children:"Data"}),".\nThese components either provide generic functionality, like loops and parsing, or they provide single components that support multiple third-party integrations."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(l.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Bundles"}),": Bundles contain one or more components that support specific third-party integrations, and they are grouped by service provider."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Legacy"}),": These components are hidden by default.\nFor more information, see ",(0,s.jsx)(n.a,{href:"#legacy-components",children:"Legacy components"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"configure-a-component",children:"Configure a component"}),"\n",(0,s.jsx)(n.p,{children:"After adding a component to a flow, configure the component's parameters and connect it to the other components in your flows."}),"\n",(0,s.jsxs)(n.p,{children:["Each component has inputs, outputs, parameters, and controls related to the component's purpose.\nBy default, components show only required and common options.\nTo access additional settings and controls, including meta settings, use the ",(0,s.jsx)(n.a,{href:"#component-header-menus",children:"component's header menu"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"component-header-menus",children:"Component header menus"}),"\n",(0,s.jsx)(n.p,{children:"To access a component's header menu, click the component in your workspace."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Agent component",src:o(58876).A+"",width:"1948",height:"3344"})}),"\n",(0,s.jsx)(n.p,{children:"A few options are available directly on the header menu.\nFor example:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Code"}),": Modify component settings by directly editing the component's Python code."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Controls"}),": Adjust all component parameters, including optional settings that are hidden by default."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Tool Mode"}),": Enable this option when combining a component with an ",(0,s.jsx)(n.strong,{children:"Agent"})," component."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For all other options, including ",(0,s.jsx)(n.strong,{children:"Delete"})," and ",(0,s.jsx)(n.strong,{children:"Duplicate"})," controls, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"rename-a-component",children:"Rename a component"}),"\n",(0,s.jsxs)(n.p,{children:["To modify a component's name or description, click the component in the workspace, and then click ",(0,s.jsx)(l.A,{name:"PencilLine","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Edit"}),".\nComponent descriptions accept Markdown syntax."]}),"\n",(0,s.jsx)(n.h3,{id:"run-a-component",children:"Run a component"}),"\n",(0,s.jsxs)(n.p,{children:["To run a single component, click ",(0,s.jsx)(l.A,{name:"Play","aria-label":"Play button"})," ",(0,s.jsx)(n.strong,{children:"Run component"}),".\nA ",(0,s.jsx)(n.strong,{children:"Last Run"})," value indicates that the component ran successfully."]}),"\n",(0,s.jsxs)(n.p,{children:["Running a single component is different from running an entire flow. In a single component run, the ",(0,s.jsx)(n.code,{children:"build_vertex"})," function is called, which builds and runs only the single component with direct inputs provided through the visual editor (the ",(0,s.jsx)(n.code,{children:"inputs_dict"})," parameter). The ",(0,s.jsx)(n.code,{children:"VertexBuildResult"})," data is passed to the ",(0,s.jsx)(n.code,{children:"build_and_run"})," method that calls the component's ",(0,s.jsx)(n.code,{children:"build"})," method and runs it. Unlike running an entire flow, running a single component doesn't automatically execute its upstream dependencies."]}),"\n",(0,s.jsx)(n.h3,{id:"inspect-component-output-and-logs",children:"Inspect component output and logs"}),"\n",(0,s.jsxs)(n.p,{children:["To view the output and logs for a single component, click ",(0,s.jsx)(l.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Inspect"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"freeze-a-component",children:"Freeze a component"}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Freezing a component also freezes all components upstream of the selected component."})}),"\n",(0,s.jsxs)(n.p,{children:["Use the freeze option if you expect consistent output from a component ",(0,s.jsx)(n.em,{children:"and all upstream components"}),", and you only need to run those components once."]}),"\n",(0,s.jsx)(n.p,{children:"Freezing a component prevents that component and all upstream components from re-running, and it preserves the last output state for those components.\nAny future flow runs use the preserved output."}),"\n",(0,s.jsxs)(n.p,{children:["To freeze a component, click the component in the workspace to expose the component's header menu, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),", and then select ",(0,s.jsx)(n.strong,{children:"Freeze"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"component-ports",children:"Component ports"}),"\n",(0,s.jsxs)(n.p,{children:["Around the border of each component, there are circular port icons like ",(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}}),".\nThese indicate a component ",(0,s.jsx)(n.em,{children:"connection point"})," or ",(0,s.jsx)(n.em,{children:"port"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Ports either accept input or produce output of a specific data type.\nYou can infer the data type from the field the port is attached to or from the ",(0,s.jsx)(n.a,{href:"#port-colors",children:"port's color"}),".\nFor example, the ",(0,s.jsx)(n.strong,{children:"System Message"})," field accepts ",(0,s.jsx)(n.a,{href:"/data-types#message",children:"message data"}),", as illustrated by the blue port icon: ",(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Prompt Template component with multiple inputs",src:o(27389).A+"",width:"2600",height:"3020"})}),"\n",(0,s.jsxs)(n.p,{children:["When building flows, connect output ports to input ports of the same type (color) to transfer that type of data between two components.\nFor information about the programmatic representation of each data type, see ",(0,s.jsx)(n.a,{href:"/data-types",children:"Langflow data types"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the workspace, hover over a port to see connection details for that port.\nClick a port to ",(0,s.jsx)(l.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Search"})," for compatible components."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If two components have incompatible data types, you can use a processing component like the ",(0,s.jsxs)(n.a,{href:"/components-processing#type-convert",children:[(0,s.jsx)(n.strong,{children:"Type Convert"})," component"]})," to convert the data between components."]}),"\n"]}),"\n"]})}),"\n",(0,s.jsx)(n.h3,{id:"dynamic-ports",children:"Dynamic ports"}),"\n",(0,s.jsxs)(n.p,{children:["Some components have ports that are dynamically added or removed.\nFor example, the ",(0,s.jsx)(n.strong,{children:"Prompt Template"})," component accepts ",(0,s.jsx)(n.a,{href:"/components-prompts#define-variables-in-prompts",children:"inputs wrapped in curly braces"}),", and new ports are opened when a value wrapped in curly braces is detected in the ",(0,s.jsx)(n.strong,{children:"Template"})," field."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Prompt Template component with multiple inputs",src:o(17901).A+"",width:"2104",height:"2928"})}),"\n",(0,s.jsx)(n.h3,{id:"output-type-selection",children:"Output type selection"}),"\n",(0,s.jsx)(n.p,{children:"All components produce output that is either sent to another component in the flow or returned as the final flow result."}),"\n",(0,s.jsx)(n.p,{children:"Some components can produce multiple types of output:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If the component emits all types at once, the component has multiple output ports in the visual editor. In component code, this is represented by ",(0,s.jsx)(n.code,{children:"group_outputs=True"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If the component emits only one type, you must select the output type by clicking the output label near the output port, and then selecting the desired output type. In component code, this is represented by ",(0,s.jsx)(n.code,{children:"group_outputs=False"})," or omitting the ",(0,s.jsx)(n.code,{children:"group_outputs"})," parameter."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For example, a language model component can output ",(0,s.jsx)(n.em,{children:"either"})," a ",(0,s.jsx)(n.strong,{children:"Model Response"})," or ",(0,s.jsx)(n.strong,{children:"Language Model"}),".\nThe ",(0,s.jsx)(n.strong,{children:"Model Response"})," output produces ",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})})," data that can be passed to another component's ",(0,s.jsx)(n.code,{children:"Message"})," port.\nThe ",(0,s.jsx)(n.strong,{children:"Language Model"})," output must be connected to a component with a ",(0,s.jsx)(n.strong,{children:"Language Model"})," input, such as the ",(0,s.jsxs)(n.a,{href:"/components-processing#structured-output",children:[(0,s.jsx)(n.strong,{children:"Structured Output"})," component"]}),", that uses the attached LLM to power the receiving component's reasoning."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Output type selection in the Language Model component",src:o(64599).A+"",width:"280",height:"446"})}),"\n",(0,s.jsx)(n.h3,{id:"port-colors",children:"Port colors"}),"\n",(0,s.jsxs)(n.p,{children:["Component port colors indicate the data type ingested or emitted by the port.\nFor example, a ",(0,s.jsx)(n.strong,{children:"Message"})," port either accepts or emits ",(0,s.jsx)(n.code,{children:"Message"})," data."]}),"\n",(0,s.jsx)(n.p,{children:"The following table lists the component data types and their corresponding port colors:"}),"\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:"Data type"}),(0,s.jsx)(n.th,{children:"Port color"}),(0,s.jsx)(n.th,{children:"Port icon example"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Data"}),(0,s.jsx)(n.td,{children:"Red"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Red data port",style:{color:"#dc2626",fill:"#dc2626"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"DataFrame"}),(0,s.jsx)(n.td,{children:"Pink"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Pink dataframe port",style:{color:"#ec4899",fill:"#ec4899"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Embeddings"}),(0,s.jsx)(n.td,{children:"Emerald"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Emerald embeddings port",style:{color:"#10b981",fill:"#10b981"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"LanguageModel"}),(0,s.jsx)(n.td,{children:"Fuchsia"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Fuchsia language model port",style:{color:"#c026d3",fill:"#c026d3"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Memory"}),(0,s.jsx)(n.td,{children:"Orange"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Orange memory port",style:{color:"#f97316",fill:"#f97316"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Message"}),(0,s.jsx)(n.td,{children:"Indigo"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Tool"}),(0,s.jsx)(n.td,{children:"Cyan"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Cyan tool port",style:{color:"#06b6d4",fill:"#06b6d4"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Unknown or multiple types"}),(0,s.jsx)(n.td,{children:"Gray"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Gray unknown port",style:{color:"#9CA3AF",fill:"#9CA3AF"}})})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"component-code",children:"Component code"}),"\n",(0,s.jsxs)(n.p,{children:["You can edit components in the ",(0,s.jsx)(n.a,{href:"/concepts-overview#workspace",children:"workspace"})," and in code. When editing a flow, select a component, and then click ",(0,s.jsx)(l.A,{name:"Code","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Code"})," to see and edit the component's underlying Python code."]}),"\n",(0,s.jsx)(n.p,{children:"All components have underlying code that determines how you configure them and what actions they can perform.\nIn the context of creating and running flows, component code does the following:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Determines what configuration options to show in the visual editor."}),"\n",(0,s.jsx)(n.li,{children:"Validates inputs based on the component's defined input types."}),"\n",(0,s.jsx)(n.li,{children:"Processes data using the configured parameters, methods, and functions."}),"\n",(0,s.jsx)(n.li,{children:"Passes results to the next component in the flow."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["All components inherit from a base ",(0,s.jsx)(n.code,{children:"Component"})," class that defines the component's interface and behavior.\nFor example, the ",(0,s.jsxs)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/components/langchain_utilities/recursive_character.py",children:[(0,s.jsx)(n.strong,{children:"Recursive Character Text Splitter"})," component"]})," is a child of the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/base/textsplitters/model.py",children:(0,s.jsx)(n.code,{children:"LCTextSplitterComponent"})})," class."]}),"\n",(0,s.jsxs)(n.p,{children:["Each component's code includes definitions for inputs and outputs, which are represented in the workspace as ",(0,s.jsx)(n.a,{href:"#component-ports",children:"component ports"}),".\nFor example, the ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," has four inputs. Each input definition specifies the input type, such as ",(0,s.jsx)(n.code,{children:"IntInput"}),", as well as the encoded name, display name, description, and other parameters for that specific input.\nThese values determine the component settings, such as display names and tooltips in the visual editor."]}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The maximum length of each chunk."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"1000",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The amount of overlap between chunks."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"200",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" DataInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"data_input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The texts to split."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" input_types",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"[",props:{style:{color:"#C9D1D9"}}},{content:'"Document"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"Data"',props:{style:{color:"#A5D6FF"}}},{content:"],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" MessageTextInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"'The characters to split on.",props:{style:{color:"#A5D6FF"}}},{content:"\\n",props:{style:{color:"#79C0FF"}}},{content:'If left empty defaults to ["',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:"n",props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", "',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", " ", ""].\'',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" is_list",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"True",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["Additionally, components have methods or functions that handle their functionality.\nFor example, the ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," has two methods:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"get_data_input",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Any:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".data_input",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_text_splitter",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> TextSplitter:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" if not ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators: list[",props:{style:{color:"#C9D1D9"}}},{content:"str",props:{style:{color:"#79C0FF"}}},{content:"] ",props:{style:{color:"#C9D1D9"}}},{content:"| ",props:{style:{color:"#FF7B72"}}},{content:"None ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:"None",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" else",props:{style:{color:"#FF7B72"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" # check if the separators list has escaped characters",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # if there are escaped characters, unescape them",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" separators ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [unescape_string(x) ",props:{style:{color:"#C9D1D9"}}},{content:"for",props:{style:{color:"#FF7B72"}}},{content:" x ",props:{style:{color:"#C9D1D9"}}},{content:"in ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" RecursiveCharacterTextSplitter(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"separators,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_size",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_size,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_overlap",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_overlap,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" )",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"get_data_input"})," method retrieves the text to be split from the component's input, which makes the data available to the class.\nThe ",(0,s.jsx)(n.code,{children:"build_text_splitter"})," method creates a ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," object by calling its parent class's ",(0,s.jsx)(n.code,{children:"build"})," method. Then, the text is split with the created splitter and passed to the next component."]}),"\n",(0,s.jsx)(n.h2,{id:"component-versions",children:"Component versions"}),"\n",(0,s.jsx)(n.p,{children:"Component versions and states are stored in an internal Langflow database. When you add a component to a flow, you create a detached copy of the component based on the information in the Langflow database.\nThese copies are detached from the primary Langflow database, and they don't synchronize with any updates that can occur when you upgrade your Langflow version."}),"\n",(0,s.jsxs)(n.p,{children:["In other words, an individual instance of a component retains the version number and state from the moment you add it to a specific flow. For example, if a component is at version 1.0 when you add it to a flow, it remains at version 1.0 ",(0,s.jsx)(n.em,{children:"in that flow"})," unless you update it."]}),"\n",(0,s.jsx)(n.h3,{id:"update-component-versions",children:"Update component versions"}),"\n",(0,s.jsx)(n.p,{children:"When editing a flow in the workspace, Langflow notifies you if a component's workspace version is behind the database version so you can update the component's workspace version:"}),"\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:"Update ready"}),": This notification means the component update contains no breaking changes."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Update available"}),": This notification means the component update might contain breaking changes."]}),"\n",(0,s.jsx)(n.p,{children:"Breaking changes modify component inputs and outputs, causing the components to be disconnected and break the flow. After updating the component, you might need to edit the component settings or reconnect component ports."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"There are two ways to update components:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Update"})," to update a single component. This is recommended for updates without breaking changes."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Review"})," to view all available updates and create a snapshot before updating. This is recommended for updates with breaking changes."]}),"\n",(0,s.jsxs)(n.p,{children:["To save a snapshot of your flow before updating the components, enable ",(0,s.jsx)(n.strong,{children:"Create backup flow before updating"}),". Backup flows are stored in the same project folder as the original flow with the suffix ",(0,s.jsx)(n.code,{children:"(backup)"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To update specific components, select the components you want to update, and then click ",(0,s.jsx)(n.strong,{children:"Update Components"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Components are updated to the latest available version, based on the version of Langflow you are running."}),"\n",(0,s.jsx)(n.h2,{id:"group-components",children:"Group components"}),"\n",(0,s.jsxs)(n.p,{children:["Multiple components can be grouped into a single component for reuse. This is useful for organizing large flows by combining related components together, such as a RAG ",(0,s.jsx)(n.strong,{children:"Agent"})," component and it's associated tools or vector store components."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Hold ",(0,s.jsx)("kbd",{children:"Shift"}),", and then click and drag to highlight all components you want to merge. Components must be completely within the selection area to be merged."]}),"\n",(0,s.jsxs)(n.p,{children:["Alternatively, to select components for merging one by one, hold ",(0,s.jsx)("kbd",{children:"Ctrl"})," on Windows or ",(0,s.jsx)("kbd",{children:"Cmd"})," on Mac, and then click each component to add them to the group."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Release the mouse and keyboard, and then click ",(0,s.jsx)(n.strong,{children:"Group"})," to merge the components into a single, group component."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Grouped components are configured and managed as a single component, including the component name, code, and settings."}),"\n",(0,s.jsxs)(n.p,{children:["To ungroup the components, click the component in the workspace to expose the component's header menu, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),", and then select ",(0,s.jsx)(n.strong,{children:"Ungroup"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["If you want to reuse this grouping in other flows, click the component in the workspace to expose the component's header menu, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),", and then select ",(0,s.jsx)(n.strong,{children:"Save"})," to save the component to the ",(0,s.jsx)(l.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Core components"})," menu as a custom component."]}),"\n",(0,s.jsx)(n.h2,{id:"legacy-components",children:"Legacy components"}),"\n","\n",(0,s.jsx)(i.Ay,{})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(g,{...e})}):g(e)}function y(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},58876:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/agent-component-4c496697124cfebd3883ee9ade19ca5c.png"},64599:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/select-output-f7d64629d278098e3fba32fe79f79ed6.png"}}]); \ No newline at end of file diff --git a/assets/js/6e85978c.4dfa2cd0.js b/assets/js/6e85978c.4dfa2cd0.js deleted file mode 100644 index bda5369f50..0000000000 --- a/assets/js/6e85978c.4dfa2cd0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8090],{17901:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/prompt-component-with-multiple-inputs-6e43783422ff57a873929aa2c97f43f0.png"},27389:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/prompt-component-4917278161834031f30525642b4fd87e.png"},36813:(e,n,o)=>{o.d(n,{Ay:()=>i,RM:()=>c});var t=o(74848),s=o(28453),r=o(40619);const c=[];function l(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["Legacy components are longer supported and can be removed in a future release.\nYou can continue to use them in existing flows, but it is recommended that you replace them with supported components as soon as possible.\nSuggested replacements are included in the ",(0,t.jsx)(n.strong,{children:"Legacy"})," banner on components in your flows.\nThey are also given in release notes and Langflow documentation whenever possible."]}),"\n",(0,t.jsxs)(n.p,{children:["If you aren't sure how to replace a legacy component, ",(0,t.jsx)(r.A,{name:"Search","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Search"})," for components by provider, service, or component name.\nThe component may have been deprecated in favor of a completely new component, a similar component, or a new version of the same component in a different category."]}),"\n",(0,t.jsxs)(n.p,{children:["If there is no obvious replacement, consider whether another component can be adapted to your use case.\nFor example, many ",(0,t.jsx)(r.A,{name:"Component","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Core components"})," provide generic functionality that can support multiple providers and use cases, such as the ",(0,t.jsxs)(n.a,{href:"/components-data#api-request",children:[(0,t.jsx)(n.strong,{children:"API Request"})," component"]}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["If neither of these options are viable, you could use the legacy component's code to create your own custom component, or ",(0,t.jsx)(n.a,{href:"/contributing-github-issues",children:"start a discussion"})," about the legacy component."]}),"\n",(0,t.jsxs)(n.p,{children:["To discourage use of legacy components in new flows, these components are hidden by default.\nIn the visual editor, you can click ",(0,t.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Component settings"})," to toggle the ",(0,t.jsx)(n.strong,{children:"Legacy"})," filter."]})]})}function i(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},40661:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>m,contentTitle:()=>p,default:()=>x,frontMatter:()=>a,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Components/concepts-components","title":"Components overview","description":"Components are the building blocks of your flows.","source":"@site/docs/Components/concepts-components.mdx","sourceDirName":"Components","slug":"/concepts-components","permalink":"/concepts-components","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Components overview","slug":"/concepts-components"},"sidebar":"docs","previous":{"title":"Render","permalink":"/deployment-render"},"next":{"title":"Input / Output","permalink":"/components-io"}}');var s=o(74848),r=o(28453),c=o(24754),l=o(40619),i=o(36813);const a={title:"Components overview",slug:"/concepts-components"},p=void 0,d={},h={annotations:c.hk,Code:c.Cy},m={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Add a component to a flow",id:"component-menus",level:2},{value:"Configure a component",id:"configure-a-component",level:3},{value:"Component header menus",id:"component-header-menus",level:3},{value:"Rename a component",id:"rename-a-component",level:3},{value:"Run a component",id:"run-a-component",level:3},{value:"Inspect component output and logs",id:"inspect-component-output-and-logs",level:3},{value:"Freeze a component",id:"freeze-a-component",level:3},{value:"Component ports",id:"component-ports",level:2},{value:"Dynamic ports",id:"dynamic-ports",level:3},{value:"Output type selection",id:"output-type-selection",level:3},{value:"Port colors",id:"port-colors",level:3},{value:"Component code",id:"component-code",level:2},{value:"Component versions",id:"component-versions",level:2},{value:"Update component versions",id:"update-component-versions",level:3},{value:"Group components",id:"group-components",level:2},{value:"Legacy components",id:"legacy-components",level:2},...i.RM];function g(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return h||y("CH",!1),h.Code||y("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,s.jsx)(n.p,{children:"Components are the building blocks of your flows.\nLike classes in an application, each component is designed for a specific use case or integration."}),"\n",(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsx)(n.p,{children:"Langflow provides keyboard shortcuts for the workspace."}),(0,s.jsxs)(n.p,{children:["In the Langflow header, click your profile icon, select ",(0,s.jsx)(n.strong,{children:"Settings"}),", and then click ",(0,s.jsx)(n.strong,{children:"Shortcuts"})," to view the available shortcuts."]})]}),"\n",(0,s.jsx)(n.h2,{id:"component-menus",children:"Add a component to a flow"}),"\n",(0,s.jsxs)(n.p,{children:["To add a component to a flow, drag the component from the ",(0,s.jsx)(l.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Core components"})," or ",(0,s.jsx)(l.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Bundles"})," menu into the ",(0,s.jsx)(n.a,{href:"/concepts-overview#workspace",children:"workspace"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Components are grouped by type or provider, and some components are hidden by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(l.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Core components"}),": Langflow's base components are grouped by purpose, such as ",(0,s.jsx)(n.strong,{children:"Inputs and Outputs"})," or ",(0,s.jsx)(n.strong,{children:"Data"}),".\nThese components either provide generic functionality, like loops and parsing, or they provide single components that support multiple third-party integrations."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(l.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Bundles"}),": Bundles contain one or more components that support specific third-party integrations, and they are grouped by service provider."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Legacy"}),": These components are hidden by default.\nFor more information, see ",(0,s.jsx)(n.a,{href:"#legacy-components",children:"Legacy components"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"configure-a-component",children:"Configure a component"}),"\n",(0,s.jsx)(n.p,{children:"After adding a component to a flow, configure the component's parameters and connect it to the other components in your flows."}),"\n",(0,s.jsxs)(n.p,{children:["Each component has inputs, outputs, parameters, and controls related to the component's purpose.\nBy default, components show only required and common options.\nTo access additional settings and controls, including meta settings, use the ",(0,s.jsx)(n.a,{href:"#component-header-menus",children:"component's header menu"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"component-header-menus",children:"Component header menus"}),"\n",(0,s.jsx)(n.p,{children:"To access a component's header menu, click the component in your workspace."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Agent component",src:o(58876).A+"",width:"1948",height:"3344"})}),"\n",(0,s.jsx)(n.p,{children:"A few options are available directly on the header menu.\nFor example:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Code"}),": Modify component settings by directly editing the component's Python code."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Controls"}),": Adjust all component parameters, including optional settings that are hidden by default."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Tool Mode"}),": Enable this option when combining a component with an ",(0,s.jsx)(n.strong,{children:"Agent"})," component."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For all other options, including ",(0,s.jsx)(n.strong,{children:"Delete"})," and ",(0,s.jsx)(n.strong,{children:"Duplicate"})," controls, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"rename-a-component",children:"Rename a component"}),"\n",(0,s.jsxs)(n.p,{children:["To modify a component's name or description, click the component in the workspace, and then click ",(0,s.jsx)(l.A,{name:"PencilLine","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Edit"}),".\nComponent descriptions accept Markdown syntax."]}),"\n",(0,s.jsx)(n.h3,{id:"run-a-component",children:"Run a component"}),"\n",(0,s.jsxs)(n.p,{children:["To run a single component, click ",(0,s.jsx)(l.A,{name:"Play","aria-label":"Play button"})," ",(0,s.jsx)(n.strong,{children:"Run component"}),".\nA ",(0,s.jsx)(n.strong,{children:"Last Run"})," value indicates that the component ran successfully."]}),"\n",(0,s.jsxs)(n.p,{children:["Running a single component is different from running an entire flow. In a single component run, the ",(0,s.jsx)(n.code,{children:"build_vertex"})," function is called, which builds and runs only the single component with direct inputs provided through the visual editor (the ",(0,s.jsx)(n.code,{children:"inputs_dict"})," parameter). The ",(0,s.jsx)(n.code,{children:"VertexBuildResult"})," data is passed to the ",(0,s.jsx)(n.code,{children:"build_and_run"})," method that calls the component's ",(0,s.jsx)(n.code,{children:"build"})," method and runs it. Unlike running an entire flow, running a single component doesn't automatically execute its upstream dependencies."]}),"\n",(0,s.jsx)(n.h3,{id:"inspect-component-output-and-logs",children:"Inspect component output and logs"}),"\n",(0,s.jsxs)(n.p,{children:["To view the output and logs for a single component, click ",(0,s.jsx)(l.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Inspect"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"freeze-a-component",children:"Freeze a component"}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Freezing a component also freezes all components upstream of the selected component."})}),"\n",(0,s.jsxs)(n.p,{children:["Use the freeze option if you expect consistent output from a component ",(0,s.jsx)(n.em,{children:"and all upstream components"}),", and you only need to run those components once."]}),"\n",(0,s.jsx)(n.p,{children:"Freezing a component prevents that component and all upstream components from re-running, and it preserves the last output state for those components.\nAny future flow runs use the preserved output."}),"\n",(0,s.jsxs)(n.p,{children:["To freeze a component, click the component in the workspace to expose the component's header menu, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),", and then select ",(0,s.jsx)(n.strong,{children:"Freeze"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"component-ports",children:"Component ports"}),"\n",(0,s.jsxs)(n.p,{children:["Around the border of each component, there are circular port icons like ",(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}}),".\nThese indicate a component ",(0,s.jsx)(n.em,{children:"connection point"})," or ",(0,s.jsx)(n.em,{children:"port"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Ports either accept input or produce output of a specific data type.\nYou can infer the data type from the field the port is attached to or from the ",(0,s.jsx)(n.a,{href:"#port-colors",children:"port's color"}),".\nFor example, the ",(0,s.jsx)(n.strong,{children:"System Message"})," field accepts ",(0,s.jsx)(n.a,{href:"/data-types#message",children:"message data"}),", as illustrated by the blue port icon: ",(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Prompt Template component with multiple inputs",src:o(27389).A+"",width:"2600",height:"3020"})}),"\n",(0,s.jsxs)(n.p,{children:["When building flows, connect output ports to input ports of the same type (color) to transfer that type of data between two components.\nFor information about the programmatic representation of each data type, see ",(0,s.jsx)(n.a,{href:"/data-types",children:"Langflow data types"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the workspace, hover over a port to see connection details for that port.\nClick a port to ",(0,s.jsx)(l.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Search"})," for compatible components."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If two components have incompatible data types, you can use a processing component like the ",(0,s.jsxs)(n.a,{href:"/components-processing#type-convert",children:[(0,s.jsx)(n.strong,{children:"Type Convert"})," component"]})," to convert the data between components."]}),"\n"]}),"\n"]})}),"\n",(0,s.jsx)(n.h3,{id:"dynamic-ports",children:"Dynamic ports"}),"\n",(0,s.jsxs)(n.p,{children:["Some components have ports that are dynamically added or removed.\nFor example, the ",(0,s.jsx)(n.strong,{children:"Prompt Template"})," component accepts ",(0,s.jsx)(n.a,{href:"/components-prompts#define-variables-in-prompts",children:"inputs wrapped in curly braces"}),", and new ports are opened when a value wrapped in curly braces is detected in the ",(0,s.jsx)(n.strong,{children:"Template"})," field."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Prompt Template component with multiple inputs",src:o(17901).A+"",width:"2104",height:"2928"})}),"\n",(0,s.jsx)(n.h3,{id:"output-type-selection",children:"Output type selection"}),"\n",(0,s.jsx)(n.p,{children:"All components produce output that is either sent to another component in the flow or returned as the final flow result."}),"\n",(0,s.jsx)(n.p,{children:"Some components can produce multiple types of output:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If the component emits all types at once, the component has multiple output ports in the visual editor. In component code, this is represented by ",(0,s.jsx)(n.code,{children:"group_outputs=True"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If the component emits only one type, you must select the output type by clicking the output label near the output port, and then selecting the desired output type. In component code, this is represented by ",(0,s.jsx)(n.code,{children:"group_outputs=False"})," or omitting the ",(0,s.jsx)(n.code,{children:"group_outputs"})," parameter."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For example, a language model component can output ",(0,s.jsx)(n.em,{children:"either"})," a ",(0,s.jsx)(n.strong,{children:"Model Response"})," or ",(0,s.jsx)(n.strong,{children:"Language Model"}),".\nThe ",(0,s.jsx)(n.strong,{children:"Model Response"})," output produces ",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})})," data that can be passed to another component's ",(0,s.jsx)(n.code,{children:"Message"})," port.\nThe ",(0,s.jsx)(n.strong,{children:"Language Model"})," output must be connected to a component with a ",(0,s.jsx)(n.strong,{children:"Language Model"})," input, such as the ",(0,s.jsxs)(n.a,{href:"/components-processing#structured-output",children:[(0,s.jsx)(n.strong,{children:"Structured Output"})," component"]}),", that uses the attached LLM to power the receiving component's reasoning."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Output type selection in the Language Model component",src:o(64599).A+"",width:"280",height:"446"})}),"\n",(0,s.jsx)(n.h3,{id:"port-colors",children:"Port colors"}),"\n",(0,s.jsxs)(n.p,{children:["Component port colors indicate the data type ingested or emitted by the port.\nFor example, a ",(0,s.jsx)(n.strong,{children:"Message"})," port either accepts or emits ",(0,s.jsx)(n.code,{children:"Message"})," data."]}),"\n",(0,s.jsx)(n.p,{children:"The following table lists the component data types and their corresponding port colors:"}),"\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:"Data type"}),(0,s.jsx)(n.th,{children:"Port color"}),(0,s.jsx)(n.th,{children:"Port icon example"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Data"}),(0,s.jsx)(n.td,{children:"Red"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Red data port",style:{color:"#dc2626",fill:"#dc2626"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"DataFrame"}),(0,s.jsx)(n.td,{children:"Pink"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Pink dataframe port",style:{color:"#ec4899",fill:"#ec4899"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Embeddings"}),(0,s.jsx)(n.td,{children:"Emerald"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Emerald embeddings port",style:{color:"#10b981",fill:"#10b981"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"LanguageModel"}),(0,s.jsx)(n.td,{children:"Fuchsia"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Fuchsia language model port",style:{color:"#c026d3",fill:"#c026d3"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Memory"}),(0,s.jsx)(n.td,{children:"Orange"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Orange memory port",style:{color:"#f97316",fill:"#f97316"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Message"}),(0,s.jsx)(n.td,{children:"Indigo"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Tool"}),(0,s.jsx)(n.td,{children:"Cyan"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Cyan tool port",style:{color:"#06b6d4",fill:"#06b6d4"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Unknown or multiple types"}),(0,s.jsx)(n.td,{children:"Gray"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"Gray unknown port",style:{color:"#9CA3AF",fill:"#9CA3AF"}})})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"component-code",children:"Component code"}),"\n",(0,s.jsxs)(n.p,{children:["You can edit components in the ",(0,s.jsx)(n.a,{href:"/concepts-overview#workspace",children:"workspace"})," and in code. When editing a flow, select a component, and then click ",(0,s.jsx)(l.A,{name:"Code","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Code"})," to see and edit the component's underlying Python code."]}),"\n",(0,s.jsx)(n.p,{children:"All components have underlying code that determines how you configure them and what actions they can perform.\nIn the context of creating and running flows, component code does the following:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Determines what configuration options to show in the visual editor."}),"\n",(0,s.jsx)(n.li,{children:"Validates inputs based on the component's defined input types."}),"\n",(0,s.jsx)(n.li,{children:"Processes data using the configured parameters, methods, and functions."}),"\n",(0,s.jsx)(n.li,{children:"Passes results to the next component in the flow."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["All components inherit from a base ",(0,s.jsx)(n.code,{children:"Component"})," class that defines the component's interface and behavior.\nFor example, the ",(0,s.jsxs)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/components/langchain_utilities/recursive_character.py",children:[(0,s.jsx)(n.strong,{children:"Recursive Character Text Splitter"})," component"]})," is a child of the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/base/textsplitters/model.py",children:(0,s.jsx)(n.code,{children:"LCTextSplitterComponent"})})," class."]}),"\n",(0,s.jsxs)(n.p,{children:["Each component's code includes definitions for inputs and outputs, which are represented in the workspace as ",(0,s.jsx)(n.a,{href:"#component-ports",children:"component ports"}),".\nFor example, the ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," has four inputs. Each input definition specifies the input type, such as ",(0,s.jsx)(n.code,{children:"IntInput"}),", as well as the encoded name, display name, description, and other parameters for that specific input.\nThese values determine the component settings, such as display names and tooltips in the visual editor."]}),"\n",(0,s.jsx)(h.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The maximum length of each chunk."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"1000",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The amount of overlap between chunks."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"200",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" DataInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"data_input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The texts to split."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" input_types",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"[",props:{style:{color:"#C9D1D9"}}},{content:'"Document"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"Data"',props:{style:{color:"#A5D6FF"}}},{content:"],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" MessageTextInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"'The characters to split on.",props:{style:{color:"#A5D6FF"}}},{content:"\\n",props:{style:{color:"#79C0FF"}}},{content:'If left empty defaults to ["',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:"n",props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", "',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", " ", ""].\'',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" is_list",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"True",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["Additionally, components have methods or functions that handle their functionality.\nFor example, the ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," has two methods:"]}),"\n",(0,s.jsx)(h.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"get_data_input",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Any:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".data_input",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_text_splitter",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> TextSplitter:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" if not ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators: list[",props:{style:{color:"#C9D1D9"}}},{content:"str",props:{style:{color:"#79C0FF"}}},{content:"] ",props:{style:{color:"#C9D1D9"}}},{content:"| ",props:{style:{color:"#FF7B72"}}},{content:"None ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:"None",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" else",props:{style:{color:"#FF7B72"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" # check if the separators list has escaped characters",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # if there are escaped characters, unescape them",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" separators ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [unescape_string(x) ",props:{style:{color:"#C9D1D9"}}},{content:"for",props:{style:{color:"#FF7B72"}}},{content:" x ",props:{style:{color:"#C9D1D9"}}},{content:"in ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" RecursiveCharacterTextSplitter(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"separators,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_size",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_size,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_overlap",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_overlap,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" )",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"get_data_input"})," method retrieves the text to be split from the component's input, which makes the data available to the class.\nThe ",(0,s.jsx)(n.code,{children:"build_text_splitter"})," method creates a ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," object by calling its parent class's ",(0,s.jsx)(n.code,{children:"build"})," method. Then, the text is split with the created splitter and passed to the next component."]}),"\n",(0,s.jsx)(n.h2,{id:"component-versions",children:"Component versions"}),"\n",(0,s.jsx)(n.p,{children:"Component versions and states are stored in an internal Langflow database. When you add a component to a flow, you create a detached copy of the component based on the information in the Langflow database.\nThese copies are detached from the primary Langflow database, and they don't synchronize with any updates that can occur when you upgrade your Langflow version."}),"\n",(0,s.jsxs)(n.p,{children:["In other words, an individual instance of a component retains the version number and state from the moment you add it to a specific flow. For example, if a component is at version 1.0 when you add it to a flow, it remains at version 1.0 ",(0,s.jsx)(n.em,{children:"in that flow"})," unless you update it."]}),"\n",(0,s.jsx)(n.h3,{id:"update-component-versions",children:"Update component versions"}),"\n",(0,s.jsx)(n.p,{children:"When editing a flow in the workspace, Langflow notifies you if a component's workspace version is behind the database version so you can update the component's workspace version:"}),"\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:"Update ready"}),": This notification means the component update contains no breaking changes."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Update available"}),": This notification means the component update might contain breaking changes."]}),"\n",(0,s.jsx)(n.p,{children:"Breaking changes modify component inputs and outputs, causing the components to be disconnected and break the flow. After updating the component, you might need to edit the component settings or reconnect component ports."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"There are two ways to update components:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Update"})," to update a single component. This is recommended for updates without breaking changes."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Review"})," to view all available updates and create a snapshot before updating. This is recommended for updates with breaking changes."]}),"\n",(0,s.jsxs)(n.p,{children:["To save a snapshot of your flow before updating the components, enable ",(0,s.jsx)(n.strong,{children:"Create backup flow before updating"}),". Backup flows are stored in the same project folder as the original flow with the suffix ",(0,s.jsx)(n.code,{children:"(backup)"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To update specific components, select the components you want to update, and then click ",(0,s.jsx)(n.strong,{children:"Update Components"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Components are updated to the latest available version, based on the version of Langflow you are running."}),"\n",(0,s.jsx)(n.h2,{id:"group-components",children:"Group components"}),"\n",(0,s.jsxs)(n.p,{children:["Multiple components can be grouped into a single component for reuse. This is useful for organizing large flows by combining related components together, such as a RAG ",(0,s.jsx)(n.strong,{children:"Agent"})," component and it's associated tools or vector store components."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Hold ",(0,s.jsx)("kbd",{children:"Shift"}),", and then click and drag to highlight all components you want to merge. Components must be completely within the selection area to be merged."]}),"\n",(0,s.jsxs)(n.p,{children:["Alternatively, to select components for merging one by one, hold ",(0,s.jsx)("kbd",{children:"Ctrl"})," on Windows or ",(0,s.jsx)("kbd",{children:"Cmd"})," on Mac, and then click each component to add them to the group."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Release the mouse and keyboard, and then click ",(0,s.jsx)(n.strong,{children:"Group"})," to merge the components into a single, group component."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Grouped components are configured and managed as a single component, including the component name, code, and settings."}),"\n",(0,s.jsxs)(n.p,{children:["To ungroup the components, click the component in the workspace to expose the component's header menu, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),", and then select ",(0,s.jsx)(n.strong,{children:"Ungroup"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["If you want to reuse this grouping in other flows, click the component in the workspace to expose the component's header menu, click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Show More"}),", and then select ",(0,s.jsx)(n.strong,{children:"Save"})," to save the component to the ",(0,s.jsx)(l.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Core components"})," menu as a custom component."]}),"\n",(0,s.jsx)(n.h2,{id:"legacy-components",children:"Legacy components"}),"\n","\n",(0,s.jsx)(i.Ay,{})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(g,{...e})}):g(e)}function y(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},58876:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/agent-component-4c496697124cfebd3883ee9ade19ca5c.png"},64599:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/select-output-f7d64629d278098e3fba32fe79f79ed6.png"}}]); \ No newline at end of file diff --git a/assets/js/main.2392006d.js b/assets/js/main.2392006d.js new file mode 100644 index 0000000000..ffb149bdf5 --- /dev/null +++ b/assets/js/main.2392006d.js @@ -0,0 +1,2 @@ +/*! For license information please see main.2392006d.js.LICENSE.txt */ +(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8792],{205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540);const o=n(38193).default.canUseDOM?r.useLayoutEffect:r.useEffect},641:(e,t,n)=>{"use strict";n.r(t)},1093:e=>{"use strict";var t=Object.prototype.toString;e.exports=function(e){var n=t.call(e),r="[object Arguments]"===n;return r||(r="[object Array]"!==n&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===t.call(e.callee)),r}},1189:(e,t,n)=>{"use strict";var r=Array.prototype.slice,o=n(1093),a=Object.keys,i=a?function(e){return a(e)}:n(28875),s=Object.keys;i.shim=function(){if(Object.keys){var e=function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2);e||(Object.keys=function(e){return o(e)?s(r.call(e)):s(e)})}else Object.keys=i;return Object.keys||i},e.exports=i},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},2833:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l{"use strict";n.d(t,{C:()=>r});const r="default"},3918:(e,t,n)=>{"use strict";var r=n(65606);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function a(e){for(var t=1;te.length)&&(n=e.length),e.substring(n-t.length,n)===t}var v="",w="",k="",j="",O={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function P(e){var t=Object.keys(e),n=Object.create(Object.getPrototypeOf(e));return t.forEach(function(t){n[t]=e[t]}),Object.defineProperty(n,"message",{value:e.message}),n}function S(e){return g(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function I(e,t,n){var o="",a="",i=0,s="",l=!1,c=S(e),p=c.split("\n"),u=S(t).split("\n"),d=0,m="";if("strictEqual"===n&&"object"===h(e)&&"object"===h(t)&&null!==e&&null!==t&&(n="strictEqualObject"),1===p.length&&1===u.length&&p[0]!==u[0]){var f=p[0].length+u[0].length;if(f<=10){if(!("object"===h(e)&&null!==e||"object"===h(t)&&null!==t||0===e&&0===t))return"".concat(O[n],"\n\n")+"".concat(p[0]," !== ").concat(u[0],"\n")}else if("strictEqualObject"!==n){if(f<(r.stderr&&r.stderr.isTTY?r.stderr.columns:80)){for(;p[0][d]===u[0][d];)d++;d>2&&(m="\n ".concat(function(e,t){if(t=Math.floor(t),0==e.length||0==t)return"";var n=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+e.substring(0,n-e.length)}(" ",d),"^"),d=0)}}}for(var y=p[p.length-1],g=u[u.length-1];y===g&&(d++<2?s="\n ".concat(y).concat(s):o=y,p.pop(),u.pop(),0!==p.length&&0!==u.length);)y=p[p.length-1],g=u[u.length-1];var _=Math.max(p.length,u.length);if(0===_){var P=c.split("\n");if(P.length>30)for(P[26]="".concat(v,"...").concat(j);P.length>27;)P.pop();return"".concat(O.notIdentical,"\n\n").concat(P.join("\n"),"\n")}d>3&&(s="\n".concat(v,"...").concat(j).concat(s),l=!0),""!==o&&(s="\n ".concat(o).concat(s),o="");var I=0,x=O[n]+"\n".concat(w,"+ actual").concat(j," ").concat(k,"- expected").concat(j),A=" ".concat(v,"...").concat(j," Lines skipped");for(d=0;d<_;d++){var T=d-i;if(p.length1&&d>2&&(T>4?(a+="\n".concat(v,"...").concat(j),l=!0):T>3&&(a+="\n ".concat(u[d-2]),I++),a+="\n ".concat(u[d-1]),I++),i=d,o+="\n".concat(k,"-").concat(j," ").concat(u[d]),I++;else if(u.length1&&d>2&&(T>4?(a+="\n".concat(v,"...").concat(j),l=!0):T>3&&(a+="\n ".concat(p[d-2]),I++),a+="\n ".concat(p[d-1]),I++),i=d,a+="\n".concat(w,"+").concat(j," ").concat(p[d]),I++;else{var E=u[d],R=p[d],C=R!==E&&(!b(R,",")||R.slice(0,-1)!==E);C&&b(E,",")&&E.slice(0,-1)===R&&(C=!1,R+=","),C?(T>1&&d>2&&(T>4?(a+="\n".concat(v,"...").concat(j),l=!0):T>3&&(a+="\n ".concat(p[d-2]),I++),a+="\n ".concat(p[d-1]),I++),i=d,a+="\n".concat(w,"+").concat(j," ").concat(R),o+="\n".concat(k,"-").concat(j," ").concat(E),I+=2):(a+=o,o="",1!==T&&0!==d||(a+="\n ".concat(R),I++))}if(I>20&&d<_-2)return"".concat(x).concat(A,"\n").concat(a,"\n").concat(v,"...").concat(j).concat(o,"\n")+"".concat(v,"...").concat(j)}return"".concat(x).concat(l?A:"","\n").concat(a).concat(o).concat(s).concat(m)}var x=function(e,t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&f(e,t)}(b,e);var n,o,i,l,u,d=(n=b,o=m(),function(){var e,t=y(n);if(o){var r=y(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return c(this,e)});function b(e){var t;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,b),"object"!==h(e)||null===e)throw new _("options","Object",e);var n=e.message,o=e.operator,a=e.stackStartFn,i=e.actual,s=e.expected,l=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)t=d.call(this,String(n));else if(r.stderr&&r.stderr.isTTY&&(r.stderr&&r.stderr.getColorDepth&&1!==r.stderr.getColorDepth()?(v="\x1b[34m",w="\x1b[32m",j="\x1b[39m",k="\x1b[31m"):(v="",w="",j="",k="")),"object"===h(i)&&null!==i&&"object"===h(s)&&null!==s&&"stack"in i&&i instanceof Error&&"stack"in s&&s instanceof Error&&(i=P(i),s=P(s)),"deepStrictEqual"===o||"strictEqual"===o)t=d.call(this,I(i,s,o));else if("notDeepStrictEqual"===o||"notStrictEqual"===o){var u=O[o],m=S(i).split("\n");if("notStrictEqual"===o&&"object"===h(i)&&null!==i&&(u=O.notStrictEqualObject),m.length>30)for(m[26]="".concat(v,"...").concat(j);m.length>27;)m.pop();t=1===m.length?d.call(this,"".concat(u," ").concat(m[0])):d.call(this,"".concat(u,"\n\n").concat(m.join("\n"),"\n"))}else{var f=S(i),y="",g=O[o];"notDeepEqual"===o||"notEqual"===o?(f="".concat(O[o],"\n\n").concat(f)).length>1024&&(f="".concat(f.slice(0,1021),"...")):(y="".concat(S(s)),f.length>512&&(f="".concat(f.slice(0,509),"...")),y.length>512&&(y="".concat(y.slice(0,509),"...")),"deepEqual"===o||"equal"===o?f="".concat(g,"\n\n").concat(f,"\n\nshould equal\n\n"):y=" ".concat(o," ").concat(y)),t=d.call(this,"".concat(f).concat(y))}return Error.stackTraceLimit=l,t.generatedMessage=!n,Object.defineProperty(p(t),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),t.code="ERR_ASSERTION",t.actual=i,t.expected=s,t.operator=o,Error.captureStackTrace&&Error.captureStackTrace(p(t),a),t.stack,t.name="AssertionError",c(t)}return i=b,(l=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:t,value:function(e,t){return g(this,a(a({},t),{},{customInspect:!1,depth:0}))}}])&&s(i.prototype,l),u&&s(i,u),Object.defineProperty(i,"prototype",{writable:!1}),b}(u(Error),g.custom);e.exports=x},4146:(e,t,n)=>{"use strict";var r=n(44363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,p=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,f=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(f){var o=m(n);o&&o!==f&&e(t,o,r)}var i=p(n);u&&(i=i.concat(u(n)));for(var s=l(t),y=l(n),h=0;h{"use strict";n.d(t,{A:()=>r});const r={title:"Langflow Documentation",tagline:"Langflow is a low-code app builder for RAG and multi-agent AI applications.",favicon:"img/favicon.ico",url:"https://docs.langflow.org",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",onBrokenAnchors:"warn",organizationName:"langflow-ai",projectName:"langflow",trailingSlash:!1,staticDirectories:["static"],i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},headTags:[{tagName:"link",attributes:{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Sora:wght@550;600&display=swap"}},{tagName:"script",attributes:{},innerHTML:"\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n\n // Set default consent to denied\n gtag('consent', 'default', {\n 'ad_storage': 'denied',\n 'ad_user_data': 'denied',\n 'ad_personalization': 'denied',\n 'analytics_storage': 'denied'\n });\n "},{tagName:"script",attributes:{},innerHTML:"\n (function() {\n function updateGoogleConsent() {\n if (typeof window.truste !== 'undefined' && window.truste.cma) {\n var consent = window.truste.cma.callApi('getConsent', window.location.href) || {};\n\n // Map TrustArc categories to Google consent types\n // Category 0 = Required, 1 = Functional, 2 = Advertising, 3 = Analytics\n var hasAdvertising = consent[2] === 1;\n var hasAnalytics = consent[3] === 1;\n\n gtag('consent', 'update', {\n 'ad_storage': hasAdvertising ? 'granted' : 'denied',\n 'ad_user_data': hasAdvertising ? 'granted' : 'denied',\n 'ad_personalization': hasAdvertising ? 'granted' : 'denied',\n 'analytics_storage': hasAnalytics ? 'granted' : 'denied'\n });\n }\n }\n\n // Listen for consent changes\n if (window.addEventListener) {\n window.addEventListener('cm_data_subject_consent_changed', updateGoogleConsent);\n window.addEventListener('cm_consent_preferences_set', updateGoogleConsent);\n }\n\n // Initial check after TrustArc loads\n if (document.readyState === 'complete') {\n updateGoogleConsent();\n } else {\n window.addEventListener('load', updateGoogleConsent);\n }\n })();\n "}],presets:[["@docusaurus/preset-classic",{docs:{routeBasePath:"/",sidebarPath:"/home/runner/work/langflow/langflow/docs/sidebars.js",sidebarCollapsed:!0,beforeDefaultRemarkPlugins:[[null,{theme:"github-dark",showCopyButton:!0,lineNumbers:!0}]]},sitemap:{lastmod:"datetime",changefreq:null,priority:null,ignorePatterns:[]},gtag:{trackingID:"G-SLQFLQ3KPT"},blog:!1,theme:{customCss:["/home/runner/work/langflow/langflow/docs/node_modules/@code-hike/mdx/dist/index.css","/home/runner/work/langflow/langflow/docs/css/custom.css","/home/runner/work/langflow/langflow/docs/css/docu-notion-styles.css","/home/runner/work/langflow/langflow/docs/css/gifplayer.css"]}}],["redocusaurus",{openapi:{path:"openapi",routeBasePath:"/api"},specs:[{id:"api",spec:"openapi/openapi.json",route:"/api"}],theme:{primaryColor:"#7528FC"}}]],plugins:[["docusaurus-node-polyfills",{excludeAliases:["console"]}],"docusaurus-plugin-image-zoom",["./src/plugins/segment",{segmentPublicWriteKey:"B04fNhD06DqDPuaRfQl5lZ2iQICdxxuh",allowedInDev:!0}],["@docusaurus/plugin-client-redirects",{redirects:[{to:"/",from:["/whats-new-a-new-chapter-langflow","/\ud83d\udc4b Welcome-to-Langflow","/getting-started-welcome-to-langflow","/guides-new-to-llms","/about-langflow"]},{to:"/get-started-installation",from:["/getting-started-installation","/getting-started-common-installation-issues"]},{to:"/get-started-quickstart",from:"/getting-started-quickstart"},{to:"/concepts-overview",from:["/workspace-overview","/365085a8-a90a-43f9-a779-f8769ec7eca1","/My-Collection","/workspace","/settings-project-general-settings"]},{to:"/concepts-components",from:["/components","/components-overview"]},{to:"/configuration-global-variables",from:"/settings-global-variables"},{to:"/concepts-playground",from:["/workspace-playground","/workspace-logs","/guides-chat-memory"]},{to:"/data-types",from:["/guides-data-message","/configuration-objects"]},{to:"/concepts-flows",from:["/travel-planning-agent","/starter-projects-travel-planning-agent","/tutorials-travel-planning-agent","/starter-projects-dynamic-agent/","/simple-agent","/math-agent","/starter-projects-simple-agent","/starter-projects-math-agent","/tutorials-math-agent","/sequential-agent","/starter-projects-sequential-agent","/tutorials-sequential-agent","/memory-chatbot","/starter-projects-memory-chatbot","/tutorials-memory-chatbot","/financial-report-parser","/document-qa","/starter-projects-document-qa","/tutorials-document-qa","/blog-writer","/starter-projects-blog-writer","/tutorials-blog-writer","/basic-prompting","/starter-projects-basic-prompting","/vector-store-rag","/starter-projects-vector-store-rag"]},{to:"/components-bundle-components",from:["/components-rag","/components-vector-stores","/components-loaders"]},{to:"/api-keys-and-authentication",from:["/configuration-api-keys","/configuration-authentication","/configuration-security-best-practices","/Configuration/configuration-security-best-practices"]},{to:"/environment-variables",from:["/configuration-auto-saving","/Configuration/configuration-auto-saving","/configuration-backend-only","/Configuration/configuration-backend-only"]},{to:"/concepts-publish",from:["/concepts-api","/workspace-api"]},{to:"/components-custom-components",from:"/components/custom"},{to:"/mcp-server",from:"/integrations-mcp"},{to:"/deployment-kubernetes-dev",from:"/deployment-kubernetes"},{to:"/contributing-github-issues",from:"/contributing-github-discussions"},{to:"/agents",from:"/agents-tool-calling-agent-component"},{to:"/concepts-publish",from:"/embedded-chat-widget"},{to:"/bundles-google",from:["/integrations-setup-google-oauth-langflow","/integrations-google-big-query"]},{to:"/bundles-vertexai",from:"/integrations-setup-google-cloud-vertex-ai-langflow"},{to:"/develop-application",from:"/develop-overview"},{to:"/data-types",from:"/concepts-objects"},{to:"/components-helpers",from:"/components-memories"},{to:"/bundles-apify",from:"/integrations-apify"},{to:"/bundles-assemblyai",from:"/integrations-assemblyai"},{to:"/bundles-cleanlab",from:"/integrations-cleanlab"},{to:"/bundles-composio",from:"/integrations-composio"},{to:"/bundles-docling",from:"/integrations-docling"},{to:"/bundles-notion",from:["/integrations/notion/setup","/integrations/notion/notion-agent-meeting-notes","/integrations/notion/notion-agent-conversational"]},{to:"/bundles-nvidia",from:["/integrations-nvidia-ingest-wsl2","/integrations-nvidia-ingest","/integrations-nvidia-g-assist","/integrations-nvidia-system-assist"]}]}],null],themeConfig:{navbar:{hideOnScroll:!0,logo:{alt:"Langflow",src:"img/lf-docs-light.svg",srcDark:"img/lf-docs-dark.svg"},items:[{position:"right",href:"https://github.com/langflow-ai/langflow",className:"header-github-link",target:"_blank",rel:null,"data-event":"UI Interaction","data-action":"clicked","data-channel":"docs","data-element-id":"social-github","data-namespace":"header","data-platform-title":"Langflow"},{position:"right",href:"https://twitter.com/langflow_ai",className:"header-twitter-link",target:"_blank",rel:null,"data-event":"UI Interaction","data-action":"clicked","data-channel":"docs","data-element-id":"social-twitter","data-namespace":"header","data-platform-title":"Langflow"},{position:"right",href:"https://discord.gg/EqksyE2EX9",className:"header-discord-link",target:"_blank",rel:null,"data-event":"UI Interaction","data-action":"clicked","data-channel":"docs","data-element-id":"social-discord","data-namespace":"header","data-platform-title":"Langflow"}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!0},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},zoom:{selector:".markdown :not(a) > img:not(.no-zoom)",background:{light:"rgba(240, 240, 240, 0.9)"},config:{}},docs:{sidebar:{hideable:!1,autoCollapseCategories:!0},versionPersistence:"localStorage"},footer:{links:[{title:null,items:[{html:''}]}],style:"light"},algolia:{appId:"UZK6BDPCVY",apiKey:"adbd7686dceb1cd510d5ce20d04bf74c",indexName:"langflow",contextualSearch:!0,searchParameters:{},searchPagePath:"search"},blog:{sidebar:{groupByYear:!0}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,future:{v4:{removeLegacyPostBuildHeadAttribute:!1,useCssCascadeLayers:!1},experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onDuplicateRoutes:"warn",customFields:{},themes:[],scripts:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}}}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(96540);var r=n(80545),o=n(74848);function a(e){return(0,o.jsx)(r.mg,{...e})}},5338:(e,t,n)=>{"use strict";var r=n(40961);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},5556:(e,t,n)=>{e.exports=n(2694)()},5947:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),p=r.speed,u=r.easing;return a.offsetWidth,s(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,p,u)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout(function(){l(a,{transition:"all "+p+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},p)},p)):setTimeout(t,p)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");p(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&m(o),c!=document.body&&p(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&m(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:d(e)).indexOf(" "+t+" ")>=0}function p(e,t){var n=d(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function u(e,t){var n,r=d(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function d(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(96540),o=n(74848);const a=r.createContext(!1);function i({children:e}){const[t,n]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{n(!0)},[]),(0,o.jsx)(a.Provider,{value:t,children:e})}},6188:e=>{"use strict";e.exports=Math.max},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(44586);function o(){return(0,r.A)().siteConfig.themeConfig}},6549:e=>{"use strict";e.exports=Object.getOwnPropertyDescriptor},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},7176:(e,t,n)=>{"use strict";var r,o=n(73126),a=n(75795);try{r=[].__proto__===Array.prototype}catch(c){if(!c||"object"!=typeof c||!("code"in c)||"ERR_PROTO_ACCESS"!==c.code)throw c}var i=!!r&&a&&a(Object.prototype,"__proto__"),s=Object,l=s.getPrototypeOf;e.exports=i&&"function"==typeof i.get?o([i.get]):"function"==typeof l&&function(e){return l(null==e?e:s(e))}},7463:(e,t,n)=>{"use strict";var r=n(96763);function o(e,t){var n=e.length;e.push(t);e:for(;0>>1,o=e[r];if(!(0>>1;rs(l,n))cs(p,l)?(e[r]=p,e[c]=n,r=c):(e[r]=l,e[i]=n,r=i);else{if(!(cs(p,n)))break e;e[r]=p,e[c]=n,r=c}}}return t}function s(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var l=performance;t.unstable_now=function(){return l.now()}}else{var c=Date,p=c.now();t.unstable_now=function(){return c.now()-p}}var u=[],d=[],m=1,f=null,y=3,h=!1,g=!1,_=!1,b="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,w="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var t=a(d);null!==t;){if(null===t.callback)i(d);else{if(!(t.startTime<=e))break;i(d),t.sortIndex=t.expirationTime,o(u,t)}t=a(d)}}function j(e){if(_=!1,k(e),!g)if(null!==a(u))g=!0,F(O);else{var t=a(d);null!==t&&D(j,t.startTime-e)}}function O(e,n){g=!1,_&&(_=!1,v(x),x=-1),h=!0;var r=y;try{for(k(n),f=a(u);null!==f&&(!(f.expirationTime>n)||e&&!E());){var o=f.callback;if("function"==typeof o){f.callback=null,y=f.priorityLevel;var s=o(f.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?f.callback=s:f===a(u)&&i(u),k(n)}else i(u);f=a(u)}if(null!==f)var l=!0;else{var c=a(d);null!==c&&D(j,c.startTime-n),l=!1}return l}finally{f=null,y=r,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var P,S=!1,I=null,x=-1,A=5,T=-1;function E(){return!(t.unstable_now()-Te||125i?(e.sortIndex=r,o(d,e),null===a(u)&&e===a(d)&&(_?(v(x),x=-1):_=!0,D(j,r-i))):(e.sortIndex=s,o(u,e),g||h||(g=!0,F(O))),e},t.unstable_shouldYield=E,t.unstable_wrapCallback=function(e){var t=y;return function(){var n=y;y=t;try{return e.apply(this,arguments)}finally{y=n}}}},7767:(e,t,n)=>{"use strict";n.r(t)},8505:(e,t,n)=>{var r=n(64634);e.exports=y,e.exports.parse=a,e.exports.compile=function(e,t){return c(a(e,t),t)},e.exports.tokensToFunction=c,e.exports.tokensToRegExp=f;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,s=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var p=n[0],d=n[1],m=n.index;if(l+=e.slice(s,m),s=m+p.length,d)l+=d[1];else{var f=e[s],y=n[2],h=n[3],g=n[4],_=n[5],b=n[6],v=n[7];l&&(r.push(l),l="");var w=null!=y&&null!=f&&f!==y,k="+"===b||"*"===b,j="?"===b||"*"===b,O=y||c,P=g||_,S=y||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:h||a++,prefix:y||"",delimiter:O,optional:j,repeat:k,partial:w,asterisk:!!v,pattern:P?u(P):v?".*":i(O,S)})}}return s-1?"[^"+p(e)+"]+?":p(t)+"|(?:(?!"+p(t)+")[^"+p(e)+"])+?"}function s(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function l(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function c(e,t){for(var n=new Array(e.length),o=0;o{var r=n(96763);const o=n(6969),a=n(98380),i=new Set;function s(e){void 0===e?e=Object.keys(o.languages).filter(e=>"meta"!=e):Array.isArray(e)||(e=[e]);const t=[...i,...Object.keys(Prism.languages)];a(o,e,t).load(e=>{if(!(e in o.languages))return void(s.silent||r.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(63157).resolve(t)],delete Prism.languages[e],n(63157)(t),i.add(e)})}s.silent=!1,e.exports=s},9394:(e,t,n)=>{"use strict";var r=n(89211);e.exports=function(){return"function"==typeof Object.is?Object.is:r}},9957:(e,t,n)=>{"use strict";var r=Function.prototype.call,o=Object.prototype.hasOwnProperty,a=n(66743);e.exports=a.call(r,o)},10076:e=>{"use strict";e.exports=Function.prototype.call},10119:(e,t,n)=>{"use strict";n.r(t)},10487:(e,t,n)=>{"use strict";var r=n(96897),o=n(30655),a=n(73126),i=n(12205);e.exports=function(e){var t=a(arguments),n=e.length-(arguments.length-1);return r(t,1+(n>0?n:0),!0)},o?o(e.exports,"apply",{value:i}):e.exports.apply=i},11002:e=>{"use strict";e.exports=Function.prototype.apply},11514:(e,t,n)=>{"use strict";var r=n(38403);e.exports=function(){return Object.assign?function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",t=e.split(""),n={},r=0;r{"use strict";n.d(t,{A:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},11818:(e,t,n)=>{"use strict";n.r(t)},12205:(e,t,n)=>{"use strict";var r=n(66743),o=n(11002),a=n(13144);e.exports=function(){return a(r,o,arguments)}},12838:(e,t,n)=>{"use strict";n.d(t,{A:()=>Mt});var r=n(96540),o=n(18215),a=n(67489),i=n(45500),s=n(56347),l=n(21312),c=n(75062),p=n(74848);const u="__docusaurus_skipToContent_fallback";function d(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function m(){const e=(0,r.useRef)(null),{action:t}=(0,s.W6)(),n=(0,r.useCallback)(e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(u);t&&d(t)},[]);return(0,c.$)(({location:n})=>{e.current&&!n.hash&&"PUSH"===t&&d(e.current)}),{containerRef:e,onClick:n}}const f=(0,l.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function y(e){const t=e.children??f,{containerRef:n,onClick:r}=m();return(0,p.jsx)("div",{ref:n,role:"region","aria-label":f,children:(0,p.jsx)("a",{...e,href:`#${u}`,onClick:r,children:t})})}var h=n(17559),g=n(14090);const _={skipToContent:"skipToContent_fXgn"};function b(){return(0,p.jsx)(y,{className:_.skipToContent})}var v=n(6342),w=n(65041);function k({width:e=21,height:t=21,color:n="currentColor",strokeWidth:r=1.2,className:o,...a}){return(0,p.jsx)("svg",{viewBox:"0 0 15 15",width:e,height:t,...a,children:(0,p.jsx)("g",{stroke:n,strokeWidth:r,children:(0,p.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const j={closeButton:"closeButton_CVFx"};function O(e){return(0,p.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",j.closeButton,e.className),children:(0,p.jsx)(k,{width:14,height:14,strokeWidth:3.1})})}const P={content:"content_knG7"};function S(e){const{announcementBar:t}=(0,v.p)(),{content:n}=t;return(0,p.jsx)("div",{...e,className:(0,o.A)(P.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const I={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function x(){const{announcementBar:e}=(0,v.p)(),{isActive:t,close:n}=(0,w.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:i}=e;return(0,p.jsxs)("div",{className:(0,o.A)(h.G.announcementBar.container,I.announcementBar),style:{backgroundColor:r,color:a},role:"banner",children:[i&&(0,p.jsx)("div",{className:I.announcementBarPlaceholder}),(0,p.jsx)(S,{className:I.announcementBarContent}),i&&(0,p.jsx)(O,{onClick:n,className:I.announcementBarClose})]})}var A=n(22069),T=n(23104);var E=n(89532),R=n(75600);const C=r.createContext(null);function q({children:e}){const t=function(){const e=(0,A.M)(),t=(0,R.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,E.ZC)(a);return(0,r.useEffect)(()=>{a&&!i&&o(!0)},[a,i]),(0,r.useEffect)(()=>{a?e.shown||o(!0):o(!1)},[e.shown,a]),(0,r.useMemo)(()=>[n,o],[n])}();return(0,p.jsx)(C.Provider,{value:t,children:e})}function F(e){if(e.component){const t=e.component;return(0,p.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(C);if(!e)throw new E.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)(()=>n(!1),[n]),a=(0,R.YL)();return(0,r.useMemo)(()=>({shown:t,hide:o,content:F(a)}),[o,a,t])}function B(e){return parseInt(r.version.split(".")[0],10)<19?{inert:e?"":void 0}:{inert:e}}function N({children:e,inert:t}){return(0,p.jsx)("div",{className:(0,o.A)(h.G.layout.navbar.mobileSidebar.panel,"navbar-sidebar__item menu"),...B(t),children:e})}function $({header:e,primaryMenu:t,secondaryMenu:n}){const{shown:r}=D();return(0,p.jsxs)("div",{className:(0,o.A)(h.G.layout.navbar.mobileSidebar.container,"navbar-sidebar"),children:[e,(0,p.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":r}),children:[(0,p.jsx)(N,{inert:r,children:t}),(0,p.jsx)(N,{inert:!r,children:n})]})]})}var L=n(95293),V=n(92303);function M(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}function z(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"})})}const H="toggle_vylO",G="toggleButton_gllP",W="toggleIcon_g3eP",K="systemToggleIcon_QzmC",Q="lightToggleIcon_pyhR",Y="darkToggleIcon_wfgR",J="toggleButtonDisabled_aARS";function Z(e){switch(e){case null:return(0,l.T)({message:"system mode",id:"theme.colorToggle.ariaLabel.mode.system",description:"The name for the system color mode"});case"light":return(0,l.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"});case"dark":return(0,l.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"});default:throw new Error(`unexpected color mode ${e}`)}}function X(e){return(0,l.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the color mode toggle"},{mode:Z(e)})}function ee(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(M,{"aria-hidden":!0,className:(0,o.A)(W,Q)}),(0,p.jsx)(U,{"aria-hidden":!0,className:(0,o.A)(W,Y)}),(0,p.jsx)(z,{"aria-hidden":!0,className:(0,o.A)(W,K)})]})}function te({className:e,buttonClassName:t,respectPrefersColorScheme:n,value:r,onChange:a}){const i=(0,V.A)();return(0,p.jsx)("div",{className:(0,o.A)(H,e),children:(0,p.jsx)("button",{className:(0,o.A)("clean-btn",G,!i&&J,t),type:"button",onClick:()=>a(function(e,t){if(!t)return"dark"===e?"light":"dark";switch(e){case null:return"light";case"light":return"dark";case"dark":return null;default:throw new Error(`unexpected color mode ${e}`)}}(r,n)),disabled:!i,title:Z(r),"aria-label":X(r),children:(0,p.jsx)(ee,{})})})}const ne=r.memo(te),re={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function oe({className:e}){const t=(0,v.p)().navbar.style,{disableSwitch:n,respectPrefersColorScheme:r}=(0,v.p)().colorMode,{colorModeChoice:o,setColorMode:a}=(0,L.G)();return n?null:(0,p.jsx)(ne,{className:e,buttonClassName:"dark"===t?re.darkNavbarColorModeToggle:void 0,respectPrefersColorScheme:r,value:o,onChange:a})}var ae=n(23465);function ie(){return(0,p.jsx)(ae.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function se(){const e=(0,A.M)();return(0,p.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,p.jsx)(k,{color:"var(--ifm-color-emphasis-600)"})})}function le(){return(0,p.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,p.jsx)(ie,{}),(0,p.jsx)(oe,{className:"margin-right--md"}),(0,p.jsx)(se,{})]})}var ce=n(28774),pe=n(86025),ue=n(16654),de=n(91252),me=n(43186);function fe({activeBasePath:e,activeBaseRegex:t,to:n,href:r,label:o,html:a,isDropdownLink:i,prependBaseUrlToHref:s,...l}){const c=(0,pe.Ay)(n),u=(0,pe.Ay)(e),d=(0,pe.Ay)(r,{forcePrependBaseUrl:!0}),m=o&&r&&!(0,ue.A)(r),f=a?{dangerouslySetInnerHTML:{__html:a}}:{children:(0,p.jsxs)(p.Fragment,{children:[o,m&&(0,p.jsx)(me.A,{...i&&{width:12,height:12}})]})};return r?(0,p.jsx)(ce.A,{href:s?d:r,...l,...f}):(0,p.jsx)(ce.A,{to:c,isNavLink:!0,...(e||t)&&{isActive:(e,n)=>t?(0,de.G)(t,n.pathname):n.pathname.startsWith(u)},...l,...f})}function ye({className:e,isDropdownItem:t,...n}){return(0,p.jsx)("li",{className:"menu__list-item",children:(0,p.jsx)(fe,{className:(0,o.A)("menu__link",e),...n})})}function he({className:e,isDropdownItem:t=!1,...n}){const r=(0,p.jsx)(fe,{className:(0,o.A)(t?"dropdown__link":"navbar__item navbar__link",e),isDropdownLink:t,...n});return t?(0,p.jsx)("li",{children:r}):r}function ge({mobile:e=!1,position:t,...n}){const r=e?ye:he;return(0,p.jsx)(r,{...n,activeClassName:n.activeClassName??(e?"menu__link--active":"navbar__link--active")})}var _e=n(41422),be=n(99169),ve=n(44586);const we="dropdownNavbarItemMobile_J0Sd";function ke(e,t){return e.some(e=>function(e,t){return!!(0,be.ys)(e.to,t)||!!(0,de.G)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t))}function je({collapsed:e,onClick:t}){return(0,p.jsx)("button",{"aria-label":e?(0,l.T)({id:"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel",message:"Expand the dropdown",description:"The ARIA label of the button to expand the mobile dropdown navbar item"}):(0,l.T)({id:"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel",message:"Collapse the dropdown",description:"The ARIA label of the button to collapse the mobile dropdown navbar item"}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:t})}function Oe({items:e,className:t,position:n,onClick:a,...i}){const l=function(){const{siteConfig:{baseUrl:e}}=(0,ve.A)(),{pathname:t}=(0,s.zy)();return t.replace(e,"/")}(),c=(0,be.ys)(i.to,l),u=ke(e,l),{collapsed:d,toggleCollapsed:m}=function({active:e}){const{collapsed:t,toggleCollapsed:n,setCollapsed:o}=(0,_e.u)({initialState:()=>!e});return(0,r.useEffect)(()=>{e&&o(!1)},[e,o]),{collapsed:t,toggleCollapsed:n}}({active:c||u}),f=i.to?void 0:"#";return(0,p.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":d}),children:[(0,p.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":c}),children:[(0,p.jsx)(fe,{role:"button",className:(0,o.A)(we,"menu__link menu__link--sublist",t),href:f,...i,onClick:e=>{"#"===f&&e.preventDefault(),m()},children:i.children??i.label}),(0,p.jsx)(je,{collapsed:d,onClick:e=>{e.preventDefault(),m()}})]}),(0,p.jsx)(_e.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:d,children:e.map((e,t)=>(0,r.createElement)(Xe,{mobile:!0,isDropdownItem:!0,onClick:a,activeClassName:"menu__link--active",...e,key:t}))})]})}function Pe({items:e,position:t,className:n,onClick:a,...i}){const s=(0,r.useRef)(null),[l,c]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&c(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}},[s]),(0,p.jsxs)("div",{ref:s,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===t,"dropdown--show":l}),children:[(0,p.jsx)(fe,{"aria-haspopup":"true","aria-expanded":l,role:"button",href:i.to?void 0:"#",className:(0,o.A)("navbar__link",n),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),c(!l))},children:i.children??i.label}),(0,p.jsx)("ul",{className:"dropdown__menu",children:e.map((e,t)=>(0,r.createElement)(Xe,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t}))})]})}function Se({mobile:e=!1,...t}){const n=e?Oe:Pe;return(0,p.jsx)(n,{...t})}var Ie=n(32131);function xe({width:e=20,height:t=20,...n}){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",width:e,height:t,"aria-hidden":!0,...n,children:(0,p.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const Ae="iconLanguage_nlXk";var Te=n(40961),Ee=n(55600),Re=n(5260),Ce=n(24255),qe=n(51062),Fe=n(2967),De=n(82565);function Be(){return[`language:${(0,ve.A)().i18n.currentLocale}`,function(){const e=(0,De.v)();return[Fe.C,...e]}().map(e=>`docusaurus_tag:${e}`)]}const Ne={button:{buttonText:(0,l.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.T)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.T)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let $e=null;function Le(){return $e?Promise.resolve():Promise.all([n.e(8158).then(n.bind(n,48158)),Promise.all([n.e(1869),n.e(8913)]).then(n.bind(n,58913)),Promise.all([n.e(1869),n.e(416)]).then(n.bind(n,90416))]).then(([{DocSearchModal:e}])=>{$e=e})}function Ve({hit:e,children:t}){return(0,p.jsx)(ce.A,{to:e.url,children:t})}function Me({state:e,onClose:t}){const n=(0,Ce.w)();return(0,p.jsx)(ce.A,{to:n(e.query),onClick:t,children:(0,p.jsx)(l.A,{id:"theme.SearchBar.seeAll",values:{count:e.context.nbHits},children:"See all {count} results"})})}function Ue({externalUrlRegex:e,...t}){const n=function({externalUrlRegex:e}){const t=(0,s.W6)(),[n]=(0,r.useState)(()=>({navigate(n){(0,de.G)(e,n.itemUrl)?window.location.href=n.itemUrl:t.push(n.itemUrl)}}));return n}({externalUrlRegex:e}),o=function({contextualSearch:e,...t}){const n=Be(),r=t.searchParameters?.facetFilters??[],o=e?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(n,r):r;return{...t.searchParameters,facetFilters:o}}({...t}),a=function(e){const t=(0,qe.C)(),[n]=(0,r.useState)(()=>n=>e.transformItems?e.transformItems(n):n.map(e=>({...e,url:t(e.url)})));return n}(t),i=function(){const{siteMetadata:{docusaurusVersion:e}}=(0,ve.A)();return(0,r.useCallback)(t=>(t.addAlgoliaAgent("docusaurus",e),t),[e])}(),l=(0,r.useRef)(null),c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1),[m,f]=(0,r.useState)(void 0),y=(0,r.useCallback)(()=>{if(!l.current){const e=document.createElement("div");l.current=e,document.body.insertBefore(e,document.body.firstChild)}},[]),h=(0,r.useCallback)(()=>{y(),Le().then(()=>d(!0))},[y]),g=(0,r.useCallback)(()=>{d(!1),c.current?.focus(),f(void 0)},[]),_=(0,r.useCallback)(e=>{"f"===e.key&&(e.metaKey||e.ctrlKey)||(e.preventDefault(),f(e.key),h())},[h]),b=function({closeModal:e}){return(0,r.useMemo)(()=>({state:t})=>(0,p.jsx)(Me,{state:t,onClose:e}),[e])}({closeModal:g});return(0,Ee.E8)({isOpen:u,onOpen:h,onClose:g,onInput:_,searchButtonRef:c}),(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(Re.A,{children:(0,p.jsx)("link",{rel:"preconnect",href:`https://${t.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,p.jsx)(Ee.Bc,{onTouchStart:Le,onFocus:Le,onMouseOver:Le,onClick:h,ref:c,translations:t.translations?.button??Ne.button}),u&&$e&&l.current&&(0,Te.createPortal)((0,p.jsx)($e,{onClose:g,initialScrollY:window.scrollY,initialQuery:m,navigator:n,transformItems:a,hitComponent:Ve,transformSearchClient:i,...t.searchPagePath&&{resultsFooterComponent:b},placeholder:Ne.placeholder,...t,translations:t.translations?.modal??Ne.modal,searchParameters:o}),l.current)]})}function ze(){const{siteConfig:e}=(0,ve.A)();return(0,p.jsx)(Ue,{...e.themeConfig.algolia})}const He={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Ge({children:e,className:t}){return(0,p.jsx)("div",{className:(0,o.A)(t,He.navbarSearchContainer),children:e})}var We=n(48295),Ke=n(26972);var Qe=n(53886);function Ye({docsPluginId:e,configs:t}){return function(e,t){if(t){const n=new Map(e.map(e=>[e.name,e])),r=(t,r)=>{const o=n.get(t);if(!o)throw new Error(`No docs version exist for name '${t}', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- ${e.map(e=>`${e.name}`).join("\n- ")}`);return{version:o,label:r?.label??o.label}};return Array.isArray(t)?t.map(e=>r(e,void 0)):Object.entries(t).map(([e,t])=>r(e,t))}return e.map(e=>({version:e,label:e.label}))}((0,We.jh)(e),t)}function Je(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find(t=>t.id===e.mainDocId)}(e)}const Ze={default:ge,localeDropdown:function({mobile:e,dropdownItemsBefore:t,dropdownItemsAfter:n,queryString:r="",...o}){const{i18n:{currentLocale:a,locales:i,localeConfigs:c}}=(0,ve.A)(),u=(0,Ie.o)(),{search:d,hash:m}=(0,s.zy)(),f=[...t,...i.map(t=>{const n=`${`pathname://${u.createUrl({locale:t,fullyQualified:!1})}`}${d}${m}${r}`;return{label:c[t].label,lang:c[t].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:t===a?e?"menu__link--active":"dropdown__link--active":""}}),...n],y=e?(0,l.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):c[a].label;return(0,p.jsx)(Se,{...o,mobile:e,label:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(xe,{className:Ae}),y]}),items:f})},search:function({mobile:e,className:t}){return e?null:(0,p.jsx)(Ge,{className:t,children:(0,p.jsx)(ze,{})})},dropdown:Se,html:function({value:e,className:t,mobile:n=!1,isDropdownItem:r=!1}){const a=r?"li":"div";return(0,p.jsx)(a,{className:(0,o.A)({navbar__item:!n&&!r,"menu__list-item":n},t),dangerouslySetInnerHTML:{__html:e}})},doc:function({docId:e,label:t,docsPluginId:n,...r}){const{activeDoc:o}=(0,We.zK)(n),a=(0,Ke.QB)(e,n),i=o?.path===a?.path;return null===a||a.unlisted&&!i?null:(0,p.jsx)(ge,{exact:!0,...r,isActive:()=>i||!!o?.sidebar&&o.sidebar===a.sidebar,label:t??a.id,to:a.path})},docSidebar:function({sidebarId:e,label:t,docsPluginId:n,...r}){const{activeDoc:o}=(0,We.zK)(n),a=(0,Ke.fW)(e,n).link;if(!a)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${e}" doesn't have anything to be linked to.`);return(0,p.jsx)(ge,{exact:!0,...r,isActive:()=>o?.sidebar===e,label:t??a.label,to:a.path})},docsVersion:function({label:e,to:t,docsPluginId:n,...r}){const o=(0,Ke.Vd)(n)[0],a=e??o.label,i=t??(e=>e.docs.find(t=>t.id===e.mainDocId))(o).path;return(0,p.jsx)(ge,{...r,label:a,to:i})},docsVersionDropdown:function({mobile:e,docsPluginId:t,dropdownActiveClassDisabled:n,dropdownItemsBefore:r,dropdownItemsAfter:o,versions:a,...i}){const{search:c,hash:u}=(0,s.zy)(),d=(0,We.zK)(t),{savePreferredVersionName:m}=(0,Qe.g1)(t),f=Ye({docsPluginId:t,configs:a}),y=function({docsPluginId:e,versionItems:t}){return(0,Ke.Vd)(e).map(e=>t.find(t=>t.version===e)).filter(e=>void 0!==e)[0]??t[0]}({docsPluginId:t,versionItems:f}),h=[...r,...f.map(function({version:e,label:t}){return{label:t,to:`${Je(e,d).path}${c}${u}`,isActive:()=>e===d.activeVersion,onClick:()=>m(e.name)}}),...o],g=e&&h.length>1?(0,l.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):y.label,_=e&&h.length>1?void 0:Je(y.version,d).path;return h.length<=1?(0,p.jsx)(ge,{...i,mobile:e,label:g,to:_,isActive:n?()=>!1:void 0}):(0,p.jsx)(Se,{...i,mobile:e,label:g,to:_,items:h,isActive:n?()=>!1:void 0})}};function Xe({type:e,...t}){const n=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(e,t),r=Ze[n];if(!r)throw new Error(`No NavbarItem component found for type "${e}".`);return(0,p.jsx)(r,{...t})}function et(){const e=(0,A.M)(),t=(0,v.p)().navbar.items;return(0,p.jsx)("ul",{className:"menu__list",children:t.map((t,n)=>(0,r.createElement)(Xe,{mobile:!0,...t,onClick:()=>e.toggle(),key:n}))})}function tt(e){return(0,p.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,p.jsx)(l.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function nt(){const e=0===(0,v.p)().navbar.items.length,t=D();return(0,p.jsxs)(p.Fragment,{children:[!e&&(0,p.jsx)(tt,{onClick:()=>t.hide()}),t.content]})}function rt(){const e=(0,A.M)();return function(e=!0){(0,r.useEffect)(()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"}),[e])}(e.shown),e.shouldRender?(0,p.jsx)($,{header:(0,p.jsx)(le,{}),primaryMenu:(0,p.jsx)(et,{}),secondaryMenu:(0,p.jsx)(nt,{})}):null}const ot={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function at(e){return(0,p.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function it({children:e}){const{navbar:{hideOnScroll:t,style:n}}=(0,v.p)(),a=(0,A.M)(),{navbarRef:i,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)(e=>{null!==e&&(a.current=e.getBoundingClientRect().height)},[]);return(0,T.Mq)(({scrollY:t},r)=>{if(!e)return;if(t=i?n(!1):t+l{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)}),{navbarRef:i,isNavbarVisible:t}}(t);return(0,p.jsxs)("nav",{ref:i,"aria-label":(0,l.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)(h.G.layout.navbar.container,"navbar","navbar--fixed-top",t&&[ot.navbarHideable,!s&&ot.navbarHidden],{"navbar--dark":"dark"===n,"navbar--primary":"primary"===n,"navbar-sidebar--show":a.shown}),children:[e,(0,p.jsx)(at,{onClick:a.toggle}),(0,p.jsx)(rt,{})]})}var st=n(70440);const lt={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function ct(e){return(0,p.jsx)("button",{type:"button",...e,children:(0,p.jsx)(l.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function pt({error:e}){const t=(0,st.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,p.jsx)("p",{className:lt.errorBoundaryError,children:t})}class ut extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const dt="right";function mt({width:e=30,height:t=30,className:n,...r}){return(0,p.jsx)("svg",{className:n,width:e,height:t,viewBox:"0 0 30 30","aria-hidden":"true",...r,children:(0,p.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function ft(){const{toggle:e,shown:t}=(0,A.M)();return(0,p.jsx)("button",{onClick:e,"aria-label":(0,l.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,p.jsx)(mt,{})})}const yt={colorModeToggle:"colorModeToggle_DEke"};function ht({items:e}){return(0,p.jsx)(p.Fragment,{children:e.map((e,t)=>(0,p.jsx)(ut,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,p.jsx)(Xe,{...e})},t))})}function gt({left:e,right:t}){return(0,p.jsxs)("div",{className:"navbar__inner",children:[(0,p.jsx)("div",{className:(0,o.A)(h.G.layout.navbar.containerLeft,"navbar__items"),children:e}),(0,p.jsx)("div",{className:(0,o.A)(h.G.layout.navbar.containerRight,"navbar__items navbar__items--right"),children:t})]})}function _t(){const e=(0,A.M)(),t=(0,v.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??dt)}return[e.filter(t),e.filter(e=>!t(e))]}(t),o=t.find(e=>"search"===e.type);return(0,p.jsx)(gt,{left:(0,p.jsxs)(p.Fragment,{children:[!e.disabled&&(0,p.jsx)(ft,{}),(0,p.jsx)(ie,{}),(0,p.jsx)(ht,{items:n})]}),right:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(ht,{items:r}),(0,p.jsx)(oe,{className:yt.colorModeToggle}),!o&&(0,p.jsx)(Ge,{children:(0,p.jsx)(ze,{})})]})})}function bt(){return(0,p.jsx)(it,{children:(0,p.jsx)(_t,{})})}function vt({item:e}){const{to:t,href:n,label:r,prependBaseUrlToHref:a,className:i,...s}=e,l=(0,pe.Ay)(t),c=(0,pe.Ay)(n,{forcePrependBaseUrl:!0});return(0,p.jsxs)(ce.A,{className:(0,o.A)("footer__link-item",i),...n?{href:a?c:n}:{to:l},...s,children:[r,n&&!(0,ue.A)(n)&&(0,p.jsx)(me.A,{})]})}function wt({item:e}){return e.html?(0,p.jsx)("li",{className:(0,o.A)("footer__item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,p.jsx)("li",{className:"footer__item",children:(0,p.jsx)(vt,{item:e})},e.href??e.to)}function kt({column:e}){return(0,p.jsxs)("div",{className:(0,o.A)(h.G.layout.footer.column,"col footer__col",e.className),children:[(0,p.jsx)("div",{className:"footer__title",children:e.title}),(0,p.jsx)("ul",{className:"footer__items clean-list",children:e.items.map((e,t)=>(0,p.jsx)(wt,{item:e},t))})]})}function jt({columns:e}){return(0,p.jsx)("div",{className:"row footer__links",children:e.map((e,t)=>(0,p.jsx)(kt,{column:e},t))})}function Ot(){return(0,p.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Pt({item:e}){return e.html?(0,p.jsx)("span",{className:(0,o.A)("footer__link-item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,p.jsx)(vt,{item:e})}function St({links:e}){return(0,p.jsx)("div",{className:"footer__links text--center",children:(0,p.jsx)("div",{className:"footer__links",children:e.map((t,n)=>(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(Pt,{item:t}),e.length!==n+1&&(0,p.jsx)(Ot,{})]},n))})})}function It({links:e}){return function(e){return"title"in e[0]}(e)?(0,p.jsx)(jt,{columns:e}):(0,p.jsx)(St,{links:e})}var xt=n(21122);const At="footerLogoLink_BH7S";function Tt({logo:e}){const{withBaseUrl:t}=(0,pe.hH)(),n={light:t(e.src),dark:t(e.srcDark??e.src)};return(0,p.jsx)(xt.A,{className:(0,o.A)("footer__logo",e.className),alt:e.alt,sources:n,width:e.width,height:e.height,style:e.style})}function Et({logo:e}){return e.href?(0,p.jsx)(ce.A,{href:e.href,className:At,target:e.target,children:(0,p.jsx)(Tt,{logo:e})}):(0,p.jsx)(Tt,{logo:e})}function Rt({copyright:e}){return(0,p.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:e}})}function Ct({style:e,links:t,logo:n,copyright:r}){return(0,p.jsx)("footer",{className:(0,o.A)(h.G.layout.footer.container,"footer",{"footer--dark":"dark"===e}),children:(0,p.jsxs)("div",{className:"container container-fluid",children:[t,(n||r)&&(0,p.jsxs)("div",{className:"footer__bottom text--center",children:[n&&(0,p.jsx)("div",{className:"margin-bottom--sm",children:n}),r]})]})})}function qt(){const{footer:e}=(0,v.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,p.jsx)(Ct,{style:o,links:n&&n.length>0&&(0,p.jsx)(It,{links:n}),logo:r&&(0,p.jsx)(Et,{logo:r}),copyright:t&&(0,p.jsx)(Rt,{copyright:t})})}const Ft=r.memo(qt);function Dt(e){const[t,n]=(0,r.useState)(!1),o=r.useRef(null);(0,Ee.E8)({isOpen:!1,onOpen:()=>{o.current?.click()}});const a=(0,p.jsxs)("div",{ref:o,onClick:()=>{document.querySelector(".DocSearch-Button")?.click()},onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),style:{position:"fixed",right:"21px",bottom:"21px",zIndex:100,display:"flex",alignItems:"center",gap:"10px",cursor:"pointer"},children:[t&&(0,p.jsx)("div",{style:{backgroundColor:"#f6f6f6",padding:"8px 16px",borderRadius:"20px",color:"#000",fontSize:"14px",boxShadow:"0 2px 4px rgba(0,0,0,0.1)"},children:"Hi, how can I help you?"}),(0,p.jsx)("div",{style:{backgroundColor:"#f6f6f6",borderRadius:"50%",width:"48px",height:"48px",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 2px 4px rgba(0,0,0,0.1)"},children:(0,p.jsx)("img",{src:"/img/langflow-icon-black-transparent.svg",style:{width:"40px"},alt:"Search"})})]});return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(Ft,{...e}),a]})}const Bt=(0,E.fM)([L.a,w.o,T.Tv,Qe.VQ,i.Jx,function({children:e}){return(0,p.jsx)(R.y_,{children:(0,p.jsx)(A.e,{children:(0,p.jsx)(q,{children:e})})})}]);function Nt({children:e}){return(0,p.jsx)(Bt,{children:e})}var $t=n(51107);function Lt({error:e,tryAgain:t}){return(0,p.jsx)("main",{className:"container margin-vert--xl",children:(0,p.jsx)("div",{className:"row",children:(0,p.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,p.jsx)($t.A,{as:"h1",className:"hero__title",children:(0,p.jsx)(l.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,p.jsx)("div",{className:"margin-vert--lg",children:(0,p.jsx)(ct,{onClick:t,className:"button button--primary shadow--lw"})}),(0,p.jsx)("hr",{}),(0,p.jsx)("div",{className:"margin-vert--md",children:(0,p.jsx)(pt,{error:e})})]})})})}const Vt={mainWrapper:"mainWrapper_z2l0"};function Mt(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,g.J)(),(0,p.jsxs)(Nt,{children:[(0,p.jsx)(i.be,{title:s,description:l}),(0,p.jsx)(b,{}),(0,p.jsx)(x,{}),(0,p.jsx)(bt,{}),(0,p.jsx)("div",{id:u,className:(0,o.A)(h.G.layout.main.container,h.G.wrapper.main,Vt.mainWrapper,r),children:(0,p.jsx)(a.A,{fallback:e=>(0,p.jsx)(Lt,{...e}),children:t})}),!n&&(0,p.jsx)(Dt,{})]})}},12983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=o,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),s="/"===i||i===r?i:(l=i,c=n,c?o(l):a(l));var l,c;return e.replace(i,s)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=a;const r=n(42566);function o(e){return e.endsWith("/")?e:`${e}/`}function a(e){return(0,r.removeSuffix)(e,"/")}},13003:e=>{"use strict";e.exports=function(e){return e!=e}},13144:(e,t,n)=>{"use strict";var r=n(66743),o=n(11002),a=n(10076),i=n(47119);e.exports=i||r.call(a,o)},14035:(e,t,n)=>{"use strict";var r,o=n(36556),a=n(49092)(),i=n(9957),s=n(75795);if(a){var l=o("RegExp.prototype.exec"),c={},p=function(){throw c},u={toString:p,valueOf:p};"symbol"==typeof Symbol.toPrimitive&&(u[Symbol.toPrimitive]=p),r=function(e){if(!e||"object"!=typeof e)return!1;var t=s(e,"lastIndex");if(!(t&&i(t,"value")))return!1;try{l(e,u)}catch(n){return n===c}}}else{var d=o("Object.prototype.toString");r=function(e){return!(!e||"object"!=typeof e&&"function"!=typeof e)&&"[object RegExp]"===d(e)}}e.exports=r},14090:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(96540);const o="navigation-with-keyboard";function a(){(0,r.useEffect)(()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}},[])}},14563:(e,t,n)=>{"use strict";n.d(t,{AL:()=>p,s$:()=>u});var r=n(96540),o=n(44586),a=n(36803),i=n(89532),s=n(74848);const l=({title:e,siteTitle:t,titleDelimiter:n})=>{const r=e?.trim();return r&&r!==t?`${r} ${n} ${t}`:t},c=(0,r.createContext)(null);function p({formatter:e,children:t}){return(0,s.jsx)(c.Provider,{value:e,children:t})}function u(){const e=function(){const e=(0,r.useContext)(c);if(null===e)throw new i.dV("TitleFormatterProvider");return e}(),{siteConfig:t}=(0,o.A)(),{title:n,titleDelimiter:s}=t,{plugin:p}=(0,a.A)();return{format:t=>e({title:t,siteTitle:n,titleDelimiter:s,plugin:p,defaultFormatter:l})}}},15066:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;to});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),m=Symbol.iterator;var f={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||f}function _(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||f}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},_.prototype=g.prototype;var v=b.prototype=new _;v.constructor=b,y(v,g.prototype),v.isPureReactComponent=!0;var w=Array.isArray,k=Object.prototype.hasOwnProperty,j={current:null},O={key:!0,ref:!0,__self:!0,__source:!0};function P(e,t,r){var o,a={},i=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,o)&&!O.hasOwnProperty(o)&&(a[o]=t[o]);var l=arguments.length-2;if(1===l)a.children=r;else if(1{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},17065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},17559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},announcementBar:{container:"theme-announcement-bar"},layout:{navbar:{container:"theme-layout-navbar",containerLeft:"theme-layout-navbar-left",containerRight:"theme-layout-navbar-right",mobileSidebar:{container:"theme-layout-navbar-sidebar",panel:"theme-layout-navbar-sidebar-panel"}},main:{container:"theme-layout-main"},footer:{container:"theme-layout-footer",column:"theme-layout-footer-column"}},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},18215:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;to});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=18692},19700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=a.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var p=a[o],u=n.tokenStack[p],d="string"==typeof c?c:c.content,m=t(r,p),f=d.indexOf(m);if(f>-1){++o;var y=d.substring(0,f),h=new e.Token(r,e.tokenize(u,n.grammar),"language-"+r,u),g=d.substring(f+m.length),_=[];y&&_.push.apply(_,i([y])),_.push(h),g&&_.push.apply(_,i([g])),"string"==typeof c?s.splice.apply(s,[l,1].concat(_)):c.content=_}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},20311:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],p=0;(l=new Error(t.replace(/%s/g,function(){return c[p++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},21020:(e,t,n)=>{"use strict";var r=n(96540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,p=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(p=t.ref),t)i.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:p,props:a,_owner:s.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},21122:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(96540),o=n(15066),a=n(92303),i=n(95293);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(74848);function c({className:e,children:t}){const n=(0,a.A)(),{colorMode:c}=(0,i.G)();return(0,l.jsx)(l.Fragment,{children:(n?"dark"===c?["dark"]:["light"]:["light","dark"]).map(n=>{const a=t({theme:n,className:(0,o.A)(e,s.themedComponent,s[`themedComponent--${n}`])});return(0,l.jsx)(r.Fragment,{children:a},n)})})}function p(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:({theme:e,className:n})=>(0,l.jsx)("img",{src:t[e],alt:r,className:n,...o})})}},21312:(e,t,n)=>{"use strict";n.d(t,{A:()=>p,T:()=>c});var r=n(96540),o=n(74848);function a(e,t){const n=e.split(/(\{\w+\})/).map((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e});return n.some(e=>(0,r.isValidElement)(e))?n.map((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e).filter(e=>""!==e):n.join("")}var i=n(22654),s=n(96763);function l({id:e,message:t}){if(void 0===e&&void 0===t)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[e??t]??t??e}function c({message:e,id:t},n){return a(l({message:e,id:t}),n)}function p({children:e,id:t,values:n}){if(e&&"string"!=typeof e)throw s.warn("Illegal children",e),new Error("The Docusaurus component only accept simple string values");const r=l({message:e,id:t});return(0,o.jsx)(o.Fragment,{children:a(r,n)})}},21798:(e,t,n)=>{"use strict";n.r(t)},22067:(e,t,n)=>{"use strict";var r=n(96540),o=n(5338),a=n(80545),i=n(54625),s=n(4784),l=n(38193);const c=[n(31911),n(10119),n(26134),n(76294),n(641),n(21798),n(68665),n(11818),n(7767),n(23390),n(73796),n(29492),n(88135)];var p=n(35947),u=n(56347),d=n(22831),m=n(74848);function f({children:e}){return(0,m.jsx)(m.Fragment,{children:e})}var y=n(14563);const h=e=>e.defaultFormatter(e);function g({children:e}){return(0,m.jsx)(y.AL,{formatter:h,children:e})}function _({children:e}){return(0,m.jsx)(g,{children:e})}var b=n(5260),v=n(44586),w=n(86025),k=n(6342),j=n(45500),O=n(32131),P=n(14090),S=n(2967),I=n(70440),x=n(41463);function A(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,v.A)(),r=(0,O.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,m.jsxs)(b.A,{children:[Object.entries(n).map(([e,{htmlLang:t}])=>(0,m.jsx)("link",{rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:t},e)),(0,m.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,m.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter(e=>o!==e.htmlLang).map(e=>(0,m.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`))]})}function T({permalink:e}){const{siteConfig:{url:t}}=(0,v.A)(),n=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,v.A)(),{pathname:r}=(0,u.zy)();return e+(0,I.Ks)((0,w.Ay)(r),{trailingSlash:n,baseUrl:t})}(),r=e?`${t}${e}`:n;return(0,m.jsxs)(b.A,{children:[(0,m.jsx)("meta",{property:"og:url",content:r}),(0,m.jsx)("link",{rel:"canonical",href:r})]})}function E(){const{i18n:{currentLocale:e}}=(0,v.A)(),{metadata:t,image:n}=(0,k.p)();return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(b.A,{children:[(0,m.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,m.jsx)("body",{className:P.w})]}),n&&(0,m.jsx)(j.be,{image:n}),(0,m.jsx)(T,{}),(0,m.jsx)(A,{}),(0,m.jsx)(x.A,{tag:S.C,locale:e}),(0,m.jsx)(b.A,{children:t.map((e,t)=>(0,m.jsx)("meta",{...e},t))})]})}const R=new Map;var C=n(6125),q=n(26988),F=n(205);function D(e,...t){const n=c.map(n=>{const r=n.default?.[e]??n[e];return r?.(...t)});return()=>n.forEach(e=>e?.())}const B=function({children:e,location:t,previousLocation:n}){return(0,F.A)(()=>{n!==t&&(!function({location:e,previousLocation:t}){if(!t)return;const n=e.pathname===t.pathname,r=e.hash===t.hash,o=e.search===t.search;if(n&&r&&!o)return;const{hash:a}=e;if(a){const e=decodeURIComponent(a.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:t,previousLocation:n}),D("onRouteDidUpdate",{previousLocation:n,location:t}))},[n,t]),e};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map(e=>(0,d.u)(p.A,e)).flat();return Promise.all(t.map(e=>e.route.component.preload?.()))}var $=n(96763);class L extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.default.canUseDOM?D("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=D("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then(()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})}).catch(e=>{$.warn(e),window.location.reload()}),!1}render(){const{children:e,location:t}=this.props;return(0,m.jsx)(B,{previousLocation:this.previousLocation,location:t,children:(0,m.jsx)(u.qh,{location:t,render:()=>e})})}}const V=L,M="__docusaurus-base-url-issue-banner-suggestion-container";function U(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/!0===e.exact))return R.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return R.set(e.pathname,t),{...e,pathname:t}}((0,u.zy)());return(0,m.jsx)(V,{location:e,children:Y})}function Z(){return(0,m.jsx)(W.A,{children:(0,m.jsx)(q.l,{children:(0,m.jsxs)(C.x,{children:[(0,m.jsx)(f,{children:(0,m.jsxs)(_,{children:[(0,m.jsx)(G,{}),(0,m.jsx)(E,{}),(0,m.jsx)(H,{}),(0,m.jsx)(J,{})]})}),(0,m.jsx)(Q,{})]})})})}var X=n(84054);const ee=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)})};var te=n(86921);const ne=new Set,re=new Set,oe=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ae={prefetch:e=>{if(!(e=>!oe()&&!re.has(e)&&!ne.has(e))(e))return!1;ne.add(e);const t=(0,d.u)(p.A,e).flatMap(e=>{return t=e.route.path,Object.entries(X).filter(([e])=>e.replace(/-[^-]+$/,"")===t).flatMap(([,e])=>Object.values((0,te.A)(e)));var t});return Promise.all(t.map(e=>{const t=n.gca(e);return t&&!t.includes("undefined")?ee(t).catch(()=>{}):Promise.resolve()}))},preload:e=>!!(e=>!oe()&&!re.has(e))(e)&&(re.add(e),N(e))},ie=Object.freeze(ae);var se=n(96763);function le({children:e}){return"hash"===s.A.future.experimental_router?(0,m.jsx)(i.I9,{children:e}):(0,m.jsx)(i.Kd,{children:e})}const ce=Boolean(!0);if(l.default.canUseDOM){window.docusaurus=ie;const e=document.getElementById("__docusaurus"),t=(0,m.jsx)(a.vd,{children:(0,m.jsx)(le,{children:(0,m.jsx)(Z,{})})}),n=(e,t)=>{se.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ce)window.docusaurusRoot=o.hydrateRoot(e,t,{onRecoverableError:n});else{const r=o.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};N(window.location.pathname).then(()=>{(0,r.startTransition)(i)})}},22069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>m});var r=n(96540),o=n(75600),a=n(24581),i=n(57485),s=n(6342),l=n(89532),c=n(74848);const p=r.createContext(void 0);function u(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,s.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1),c=(0,r.useCallback)(()=>{l(e=>!e)},[]);return(0,r.useEffect)(()=>{"desktop"===t&&l(!1)},[t]),(0,r.useMemo)(()=>({disabled:e,shouldRender:n,toggle:c,shown:i}),[e,n,c,i])}function d({handler:e}){return(0,i.$Z)(e),null}function m({children:e}){const t=u();return(0,c.jsxs)(c.Fragment,{children:[t.shown&&(0,c.jsx)(d,{handler:()=>(t.toggle(),!1)}),(0,c.jsx)(p.Provider,{value:t,children:e})]})}function f(){const e=r.useContext(p);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},22551:(e,t,n)=>{"use strict";var r=n(96763),o=n(96540),a=n(69982);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n