From 5eb29328b203d7499ddce4d299b94c5bea7662ce Mon Sep 17 00:00:00 2001 From: "github-merge-queue[bot]" Date: Wed, 26 Feb 2025 21:53:15 +0000 Subject: [PATCH] deploy: 2bbb0f58385c3bd7d0aa0030d03fb3fd52e03d7e --- 404.html | 4 +- Concepts/concepts-flows.html | 6 +- Deployment/deployment-docker.html | 81 ------- agents-overview.html | 6 +- agents-tool-calling-agent-component.html | 6 +- api-reference-api-examples.html | 6 +- api.html | 4 +- api/add-user.html | 4 +- api/auto-login.html | 4 +- api/build-flow.html | 4 +- api/build-vertex-stream.html | 4 +- api/build-vertex.html | 4 +- api/cancel-build.html | 4 +- api/check-if-store-has-api-key.html | 4 +- api/check-if-store-is-enabled.html | 4 +- api/create-api-key-route.html | 4 +- api/create-flow.html | 4 +- api/create-flows.html | 4 +- api/create-folder.html | 4 +- api/create-upload-file.html | 4 +- api/create-variable.html | 4 +- api/custom-component-update.html | 4 +- api/custom-component.html | 4 +- api/delete-all-files.html | 4 +- api/delete-api-key-route.html | 4 +- api/delete-file-1.html | 4 +- api/delete-file.html | 4 +- api/delete-flow.html | 4 +- api/delete-folder.html | 4 +- api/delete-messages-session.html | 4 +- api/delete-messages.html | 4 +- api/delete-multiple-flows.html | 4 +- api/delete-user.html | 4 +- api/delete-variable.html | 4 +- api/delete-vertex-builds.html | 4 +- api/download-component.html | 4 +- api/download-file-1.html | 4 +- api/download-file-2.html | 4 +- api/download-file.html | 4 +- api/download-image.html | 4 +- api/download-multiple-file.html | 4 +- api/download-profile-picture.html | 4 +- api/edit-file-name.html | 4 +- api/experimental-run-flow.html | 4 +- api/get-all.html | 4 +- api/get-api-keys-route.html | 4 +- api/get-build-events.html | 4 +- api/get-components.html | 4 +- api/get-config.html | 4 +- api/get-list-of-components-liked-by-user.html | 4 +- api/get-messages.html | 4 +- api/get-starter-projects.html | 4 +- api/get-tags.html | 4 +- api/get-task-status.html | 4 +- api/get-transactions.html | 4 +- api/get-version.html | 4 +- api/get-vertex-builds.html | 4 +- api/handle-messages.html | 4 +- api/handle-sse.html | 4 +- api/health-check.html | 4 +- api/health.html | 4 +- api/like-component.html | 4 +- api/list-files-1.html | 4 +- api/list-files.html | 4 +- api/list-profile-pictures.html | 4 +- api/login-to-get-access-token.html | 4 +- api/logout.html | 4 +- api/logs.html | 4 +- api/patch-user.html | 4 +- api/post-validate-code.html | 4 +- api/post-validate-prompt.html | 4 +- api/process-1.html | 4 +- api/process.html | 4 +- api/read-all-users.html | 4 +- api/read-basic-examples.html | 4 +- api/read-current-user.html | 4 +- api/read-flow.html | 4 +- api/read-flows.html | 4 +- api/read-folder.html | 4 +- api/read-folders.html | 4 +- api/read-variables.html | 4 +- api/refresh-token.html | 4 +- api/reset-password.html | 4 +- api/retrieve-vertices-order.html | 4 +- api/save-store-api-key.html | 4 +- api/share-component.html | 4 +- api/simplified-run-flow.html | 4 +- api/stream-logs.html | 4 +- api/update-flow.html | 4 +- api/update-folder.html | 4 +- api/update-message.html | 4 +- api/update-session-id.html | 4 +- api/update-shared-component.html | 4 +- api/update-variable.html | 4 +- api/upload-file-1.html | 4 +- api/upload-file-2.html | 4 +- api/upload-file.html | 4 +- api/upload-user-file.html | 4 +- api/webhook-run-flow.html | 4 +- ...b3cfb.9640bbc9.js => 172b3cfb.99703724.js} | 2 +- assets/js/22dd74f7.18fd1848.js | 1 - assets/js/22dd74f7.d9d69df3.js | 1 + assets/js/2ab0d4f5.1c8e7815.js | 1 - assets/js/2ab0d4f5.f2f3ed71.js | 1 + assets/js/3b356402.9691cfec.js | 1 + assets/js/3b356402.d2fd2ec3.js | 1 - ...fcf75.792f1012.js => 44dfcf75.2ae9abad.js} | 2 +- assets/js/54175a6c.86865e4e.js | 1 + assets/js/54175a6c.ab836bda.js | 1 - assets/js/5cf11f26.4983a282.js | 1 + assets/js/5cf11f26.b3b4d32d.js | 1 - assets/js/c2ebd62a.2a4b8371.js | 1 - assets/js/c2ebd62a.8b4e5776.js | 1 + assets/js/dc7b1ef3.2932102b.js | 1 + assets/js/dc7b1ef3.6b1741d9.js | 1 - ...6a4d2.17a197da.js => e6c6a4d2.c01924a2.js} | 2 +- assets/js/main.7eed58fb.js | 2 - assets/js/main.ca204d2c.js | 2 + ...CENSE.txt => main.ca204d2c.js.LICENSE.txt} | 0 ...n.ef6fac73.js => runtime~main.a1c02d8d.js} | 2 +- components-agents.html | 6 +- components-custom-components.html | 6 +- components-data.html | 6 +- components-embedding-models.html | 6 +- components-helpers.html | 6 +- components-io.html | 6 +- components-loaders.html | 6 +- components-logic.html | 6 +- components-memories.html | 6 +- components-models.html | 6 +- components-processing.html | 6 +- components-prompts.html | 6 +- components-tools.html | 6 +- components-vector-stores.html | 6 +- concepts-api.html | 6 +- concepts-components.html | 6 +- concepts-objects.html | 6 +- concepts-overview.html | 6 +- concepts-playground.html | 6 +- configuration-api-keys.html | 6 +- configuration-authentication.html | 6 +- configuration-auto-save.html | 6 +- configuration-backend-only.html | 6 +- configuration-cli.html | 6 +- configuration-custom-database.html | 4 +- configuration-global-variables.html | 6 +- configuration-security-best-practices.html | 8 +- contributing-community.html | 6 +- contributing-components.html | 6 +- contributing-github-discussions.html | 6 +- contributing-github-issues.html | 6 +- contributing-how-to-contribute.html | 6 +- contributing-telemetry.html | 6 +- deployment-docker.html | 114 ++++++++++ deployment-gcp.html | 36 +-- deployment-hugging-face-spaces.html | 35 ++- deployment-kubernetes.html | 212 ++++++++++-------- deployment-railway.html | 24 +- deployment-render.html | 24 +- environment-variables.html | 6 +- get-started-installation.html | 6 +- get-started-quickstart.html | 6 +- index.html | 6 +- integrations-apify.html | 6 +- integrations-assemblyai.html | 6 +- integrations-composio.html | 6 +- integrations-langfuse.html | 6 +- integrations-langsmith.html | 6 +- integrations-langwatch.html | 6 +- integrations-nvidia-ingest.html | 6 +- ...setup-google-cloud-vertex-ai-langflow.html | 6 +- integrations-setup-google-oauth-langflow.html | 6 +- .../notion/notion-agent-conversational.html | 6 +- .../notion/notion-agent-meeting-notes.html | 6 +- integrations/notion/setup.html | 6 +- search.html | 4 +- sitemap.xml | 2 +- starter-projects-basic-prompting.html | 6 +- starter-projects-simple-agent.html | 6 +- starter-projects-vector-store-rag.html | 6 +- tutorials-blog-writer.html | 6 +- tutorials-document-qa.html | 6 +- tutorials-math-agent.html | 6 +- tutorials-memory-chatbot.html | 6 +- tutorials-sequential-agent.html | 6 +- tutorials-travel-planning-agent.html | 6 +- 186 files changed, 683 insertions(+), 623 deletions(-) delete mode 100644 Deployment/deployment-docker.html rename assets/js/{172b3cfb.9640bbc9.js => 172b3cfb.99703724.js} (66%) delete mode 100644 assets/js/22dd74f7.18fd1848.js create mode 100644 assets/js/22dd74f7.d9d69df3.js delete mode 100644 assets/js/2ab0d4f5.1c8e7815.js create mode 100644 assets/js/2ab0d4f5.f2f3ed71.js create mode 100644 assets/js/3b356402.9691cfec.js delete mode 100644 assets/js/3b356402.d2fd2ec3.js rename assets/js/{44dfcf75.792f1012.js => 44dfcf75.2ae9abad.js} (78%) create mode 100644 assets/js/54175a6c.86865e4e.js delete mode 100644 assets/js/54175a6c.ab836bda.js create mode 100644 assets/js/5cf11f26.4983a282.js delete mode 100644 assets/js/5cf11f26.b3b4d32d.js delete mode 100644 assets/js/c2ebd62a.2a4b8371.js create mode 100644 assets/js/c2ebd62a.8b4e5776.js create mode 100644 assets/js/dc7b1ef3.2932102b.js delete mode 100644 assets/js/dc7b1ef3.6b1741d9.js rename assets/js/{e6c6a4d2.17a197da.js => e6c6a4d2.c01924a2.js} (56%) delete mode 100644 assets/js/main.7eed58fb.js create mode 100644 assets/js/main.ca204d2c.js rename assets/js/{main.7eed58fb.js.LICENSE.txt => main.ca204d2c.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.ef6fac73.js => runtime~main.a1c02d8d.js} (81%) create mode 100644 deployment-docker.html diff --git a/404.html b/404.html index 76590560aa..c37e5dc410 100644 --- a/404.html +++ b/404.html @@ -16,8 +16,8 @@ - - + + diff --git a/Concepts/concepts-flows.html b/Concepts/concepts-flows.html index 96381757bd..c149c718ff 100644 --- a/Concepts/concepts-flows.html +++ b/Concepts/concepts-flows.html @@ -16,8 +16,8 @@ - - + + @@ -25,7 +25,7 @@ -
Skip to main content

Flows

+

Flows

Flows in Langflow are fully serializable and can be saved and loaded from the file system. In this guide, we'll explore how to import and export flows.

Import Flow

If you've already got a Langflow JSON file, import it into Langflow by clicking on the project name and choosing Import Flow.

diff --git a/Deployment/deployment-docker.html b/Deployment/deployment-docker.html deleted file mode 100644 index d546061c5e..0000000000 --- a/Deployment/deployment-docker.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - -Docker | Langflow Documentation - - - - - - - - - - - - - - - - - - - - - -

Docker

This guide will help you get LangFlow up and running using Docker and Docker Compose.

-

Prerequisites

-
-
    -
  • Docker
  • -
  • Docker Compose
  • -
-

Docker

-
-

Clone repo and build Docker container

-
    -
  1. -

    Clone the LangFlow repository:

    -

    git clone https://github.com/langflow-ai/langflow.git

    -
  2. -
  3. -

    Navigate to the docker_example directory:

    -

    cd langflow/docker_example

    -
  4. -
  5. -

    Run the Docker Compose file:

    -

    docker compose up

    -
  6. -
-

LangFlow will now be accessible at http://localhost:7860/.

-

Docker Compose configuration

-

The Docker Compose configuration spins up two services: langflow and postgres.

-

LangFlow service

-

The langflow service uses the langflowai/langflow:latest Docker image and exposes port 7860. It depends on the postgres service.

-

Environment variables:

-
    -
  • LANGFLOW_DATABASE_URL: The connection string for the PostgreSQL database.
  • -
  • LANGFLOW_CONFIG_DIR: The directory where LangFlow stores logs, file storage, monitor data, and secret keys.
  • -
-

Volumes:

-
    -
  • langflow-data: This volume is mapped to /app/langflow in the container.
  • -
-

PostgreSQL service

-

The postgres service uses the postgres:16 Docker image and exposes port 5432.

-

Environment variables:

-
    -
  • POSTGRES_USER: The username for the PostgreSQL database.
  • -
  • POSTGRES_PASSWORD: The password for the PostgreSQL database.
  • -
  • POSTGRES_DB: The name of the PostgreSQL database.
  • -
-

Volumes:

-
    -
  • langflow-postgres: This volume is mapped to /var/lib/postgresql/data in the container.
  • -
-

Switch to a specific LangFlow version

-

If you want to use a specific version of LangFlow, you can modify the image field under the langflow service in the Docker Compose file. For example, to use version 1.0-alpha, change langflowai/langflow:latest to langflowai/langflow:1.0-alpha.

Search
- - \ No newline at end of file diff --git a/agents-overview.html b/agents-overview.html index 7714b875c7..9548c4f18b 100644 --- a/agents-overview.html +++ b/agents-overview.html @@ -16,8 +16,8 @@ - - + + @@ -25,7 +25,7 @@ -

Agents overview

Agents are AI systems that use LLMs as a brain to analyze problems and select external tools.

+

Agents overview

Agents are AI systems that use LLMs as a brain to analyze problems and select external tools.

Instead of developers having to create logical statements to direct every possible path of a program, an agent can operate with autonomy. An agent can leverage external tools and APIs to gather information and take action, demonstrate chain-of-thought reasoning, and generate tailored text for specific purposes.

To simplify the development of agents, Langflow created a custom Tool calling agent component that simplifies configuration and lets developers focus on solving problems with agents.

Tool calling agentcomponent

diff --git a/agents-tool-calling-agent-component.html b/agents-tool-calling-agent-component.html index 48ada0fa8d..6959a13bee 100644 --- a/agents-tool-calling-agent-component.html +++ b/agents-tool-calling-agent-component.html @@ -16,8 +16,8 @@ - - + + @@ -25,7 +25,7 @@ -

Create a problem-solving agent

+

Create a problem-solving agent

Developing agents in Langchain is complex.

The AgentComponent is a component for easily creating an AI agent capable of analyzing tasks using tools you provide.

The component contains all of the elements you'll need for creating an agent. Instead of managing LLM models and providers, pick your model and enter your API key. Instead of connecting a Prompt component, enter instructions in the component's Agent Instruction fields.

diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html index fe50880ff6..380f2b7609 100644 --- a/api-reference-api-examples.html +++ b/api-reference-api-examples.html @@ -16,8 +16,8 @@ - - + + @@ -25,7 +25,7 @@ -

API examples

+

API examples

This page provides examples and practices for managing Langflow using the Langflow API.

The Langflow API's OpenAPI spec can be viewed and tested at your Langflow deployment's docs endpoint. diff --git a/api.html b/api.html index be4b20fe27..0e744ba2a5 100644 --- a/api.html +++ b/api.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/add-user.html b/api/add-user.html index fc439ff49c..3f7b4837c7 100644 --- a/api/add-user.html +++ b/api/add-user.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/auto-login.html b/api/auto-login.html index 166452eaba..59a3a582da 100644 --- a/api/auto-login.html +++ b/api/auto-login.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/build-flow.html b/api/build-flow.html index 0b0c0864e6..203c25220e 100644 --- a/api/build-flow.html +++ b/api/build-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/build-vertex-stream.html b/api/build-vertex-stream.html index dc80e1c24c..3fbf98b9b5 100644 --- a/api/build-vertex-stream.html +++ b/api/build-vertex-stream.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/build-vertex.html b/api/build-vertex.html index 9a22e5650c..6d28d445db 100644 --- a/api/build-vertex.html +++ b/api/build-vertex.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/cancel-build.html b/api/cancel-build.html index d17907a38b..701a72d00d 100644 --- a/api/cancel-build.html +++ b/api/cancel-build.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/check-if-store-has-api-key.html b/api/check-if-store-has-api-key.html index 999584ad19..6d78d55787 100644 --- a/api/check-if-store-has-api-key.html +++ b/api/check-if-store-has-api-key.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/check-if-store-is-enabled.html b/api/check-if-store-is-enabled.html index 3a008205d4..33ba92242e 100644 --- a/api/check-if-store-is-enabled.html +++ b/api/check-if-store-is-enabled.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/create-api-key-route.html b/api/create-api-key-route.html index 74712e987a..97e8be59d0 100644 --- a/api/create-api-key-route.html +++ b/api/create-api-key-route.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/create-flow.html b/api/create-flow.html index 401298ab01..e09790342a 100644 --- a/api/create-flow.html +++ b/api/create-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/create-flows.html b/api/create-flows.html index 75b191b130..d2696d97e5 100644 --- a/api/create-flows.html +++ b/api/create-flows.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/create-folder.html b/api/create-folder.html index ba6ef691bd..44669be274 100644 --- a/api/create-folder.html +++ b/api/create-folder.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/create-upload-file.html b/api/create-upload-file.html index 00b0d73afe..04b20dc3a6 100644 --- a/api/create-upload-file.html +++ b/api/create-upload-file.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/create-variable.html b/api/create-variable.html index 0c1d448341..11be492b12 100644 --- a/api/create-variable.html +++ b/api/create-variable.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/custom-component-update.html b/api/custom-component-update.html index fced1baafb..f16360ecd9 100644 --- a/api/custom-component-update.html +++ b/api/custom-component-update.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/custom-component.html b/api/custom-component.html index b01d492ac8..66828dfb8b 100644 --- a/api/custom-component.html +++ b/api/custom-component.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-all-files.html b/api/delete-all-files.html index 42831739ef..0810c6886a 100644 --- a/api/delete-all-files.html +++ b/api/delete-all-files.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-api-key-route.html b/api/delete-api-key-route.html index e74b649281..aff044723f 100644 --- a/api/delete-api-key-route.html +++ b/api/delete-api-key-route.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-file-1.html b/api/delete-file-1.html index 4c6bceee9b..c20146c6ce 100644 --- a/api/delete-file-1.html +++ b/api/delete-file-1.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-file.html b/api/delete-file.html index bb0fc47d90..210460a975 100644 --- a/api/delete-file.html +++ b/api/delete-file.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-flow.html b/api/delete-flow.html index 70965095e2..d4a036b220 100644 --- a/api/delete-flow.html +++ b/api/delete-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-folder.html b/api/delete-folder.html index a4f2902246..63145e8437 100644 --- a/api/delete-folder.html +++ b/api/delete-folder.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-messages-session.html b/api/delete-messages-session.html index 93950e3bd9..2cfe54a59e 100644 --- a/api/delete-messages-session.html +++ b/api/delete-messages-session.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-messages.html b/api/delete-messages.html index 0927d3e32c..8eb23ec1ca 100644 --- a/api/delete-messages.html +++ b/api/delete-messages.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-multiple-flows.html b/api/delete-multiple-flows.html index a2f30dbb45..92ef7ebcb7 100644 --- a/api/delete-multiple-flows.html +++ b/api/delete-multiple-flows.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-user.html b/api/delete-user.html index 12e1f97b0f..ad4b5d711c 100644 --- a/api/delete-user.html +++ b/api/delete-user.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-variable.html b/api/delete-variable.html index 034ec61e5a..b731bcc9cb 100644 --- a/api/delete-variable.html +++ b/api/delete-variable.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/delete-vertex-builds.html b/api/delete-vertex-builds.html index 3a3afa4fa8..157c6fa35f 100644 --- a/api/delete-vertex-builds.html +++ b/api/delete-vertex-builds.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/download-component.html b/api/download-component.html index a382f9c1db..b48603c725 100644 --- a/api/download-component.html +++ b/api/download-component.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/download-file-1.html b/api/download-file-1.html index 99ff7b456d..fab3ecd0cf 100644 --- a/api/download-file-1.html +++ b/api/download-file-1.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/download-file-2.html b/api/download-file-2.html index 9f280fac9f..fc951a3fa7 100644 --- a/api/download-file-2.html +++ b/api/download-file-2.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/download-file.html b/api/download-file.html index 234734eb7b..969403969e 100644 --- a/api/download-file.html +++ b/api/download-file.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/download-image.html b/api/download-image.html index 2e4e71bd6d..e5e1d51116 100644 --- a/api/download-image.html +++ b/api/download-image.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/download-multiple-file.html b/api/download-multiple-file.html index 89773e4998..50fccc3563 100644 --- a/api/download-multiple-file.html +++ b/api/download-multiple-file.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/download-profile-picture.html b/api/download-profile-picture.html index 8b69edddd2..1e2aa74463 100644 --- a/api/download-profile-picture.html +++ b/api/download-profile-picture.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/edit-file-name.html b/api/edit-file-name.html index 605f9b1945..0b7446a32a 100644 --- a/api/edit-file-name.html +++ b/api/edit-file-name.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/experimental-run-flow.html b/api/experimental-run-flow.html index b751872aac..714827caf3 100644 --- a/api/experimental-run-flow.html +++ b/api/experimental-run-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-all.html b/api/get-all.html index 61794ffaa2..caaba54636 100644 --- a/api/get-all.html +++ b/api/get-all.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-api-keys-route.html b/api/get-api-keys-route.html index fa7f566e0c..ca0b2517f7 100644 --- a/api/get-api-keys-route.html +++ b/api/get-api-keys-route.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-build-events.html b/api/get-build-events.html index af0590faa0..2ffa0aab2d 100644 --- a/api/get-build-events.html +++ b/api/get-build-events.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-components.html b/api/get-components.html index f7d659b4cf..977a01c2fc 100644 --- a/api/get-components.html +++ b/api/get-components.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-config.html b/api/get-config.html index 0ae555152e..ee36a685be 100644 --- a/api/get-config.html +++ b/api/get-config.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-list-of-components-liked-by-user.html b/api/get-list-of-components-liked-by-user.html index 78dab5941a..437ee4bb7b 100644 --- a/api/get-list-of-components-liked-by-user.html +++ b/api/get-list-of-components-liked-by-user.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-messages.html b/api/get-messages.html index 0747711403..f3fefbe7fa 100644 --- a/api/get-messages.html +++ b/api/get-messages.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-starter-projects.html b/api/get-starter-projects.html index 9b14354f61..1655022413 100644 --- a/api/get-starter-projects.html +++ b/api/get-starter-projects.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-tags.html b/api/get-tags.html index 22ee456de9..8ae78d33d7 100644 --- a/api/get-tags.html +++ b/api/get-tags.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-task-status.html b/api/get-task-status.html index d2e0073b57..9345c14ae8 100644 --- a/api/get-task-status.html +++ b/api/get-task-status.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-transactions.html b/api/get-transactions.html index 0fa55f1158..624043d9f3 100644 --- a/api/get-transactions.html +++ b/api/get-transactions.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-version.html b/api/get-version.html index 0ce449ebc0..e8244551b0 100644 --- a/api/get-version.html +++ b/api/get-version.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/get-vertex-builds.html b/api/get-vertex-builds.html index 38e377315e..d90e7accfa 100644 --- a/api/get-vertex-builds.html +++ b/api/get-vertex-builds.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/handle-messages.html b/api/handle-messages.html index b95b50065e..23b59ac608 100644 --- a/api/handle-messages.html +++ b/api/handle-messages.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/handle-sse.html b/api/handle-sse.html index fbbb05b206..92873eebe4 100644 --- a/api/handle-sse.html +++ b/api/handle-sse.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/health-check.html b/api/health-check.html index f9c134e6a5..0328dcba7f 100644 --- a/api/health-check.html +++ b/api/health-check.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/health.html b/api/health.html index 65262abc08..a67d9e9cb0 100644 --- a/api/health.html +++ b/api/health.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/like-component.html b/api/like-component.html index 02af99c0b2..13d3b10b5e 100644 --- a/api/like-component.html +++ b/api/like-component.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/list-files-1.html b/api/list-files-1.html index 2a3bc0f739..c48ca53a72 100644 --- a/api/list-files-1.html +++ b/api/list-files-1.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/list-files.html b/api/list-files.html index c2688cf0d4..ed80420069 100644 --- a/api/list-files.html +++ b/api/list-files.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/list-profile-pictures.html b/api/list-profile-pictures.html index b4147bb473..60ba99cd60 100644 --- a/api/list-profile-pictures.html +++ b/api/list-profile-pictures.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/login-to-get-access-token.html b/api/login-to-get-access-token.html index 4975ee9f25..62b90cf486 100644 --- a/api/login-to-get-access-token.html +++ b/api/login-to-get-access-token.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/logout.html b/api/logout.html index 3de8cb88cb..0a54981b23 100644 --- a/api/logout.html +++ b/api/logout.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/logs.html b/api/logs.html index 518f7942b5..7a85d88648 100644 --- a/api/logs.html +++ b/api/logs.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/patch-user.html b/api/patch-user.html index 4af3705e27..e84b0703c9 100644 --- a/api/patch-user.html +++ b/api/patch-user.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/post-validate-code.html b/api/post-validate-code.html index 7f8909553d..feab63d45e 100644 --- a/api/post-validate-code.html +++ b/api/post-validate-code.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/post-validate-prompt.html b/api/post-validate-prompt.html index dcbe5a3ec9..af9331cd2e 100644 --- a/api/post-validate-prompt.html +++ b/api/post-validate-prompt.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/process-1.html b/api/process-1.html index 751d408d96..515ec141f0 100644 --- a/api/process-1.html +++ b/api/process-1.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/process.html b/api/process.html index c702952a4a..effab6028f 100644 --- a/api/process.html +++ b/api/process.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-all-users.html b/api/read-all-users.html index ffcab6de3d..019d7a0986 100644 --- a/api/read-all-users.html +++ b/api/read-all-users.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-basic-examples.html b/api/read-basic-examples.html index c06944c0b9..de8d80330b 100644 --- a/api/read-basic-examples.html +++ b/api/read-basic-examples.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-current-user.html b/api/read-current-user.html index 9c1c96469f..27673e5659 100644 --- a/api/read-current-user.html +++ b/api/read-current-user.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-flow.html b/api/read-flow.html index 6946253184..605df6c343 100644 --- a/api/read-flow.html +++ b/api/read-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-flows.html b/api/read-flows.html index ff52eef665..521e9ac26a 100644 --- a/api/read-flows.html +++ b/api/read-flows.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-folder.html b/api/read-folder.html index 2b4261d10f..6e844dd6b4 100644 --- a/api/read-folder.html +++ b/api/read-folder.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-folders.html b/api/read-folders.html index 587bbdc476..1f2ea9f8dc 100644 --- a/api/read-folders.html +++ b/api/read-folders.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/read-variables.html b/api/read-variables.html index edb52e12c3..d6ca79a8f8 100644 --- a/api/read-variables.html +++ b/api/read-variables.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/refresh-token.html b/api/refresh-token.html index 4cbf8573b7..e5d6a0bafc 100644 --- a/api/refresh-token.html +++ b/api/refresh-token.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/reset-password.html b/api/reset-password.html index bff019d0b4..62f00829d8 100644 --- a/api/reset-password.html +++ b/api/reset-password.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/retrieve-vertices-order.html b/api/retrieve-vertices-order.html index b26ddbf126..378322a065 100644 --- a/api/retrieve-vertices-order.html +++ b/api/retrieve-vertices-order.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/save-store-api-key.html b/api/save-store-api-key.html index d0b293e08c..bd3bcf34bd 100644 --- a/api/save-store-api-key.html +++ b/api/save-store-api-key.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/share-component.html b/api/share-component.html index 2e55a30a71..058806be3a 100644 --- a/api/share-component.html +++ b/api/share-component.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/simplified-run-flow.html b/api/simplified-run-flow.html index a0acf76c70..c3c4f68366 100644 --- a/api/simplified-run-flow.html +++ b/api/simplified-run-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/stream-logs.html b/api/stream-logs.html index b0fe01e027..b62f7a517c 100644 --- a/api/stream-logs.html +++ b/api/stream-logs.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/update-flow.html b/api/update-flow.html index b684809a17..a90189aa64 100644 --- a/api/update-flow.html +++ b/api/update-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/update-folder.html b/api/update-folder.html index 83c5dc5aa3..e67e41ae89 100644 --- a/api/update-folder.html +++ b/api/update-folder.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/update-message.html b/api/update-message.html index 67591bf9f6..5bc6b3bec8 100644 --- a/api/update-message.html +++ b/api/update-message.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/update-session-id.html b/api/update-session-id.html index d7df6bd406..d930fd0acb 100644 --- a/api/update-session-id.html +++ b/api/update-session-id.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/update-shared-component.html b/api/update-shared-component.html index 5a79d77631..64a217eaea 100644 --- a/api/update-shared-component.html +++ b/api/update-shared-component.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/update-variable.html b/api/update-variable.html index dabcf2bebf..70f0f9e37e 100644 --- a/api/update-variable.html +++ b/api/update-variable.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/upload-file-1.html b/api/upload-file-1.html index ebb11a2668..910e813569 100644 --- a/api/upload-file-1.html +++ b/api/upload-file-1.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/upload-file-2.html b/api/upload-file-2.html index bf9e175445..aa43572f13 100644 --- a/api/upload-file-2.html +++ b/api/upload-file-2.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/upload-file.html b/api/upload-file.html index 32609ca615..3be0a4780a 100644 --- a/api/upload-file.html +++ b/api/upload-file.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/upload-user-file.html b/api/upload-user-file.html index d89ecbda57..1bd887e2a9 100644 --- a/api/upload-user-file.html +++ b/api/upload-user-file.html @@ -16,8 +16,8 @@ - - + + diff --git a/api/webhook-run-flow.html b/api/webhook-run-flow.html index e6405f711c..5c2a8bb953 100644 --- a/api/webhook-run-flow.html +++ b/api/webhook-run-flow.html @@ -16,8 +16,8 @@ - - + + diff --git a/assets/js/172b3cfb.9640bbc9.js b/assets/js/172b3cfb.99703724.js similarity index 66% rename from assets/js/172b3cfb.9640bbc9.js rename to assets/js/172b3cfb.99703724.js index 2766a882dd..7f966da4f0 100644 --- a/assets/js/172b3cfb.9640bbc9.js +++ b/assets/js/172b3cfb.99703724.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8929],{1975:(M,j,N)=>{N.d(j,{A:()=>D});const D="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTUzIDQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiBmaWxsPSIjOEEwNUZGIi8+CjxwYXRoIGQ9Ik0xNy41MDAxIDIxTDE4LjIwNTEgMjEuNzA1TDE5LjUwMDEgMjAuNDE1VjI2LjVIMjAuNTAwMVYyMC40MTVMMjEuNzk1MSAyMS43MDVMMjIuNTAwMSAyMUwyMC4wMDAxIDE4LjVMMTcuNTAwMSAyMVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMy43NTAxIDIzSDIzLjUwMDFWMjJIMjMuNzUwMUMyNC4zNDY4IDIyLjAyMzkgMjQuOTI4NiAyMS44MDk3IDI1LjM2NzQgMjEuNDA0N0MyNS44MDYyIDIwLjk5OTYgMjYuMDY2MiAyMC40MzY4IDI2LjA5MDEgMTkuODRDMjYuMTEzOSAxOS4yNDMzIDI1Ljg5OTggMTguNjYxNSAyNS40OTQ3IDE4LjIyMjdDMjUuMDg5NiAxNy43ODM4IDI0LjUyNjggMTcuNTIzOSAyMy45MzAxIDE3LjVIMjMuNTAwMUwyMy40NTAxIDE3LjA5QzIzLjMzOTEgMTYuMjQ4MyAyMi45MjYgMTUuNDc1NSAyMi4yODc2IDE0LjkxNTdDMjEuNjQ5MiAxNC4zNTU5IDIwLjgyOTEgMTQuMDQ3MyAxOS45ODAxIDE0LjA0NzNDMTkuMTMxIDE0LjA0NzMgMTguMzEwOSAxNC4zNTU5IDE3LjY3MjUgMTQuOTE1N0MxNy4wMzQxIDE1LjQ3NTUgMTYuNjIxIDE2LjI0ODMgMTYuNTEwMSAxNy4wOUwxNi41MDAxIDE3LjVIMTYuMDcwMUMxNS40NzMzIDE3LjUyMzkgMTQuOTEwNSAxNy43ODM4IDE0LjUwNTQgMTguMjIyN0MxNC4xMDAzIDE4LjY2MTUgMTMuODg2MiAxOS4yNDMzIDEzLjkxMDEgMTkuODRDMTMuOTMzOSAyMC40MzY4IDE0LjE5MzkgMjAuOTk5NiAxNC42MzI3IDIxLjQwNDdDMTUuMDcxNSAyMS44MDk3IDE1LjY1MzMgMjIuMDIzOSAxNi4yNTAxIDIySDE2LjUwMDFWMjNIMTYuMjUwMUMxNS40NDgzIDIyLjk5NSAxNC42NzY2IDIyLjY5MzcgMTQuMDgzNSAyMi4xNTQxQzEzLjQ5MDUgMjEuNjE0NSAxMy4xMTc4IDIwLjg3NDcgMTMuMDM3MSAyMC4wNzdDMTIuOTU2NSAxOS4yNzkyIDEzLjE3MzYgMTguNDc5OCAxMy42NDY3IDE3LjgzMjVDMTQuMTE5OCAxNy4xODUxIDE0LjgxNTUgMTYuNzM1NSAxNS42MDAxIDE2LjU3QzE1LjgxNTkgMTUuNTYzMyAxNi4zNzA1IDE0LjY2MSAxNy4xNzEyIDE0LjAxMzhDMTcuOTcxOSAxMy4zNjY1IDE4Ljk3MDQgMTMuMDEzNCAyMC4wMDAxIDEzLjAxMzRDMjEuMDI5NyAxMy4wMTM0IDIyLjAyODIgMTMuMzY2NSAyMi44Mjg5IDE0LjAxMzhDMjMuNjI5NiAxNC42NjEgMjQuMTg0MiAxNS41NjMzIDI0LjQwMDEgMTYuNTdDMjUuMTg0NiAxNi43MzU1IDI1Ljg4MDMgMTcuMTg1MSAyNi4zNTM0IDE3LjgzMjVDMjYuODI2NSAxOC40Nzk4IDI3LjA0MzYgMTkuMjc5MiAyNi45NjMgMjAuMDc3QzI2Ljg4MjMgMjAuODc0NyAyNi41MDk2IDIxLjYxNDUgMjUuOTE2NiAyMi4xNTQxQzI1LjMyMzUgMjIuNjkzNyAyNC41NTE4IDIyLjk5NSAyMy43NTAxIDIzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTM5LjA2MzIgMjVIMzUuNDM3MlYxNC45OUgzOS4wNjMyQzQxLjgyMTIgMTQuOTkgNDMuNTE1MiAxNi43ODIgNDMuNTE1MiAyMC4wMDJDNDMuNTE1MiAyMy4yMjIgNDEuODIxMiAyNSAzOS4wNjMyIDI1Wk0zNi42OTcyIDIzLjg4SDM5LjA2MzJDNDEuNjExMiAyMy44OCA0Mi4xOTkyIDIxLjk2MiA0Mi4xOTkyIDIwLjAwMkM0Mi4xOTkyIDE4LjA0MiA0MS42MTEyIDE2LjExIDM5LjA2MzIgMTYuMTFIMzYuNjk3MlYyMy44OFpNNTEuNDMwOSAyMS4xNjRDNTEuNDMwOSAyMS4zNzQgNTEuNDMwOSAyMS42MTIgNTEuNDE2OSAyMS43MjRINDUuODMwOUM0NS44NTg5IDIyLjk4NCA0Ni41NTg5IDI0LjI0NCA0OC4xNDA5IDI0LjI0NEM0OS41NDA5IDI0LjI0NCA1MC4wNzI5IDIzLjMwNiA1MC4xOTg5IDIyLjgwMkg1MS4zMzI5QzUwLjk2ODkgMjQuMTMyIDQ5Ljk2MDkgMjUuMjEgNDguMTI2OSAyNS4yMUM0NS44NzI5IDI1LjIxIDQ0LjY1NDkgMjMuNTg2IDQ0LjY1NDkgMjEuNDE2QzQ0LjY1NDkgMTkuMTM0IDQ2LjAxMjkgMTcuNjUgNDguMTI2OSAxNy42NUM1MC4yMTI5IDE3LjY1IDUxLjQzMDkgMTkuMDc4IDUxLjQzMDkgMjEuMTY0Wk00NS44MzA5IDIwLjc0NEg1MC4yNDA5QzUwLjI0MDkgMTkuNTY4IDQ5LjQwMDkgMTguNjE2IDQ4LjA3MDkgMTguNjE2QzQ2LjgzODkgMTguNjE2IDQ1LjkwMDkgMTkuNDk4IDQ1LjgzMDkgMjAuNzQ0Wk01Ni4xODk4IDE3LjY2NEM1Ny45ODE4IDE3LjY2NCA1OS40MDk4IDE5LjA3OCA1OS40MDk4IDIxLjQzQzU5LjQwOTggMjMuNzgyIDU3Ljk4MTggMjUuMTk2IDU2LjE4OTggMjUuMTk2QzU1LjA0MTggMjUuMTk2IDU0LjM2OTggMjQuNjkyIDUzLjk0OTggMjQuMDc2SDUzLjkyMThWMjcuNDc4SDUyLjgwMThWMTcuODZINTMuOTIxOFYxOC43NDJINTMuOTQ5OEM1NC4zNjk4IDE4LjE5NiA1NS4wNDE4IDE3LjY2NCA1Ni4xODk4IDE3LjY2NFpNNTYuMDc3OCAyNC4yMTZDNTcuNTQ3OCAyNC4yMTYgNTguMjMzOCAyMi44MyA1OC4yMzM4IDIxLjQzQzU4LjIzMzggMjAuMDMgNTcuNTQ3OCAxOC42NDQgNTYuMDc3OCAxOC42NDRDNTQuNzQ3OCAxOC42NDQgNTMuOTIxOCAxOS43NSA1My45MjE4IDIxLjQzQzUzLjkyMTggMjMuMTEgNTQuNzQ3OCAyNC4yMTYgNTYuMDc3OCAyNC4yMTZaTTYxLjkwOTQgMjVINjAuNzg5NFYxNC45OUg2MS45MDk0VjI1Wk02Ni43ODU1IDI1LjIxQzY0LjYwMTUgMjUuMjEgNjMuMjg1NSAyMy42NTYgNjMuMjg1NSAyMS40M0M2My4yODU1IDE5LjIwNCA2NC42MDE1IDE3LjY1IDY2Ljc4NTUgMTcuNjVDNjguOTU1NSAxNy42NSA3MC4yNzE1IDE5LjIwNCA3MC4yNzE1IDIxLjQzQzcwLjI3MTUgMjMuNjU2IDY4Ljk1NTUgMjUuMjEgNjYuNzg1NSAyNS4yMVpNNjYuNzg1NSAyNC4yM0M2OC4zODE1IDI0LjIzIDY5LjA5NTUgMjIuOTU2IDY5LjA5NTUgMjEuNDNDNjkuMDk1NSAxOS45MDQgNjguMzgxNSAxOC42MyA2Ni43ODU1IDE4LjYzQzY1LjE3NTUgMTguNjMgNjQuNDYxNSAxOS45MDQgNjQuNDYxNSAyMS40M0M2NC40NjE1IDIyLjk1NiA2NS4xNzU1IDI0LjIzIDY2Ljc4NTUgMjQuMjNaTTcyLjIwMiAyNy41MDZDNzEuOTUgMjcuNTA2IDcxLjc4MiAyNy40OTIgNzEuNDYgMjcuNDM2VjI2LjQ4NEM3MS42OTggMjYuNTEyIDcxLjgxIDI2LjUyNiA3Mi4wMiAyNi41MjZDNzIuNjA4IDI2LjUyNiA3My4yNTIgMjYuMTYyIDczLjU2IDI0LjkzTDcwLjY2MiAxNy44Nkg3MS45MjJMNzQuMTIgMjMuNTQ0SDc0LjE0OEw3Ni4yNDggMTcuODZINzcuNDUyTDc0LjU2OCAyNS4yMUM3My44NTQgMjcuMDE2IDczLjE2OCAyNy41MDYgNzIuMjAyIDI3LjUwNlpNODQuMjM3IDE3Ljg2VjE4Ljg0SDgyLjgzN1YyMy4xMzhDODIuODM3IDIzLjg5NCA4My4wMTkgMjQuMDkgODMuNjQ5IDI0LjA5QzgzLjg4NyAyNC4wOSA4My45OTkgMjQuMDc2IDg0LjIzNyAyNC4wNDhWMjVDODMuOTE1IDI1LjA1NiA4My43NDcgMjUuMDcgODMuNDk1IDI1LjA3QzgyLjQ0NSAyNS4wNyA4MS43MTcgMjQuNzA2IDgxLjcxNyAyMy4wODJWMTguODRIODAuNjY3VjE3Ljg2SDgxLjcxN1YxNS40OEg4Mi44MzdWMTcuODZIODQuMjM3Wk04OC41MDk1IDI1LjIxQzg2LjMyNTUgMjUuMjEgODUuMDA5NSAyMy42NTYgODUuMDA5NSAyMS40M0M4NS4wMDk1IDE5LjIwNCA4Ni4zMjU1IDE3LjY1IDg4LjUwOTUgMTcuNjVDOTAuNjc5NSAxNy42NSA5MS45OTU1IDE5LjIwNCA5MS45OTU1IDIxLjQzQzkxLjk5NTUgMjMuNjU2IDkwLjY3OTUgMjUuMjEgODguNTA5NSAyNS4yMVpNODguNTA5NSAyNC4yM0M5MC4xMDU1IDI0LjIzIDkwLjgxOTUgMjIuOTU2IDkwLjgxOTUgMjEuNDNDOTAuODE5NSAxOS45MDQgOTAuMTA1NSAxOC42MyA4OC41MDk1IDE4LjYzQzg2Ljg5OTUgMTguNjMgODYuMTg1NSAxOS45MDQgODYuMTg1NSAyMS40M0M4Ni4xODU1IDIyLjk1NiA4Ni44OTk1IDI0LjIzIDg4LjUwOTUgMjQuMjNaTTk3Ljk4IDI1SDk2LjcyVjE0Ljk5SDEwMC43MzhDMTAyLjkzNiAxNC45OSAxMDQuMDg0IDE2LjAyNiAxMDQuMDg0IDE3Ljg3NEMxMDQuMDg0IDE5LjEyIDEwMy4zMTQgMjAuMDcyIDEwMi4yNjQgMjAuMzI0VjIwLjM1MkMxMDQuNTE4IDIwLjc4NiAxMDMuNjkyIDI0Ljc0OCAxMDQuMjI0IDI0LjkxNlYyNUgxMDIuODY2QzEwMi40MzIgMjQuNTggMTAzLjM4NCAyMC45NTQgMTAwLjg1IDIwLjk1NEg5Ny45OFYyNVpNOTcuOTggMTkuODM0SDEwMC40NDRDMTAxLjk3IDE5LjgzNCAxMDIuODI0IDE5LjE0OCAxMDIuODI0IDE3LjkwMkMxMDIuODI0IDE2Ljc1NCAxMDIuMTggMTYuMTEgMTAwLjQ4NiAxNi4xMUg5Ny45OFYxOS44MzRaTTExMS45NjIgMjEuMTY0QzExMS45NjIgMjEuMzc0IDExMS45NjIgMjEuNjEyIDExMS45NDggMjEuNzI0SDEwNi4zNjJDMTA2LjM5IDIyLjk4NCAxMDcuMDkgMjQuMjQ0IDEwOC42NzIgMjQuMjQ0QzExMC4wNzIgMjQuMjQ0IDExMC42MDQgMjMuMzA2IDExMC43MyAyMi44MDJIMTExLjg2NEMxMTEuNSAyNC4xMzIgMTEwLjQ5MiAyNS4yMSAxMDguNjU4IDI1LjIxQzEwNi40MDQgMjUuMjEgMTA1LjE4NiAyMy41ODYgMTA1LjE4NiAyMS40MTZDMTA1LjE4NiAxOS4xMzQgMTA2LjU0NCAxNy42NSAxMDguNjU4IDE3LjY1QzExMC43NDQgMTcuNjUgMTExLjk2MiAxOS4wNzggMTExLjk2MiAyMS4xNjRaTTEwNi4zNjIgMjAuNzQ0SDExMC43NzJDMTEwLjc3MiAxOS41NjggMTA5LjkzMiAxOC42MTYgMTA4LjYwMiAxOC42MTZDMTA3LjM3IDE4LjYxNiAxMDYuNDMyIDE5LjQ5OCAxMDYuMzYyIDIwLjc0NFpNMTE2LjgzMyAxNy42NjRDMTE4LjEzNSAxNy42NjQgMTE5LjIyNyAxOC4zNzggMTE5LjIyNyAyMC4wMTZWMjVIMTE4LjEwN1YyMC4yOTZDMTE4LjEwNyAxOS4zNzIgMTE3LjY3MyAxOC42NDQgMTE2LjU1MyAxOC42NDRDMTE1LjI5MyAxOC42NDQgMTE0LjQ1MyAxOS40NDIgMTE0LjQ1MyAyMC41NDhWMjVIMTEzLjMzM1YxNy44NkgxMTQuNDUzVjE4LjcxNEgxMTQuNDgxQzExNC44NTkgMTguMjEgMTE1LjYxNSAxNy42NjQgMTE2LjgzMyAxNy42NjRaTTEyNi4wNDcgMTguNzg0VjE0Ljk5SDEyNy4xNjdWMjVIMTI2LjA0N1YyNC4xMThIMTI2LjAxOUMxMjUuNTk5IDI0LjY2NCAxMjQuOTI3IDI1LjE5NiAxMjMuNzc5IDI1LjE5NkMxMjEuOTg3IDI1LjE5NiAxMjAuNTU5IDIzLjc4MiAxMjAuNTU5IDIxLjQzQzEyMC41NTkgMTkuMDc4IDEyMS45ODcgMTcuNjY0IDEyMy43NzkgMTcuNjY0QzEyNC45MjcgMTcuNjY0IDEyNS41OTkgMTguMTY4IDEyNi4wMTkgMTguNzg0SDEyNi4wNDdaTTEyMy44OTEgMjQuMjE2QzEyNS4yMjEgMjQuMjE2IDEyNi4wNDcgMjMuMTEgMTI2LjA0NyAyMS40M0MxMjYuMDQ3IDE5Ljc1IDEyNS4yMjEgMTguNjQ0IDEyMy44OTEgMTguNjQ0QzEyMi40MjEgMTguNjQ0IDEyMS43MzUgMjAuMDMgMTIxLjczNSAyMS40M0MxMjEuNzM1IDIyLjgzIDEyMi40MjEgMjQuMjE2IDEyMy44OTEgMjQuMjE2Wk0xMzUuMzIzIDIxLjE2NEMxMzUuMzIzIDIxLjM3NCAxMzUuMzIzIDIxLjYxMiAxMzUuMzA5IDIxLjcyNEgxMjkuNzIzQzEyOS43NTEgMjIuOTg0IDEzMC40NTEgMjQuMjQ0IDEzMi4wMzMgMjQuMjQ0QzEzMy40MzMgMjQuMjQ0IDEzMy45NjUgMjMuMzA2IDEzNC4wOTEgMjIuODAySDEzNS4yMjVDMTM0Ljg2MSAyNC4xMzIgMTMzLjg1MyAyNS4yMSAxMzIuMDE5IDI1LjIxQzEyOS43NjUgMjUuMjEgMTI4LjU0NyAyMy41ODYgMTI4LjU0NyAyMS40MTZDMTI4LjU0NyAxOS4xMzQgMTI5LjkwNSAxNy42NSAxMzIuMDE5IDE3LjY1QzEzNC4xMDUgMTcuNjUgMTM1LjMyMyAxOS4wNzggMTM1LjMyMyAyMS4xNjRaTTEyOS43MjMgMjAuNzQ0SDEzNC4xMzNDMTM0LjEzMyAxOS41NjggMTMzLjI5MyAxOC42MTYgMTMxLjk2MyAxOC42MTZDMTMwLjczMSAxOC42MTYgMTI5Ljc5MyAxOS40OTggMTI5LjcyMyAyMC43NDRaTTEzOS44MTYgMTcuNjY0QzE0MC4wODIgMTcuNjY0IDE0MC4yNzggMTcuNjc4IDE0MC40NzQgMTcuNzA2VjE4LjgyNkMxNDAuMzA2IDE4Ljc5OCAxNDAuMTggMTguNzg0IDE0MC4wMTIgMTguNzg0QzEzOC42OTYgMTguNzg0IDEzNy44MTQgMTkuODIgMTM3LjgxNCAyMS4xOTJWMjVIMTM2LjY5NFYxNy44NkgxMzcuODE0VjE5LjI3NEgxMzcuODQyQzEzOC4yMiAxOC4zMzYgMTM4Ljc5NCAxNy42NjQgMTM5LjgxNiAxNy42NjRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K"},18849:(M,j,N)=>{N.r(j),N.d(j,{assets:()=>e,contentTitle:()=>y,default:()=>x,frontMatter:()=>T,metadata:()=>D,toc:()=>u});const D=JSON.parse('{"id":"Deployment/deployment-render","title":"Render","description":"Deploy on Render","source":"@site/docs/Deployment/deployment-render.md","sourceDirName":"Deployment","slug":"/deployment-render","permalink":"/deployment-render","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Render","slug":"/deployment-render"},"sidebar":"docs","previous":{"title":"Railway","permalink":"/deployment-railway"},"next":{"title":"API examples","permalink":"/api-reference-api-examples"}}');var I=N(74848),g=N(28453);const T={title:"Render",slug:"/deployment-render"},y=void 0,e={},u=[{value:"Deploy on Render",id:"20a959b7047e44e490cc129fd21895c0",level:2}];function A(M){const j={a:"a",code:"code",h2:"h2",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,g.R)(),...M.components};return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(j.h2,{id:"20a959b7047e44e490cc129fd21895c0",children:"Deploy on Render"}),"\n",(0,I.jsx)(j.hr,{}),"\n",(0,I.jsxs)(j.p,{children:[(0,I.jsx)(j.a,{href:"http://render.com/",children:"Render.com"})," is a unified cloud platform designed to make deploying web applications, APIs, and static sites easy. It provides a streamlined experience with powerful features like automatic SSL, managed databases, and auto-deploy from Git, making it a popular choice for developers looking to simplify their deployment workflows."]}),"\n",(0,I.jsx)(j.p,{children:"Deploying Langflow to Render is a straightforward process that can be completed in just a few steps:"}),"\n",(0,I.jsxs)(j.ol,{children:["\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsxs)(j.p,{children:[(0,I.jsx)(j.strong,{children:"Click the Button Below"}),": Start by clicking the deployment button provided below. This will redirect you to the Render platform."]}),"\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:[(0,I.jsx)(j.strong,{children:"Select the Blueprint Configuration"}),": Once on the Render platform, you will be prompted to provide a blueprint name and to select the branch for your ",(0,I.jsx)(j.code,{children:"render.yaml"})," file in Langflow. This configuration file includes all the necessary settings and resources to deploy Langflow in Render. The default is ",(0,I.jsx)(j.code,{children:"main"}),"."]}),"\n"]}),"\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsxs)(j.p,{children:["The ",(0,I.jsx)(j.code,{children:"render.yaml"})," file specifies a ",(0,I.jsx)(j.code,{children:"standard"})," Render instance, because Langflow requires at least 2 GB of RAM to run. This may require a credit card to sign up. Review the pricing details on the Render platform to understand any costs involved before proceeding. If you need to change your plan later, from the Render dashboard, go to ",(0,I.jsx)(j.strong,{children:"Settings"})," > ",(0,I.jsx)(j.strong,{children:"Instance Type"}),"."]}),"\n"]}),"\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsxs)(j.p,{children:["Click ",(0,I.jsx)(j.strong,{children:"Deploy Blueprint"})," to deploy Langflow. Render will handle the rest, including setting up the database, deploying the Langflow instance, and starting the application."]}),"\n"]}),"\n"]}),"\n",(0,I.jsx)(j.p,{children:"By following these steps, your Langflow instance will be successfully deployed on Render."})]})}function x(M={}){const{wrapper:j}={...(0,g.R)(),...M.components};return j?(0,I.jsx)(j,{...M,children:(0,I.jsx)(A,{...M})}):A(M)}},28453:(M,j,N)=>{N.d(j,{R:()=>T,x:()=>y});var D=N(96540);const I={},g=D.createContext(I);function T(M){const j=D.useContext(g);return D.useMemo((function(){return"function"==typeof M?M(j):{...j,...M}}),[j,M])}function y(M){let j;return j=M.disableParentContext?"function"==typeof M.components?M.components(I):M.components||I:T(M.components),D.createElement(g.Provider,{value:j},M.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8929],{1975:(M,j,N)=>{N.d(j,{A:()=>D});const D="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTUzIDQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTUzIiBoZWlnaHQ9IjQwIiBmaWxsPSIjOEEwNUZGIi8+CjxwYXRoIGQ9Ik0xNy41MDAxIDIxTDE4LjIwNTEgMjEuNzA1TDE5LjUwMDEgMjAuNDE1VjI2LjVIMjAuNTAwMVYyMC40MTVMMjEuNzk1MSAyMS43MDVMMjIuNTAwMSAyMUwyMC4wMDAxIDE4LjVMMTcuNTAwMSAyMVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMy43NTAxIDIzSDIzLjUwMDFWMjJIMjMuNzUwMUMyNC4zNDY4IDIyLjAyMzkgMjQuOTI4NiAyMS44MDk3IDI1LjM2NzQgMjEuNDA0N0MyNS44MDYyIDIwLjk5OTYgMjYuMDY2MiAyMC40MzY4IDI2LjA5MDEgMTkuODRDMjYuMTEzOSAxOS4yNDMzIDI1Ljg5OTggMTguNjYxNSAyNS40OTQ3IDE4LjIyMjdDMjUuMDg5NiAxNy43ODM4IDI0LjUyNjggMTcuNTIzOSAyMy45MzAxIDE3LjVIMjMuNTAwMUwyMy40NTAxIDE3LjA5QzIzLjMzOTEgMTYuMjQ4MyAyMi45MjYgMTUuNDc1NSAyMi4yODc2IDE0LjkxNTdDMjEuNjQ5MiAxNC4zNTU5IDIwLjgyOTEgMTQuMDQ3MyAxOS45ODAxIDE0LjA0NzNDMTkuMTMxIDE0LjA0NzMgMTguMzEwOSAxNC4zNTU5IDE3LjY3MjUgMTQuOTE1N0MxNy4wMzQxIDE1LjQ3NTUgMTYuNjIxIDE2LjI0ODMgMTYuNTEwMSAxNy4wOUwxNi41MDAxIDE3LjVIMTYuMDcwMUMxNS40NzMzIDE3LjUyMzkgMTQuOTEwNSAxNy43ODM4IDE0LjUwNTQgMTguMjIyN0MxNC4xMDAzIDE4LjY2MTUgMTMuODg2MiAxOS4yNDMzIDEzLjkxMDEgMTkuODRDMTMuOTMzOSAyMC40MzY4IDE0LjE5MzkgMjAuOTk5NiAxNC42MzI3IDIxLjQwNDdDMTUuMDcxNSAyMS44MDk3IDE1LjY1MzMgMjIuMDIzOSAxNi4yNTAxIDIySDE2LjUwMDFWMjNIMTYuMjUwMUMxNS40NDgzIDIyLjk5NSAxNC42NzY2IDIyLjY5MzcgMTQuMDgzNSAyMi4xNTQxQzEzLjQ5MDUgMjEuNjE0NSAxMy4xMTc4IDIwLjg3NDcgMTMuMDM3MSAyMC4wNzdDMTIuOTU2NSAxOS4yNzkyIDEzLjE3MzYgMTguNDc5OCAxMy42NDY3IDE3LjgzMjVDMTQuMTE5OCAxNy4xODUxIDE0LjgxNTUgMTYuNzM1NSAxNS42MDAxIDE2LjU3QzE1LjgxNTkgMTUuNTYzMyAxNi4zNzA1IDE0LjY2MSAxNy4xNzEyIDE0LjAxMzhDMTcuOTcxOSAxMy4zNjY1IDE4Ljk3MDQgMTMuMDEzNCAyMC4wMDAxIDEzLjAxMzRDMjEuMDI5NyAxMy4wMTM0IDIyLjAyODIgMTMuMzY2NSAyMi44Mjg5IDE0LjAxMzhDMjMuNjI5NiAxNC42NjEgMjQuMTg0MiAxNS41NjMzIDI0LjQwMDEgMTYuNTdDMjUuMTg0NiAxNi43MzU1IDI1Ljg4MDMgMTcuMTg1MSAyNi4zNTM0IDE3LjgzMjVDMjYuODI2NSAxOC40Nzk4IDI3LjA0MzYgMTkuMjc5MiAyNi45NjMgMjAuMDc3QzI2Ljg4MjMgMjAuODc0NyAyNi41MDk2IDIxLjYxNDUgMjUuOTE2NiAyMi4xNTQxQzI1LjMyMzUgMjIuNjkzNyAyNC41NTE4IDIyLjk5NSAyMy43NTAxIDIzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTM5LjA2MzIgMjVIMzUuNDM3MlYxNC45OUgzOS4wNjMyQzQxLjgyMTIgMTQuOTkgNDMuNTE1MiAxNi43ODIgNDMuNTE1MiAyMC4wMDJDNDMuNTE1MiAyMy4yMjIgNDEuODIxMiAyNSAzOS4wNjMyIDI1Wk0zNi42OTcyIDIzLjg4SDM5LjA2MzJDNDEuNjExMiAyMy44OCA0Mi4xOTkyIDIxLjk2MiA0Mi4xOTkyIDIwLjAwMkM0Mi4xOTkyIDE4LjA0MiA0MS42MTEyIDE2LjExIDM5LjA2MzIgMTYuMTFIMzYuNjk3MlYyMy44OFpNNTEuNDMwOSAyMS4xNjRDNTEuNDMwOSAyMS4zNzQgNTEuNDMwOSAyMS42MTIgNTEuNDE2OSAyMS43MjRINDUuODMwOUM0NS44NTg5IDIyLjk4NCA0Ni41NTg5IDI0LjI0NCA0OC4xNDA5IDI0LjI0NEM0OS41NDA5IDI0LjI0NCA1MC4wNzI5IDIzLjMwNiA1MC4xOTg5IDIyLjgwMkg1MS4zMzI5QzUwLjk2ODkgMjQuMTMyIDQ5Ljk2MDkgMjUuMjEgNDguMTI2OSAyNS4yMUM0NS44NzI5IDI1LjIxIDQ0LjY1NDkgMjMuNTg2IDQ0LjY1NDkgMjEuNDE2QzQ0LjY1NDkgMTkuMTM0IDQ2LjAxMjkgMTcuNjUgNDguMTI2OSAxNy42NUM1MC4yMTI5IDE3LjY1IDUxLjQzMDkgMTkuMDc4IDUxLjQzMDkgMjEuMTY0Wk00NS44MzA5IDIwLjc0NEg1MC4yNDA5QzUwLjI0MDkgMTkuNTY4IDQ5LjQwMDkgMTguNjE2IDQ4LjA3MDkgMTguNjE2QzQ2LjgzODkgMTguNjE2IDQ1LjkwMDkgMTkuNDk4IDQ1LjgzMDkgMjAuNzQ0Wk01Ni4xODk4IDE3LjY2NEM1Ny45ODE4IDE3LjY2NCA1OS40MDk4IDE5LjA3OCA1OS40MDk4IDIxLjQzQzU5LjQwOTggMjMuNzgyIDU3Ljk4MTggMjUuMTk2IDU2LjE4OTggMjUuMTk2QzU1LjA0MTggMjUuMTk2IDU0LjM2OTggMjQuNjkyIDUzLjk0OTggMjQuMDc2SDUzLjkyMThWMjcuNDc4SDUyLjgwMThWMTcuODZINTMuOTIxOFYxOC43NDJINTMuOTQ5OEM1NC4zNjk4IDE4LjE5NiA1NS4wNDE4IDE3LjY2NCA1Ni4xODk4IDE3LjY2NFpNNTYuMDc3OCAyNC4yMTZDNTcuNTQ3OCAyNC4yMTYgNTguMjMzOCAyMi44MyA1OC4yMzM4IDIxLjQzQzU4LjIzMzggMjAuMDMgNTcuNTQ3OCAxOC42NDQgNTYuMDc3OCAxOC42NDRDNTQuNzQ3OCAxOC42NDQgNTMuOTIxOCAxOS43NSA1My45MjE4IDIxLjQzQzUzLjkyMTggMjMuMTEgNTQuNzQ3OCAyNC4yMTYgNTYuMDc3OCAyNC4yMTZaTTYxLjkwOTQgMjVINjAuNzg5NFYxNC45OUg2MS45MDk0VjI1Wk02Ni43ODU1IDI1LjIxQzY0LjYwMTUgMjUuMjEgNjMuMjg1NSAyMy42NTYgNjMuMjg1NSAyMS40M0M2My4yODU1IDE5LjIwNCA2NC42MDE1IDE3LjY1IDY2Ljc4NTUgMTcuNjVDNjguOTU1NSAxNy42NSA3MC4yNzE1IDE5LjIwNCA3MC4yNzE1IDIxLjQzQzcwLjI3MTUgMjMuNjU2IDY4Ljk1NTUgMjUuMjEgNjYuNzg1NSAyNS4yMVpNNjYuNzg1NSAyNC4yM0M2OC4zODE1IDI0LjIzIDY5LjA5NTUgMjIuOTU2IDY5LjA5NTUgMjEuNDNDNjkuMDk1NSAxOS45MDQgNjguMzgxNSAxOC42MyA2Ni43ODU1IDE4LjYzQzY1LjE3NTUgMTguNjMgNjQuNDYxNSAxOS45MDQgNjQuNDYxNSAyMS40M0M2NC40NjE1IDIyLjk1NiA2NS4xNzU1IDI0LjIzIDY2Ljc4NTUgMjQuMjNaTTcyLjIwMiAyNy41MDZDNzEuOTUgMjcuNTA2IDcxLjc4MiAyNy40OTIgNzEuNDYgMjcuNDM2VjI2LjQ4NEM3MS42OTggMjYuNTEyIDcxLjgxIDI2LjUyNiA3Mi4wMiAyNi41MjZDNzIuNjA4IDI2LjUyNiA3My4yNTIgMjYuMTYyIDczLjU2IDI0LjkzTDcwLjY2MiAxNy44Nkg3MS45MjJMNzQuMTIgMjMuNTQ0SDc0LjE0OEw3Ni4yNDggMTcuODZINzcuNDUyTDc0LjU2OCAyNS4yMUM3My44NTQgMjcuMDE2IDczLjE2OCAyNy41MDYgNzIuMjAyIDI3LjUwNlpNODQuMjM3IDE3Ljg2VjE4Ljg0SDgyLjgzN1YyMy4xMzhDODIuODM3IDIzLjg5NCA4My4wMTkgMjQuMDkgODMuNjQ5IDI0LjA5QzgzLjg4NyAyNC4wOSA4My45OTkgMjQuMDc2IDg0LjIzNyAyNC4wNDhWMjVDODMuOTE1IDI1LjA1NiA4My43NDcgMjUuMDcgODMuNDk1IDI1LjA3QzgyLjQ0NSAyNS4wNyA4MS43MTcgMjQuNzA2IDgxLjcxNyAyMy4wODJWMTguODRIODAuNjY3VjE3Ljg2SDgxLjcxN1YxNS40OEg4Mi44MzdWMTcuODZIODQuMjM3Wk04OC41MDk1IDI1LjIxQzg2LjMyNTUgMjUuMjEgODUuMDA5NSAyMy42NTYgODUuMDA5NSAyMS40M0M4NS4wMDk1IDE5LjIwNCA4Ni4zMjU1IDE3LjY1IDg4LjUwOTUgMTcuNjVDOTAuNjc5NSAxNy42NSA5MS45OTU1IDE5LjIwNCA5MS45OTU1IDIxLjQzQzkxLjk5NTUgMjMuNjU2IDkwLjY3OTUgMjUuMjEgODguNTA5NSAyNS4yMVpNODguNTA5NSAyNC4yM0M5MC4xMDU1IDI0LjIzIDkwLjgxOTUgMjIuOTU2IDkwLjgxOTUgMjEuNDNDOTAuODE5NSAxOS45MDQgOTAuMTA1NSAxOC42MyA4OC41MDk1IDE4LjYzQzg2Ljg5OTUgMTguNjMgODYuMTg1NSAxOS45MDQgODYuMTg1NSAyMS40M0M4Ni4xODU1IDIyLjk1NiA4Ni44OTk1IDI0LjIzIDg4LjUwOTUgMjQuMjNaTTk3Ljk4IDI1SDk2LjcyVjE0Ljk5SDEwMC43MzhDMTAyLjkzNiAxNC45OSAxMDQuMDg0IDE2LjAyNiAxMDQuMDg0IDE3Ljg3NEMxMDQuMDg0IDE5LjEyIDEwMy4zMTQgMjAuMDcyIDEwMi4yNjQgMjAuMzI0VjIwLjM1MkMxMDQuNTE4IDIwLjc4NiAxMDMuNjkyIDI0Ljc0OCAxMDQuMjI0IDI0LjkxNlYyNUgxMDIuODY2QzEwMi40MzIgMjQuNTggMTAzLjM4NCAyMC45NTQgMTAwLjg1IDIwLjk1NEg5Ny45OFYyNVpNOTcuOTggMTkuODM0SDEwMC40NDRDMTAxLjk3IDE5LjgzNCAxMDIuODI0IDE5LjE0OCAxMDIuODI0IDE3LjkwMkMxMDIuODI0IDE2Ljc1NCAxMDIuMTggMTYuMTEgMTAwLjQ4NiAxNi4xMUg5Ny45OFYxOS44MzRaTTExMS45NjIgMjEuMTY0QzExMS45NjIgMjEuMzc0IDExMS45NjIgMjEuNjEyIDExMS45NDggMjEuNzI0SDEwNi4zNjJDMTA2LjM5IDIyLjk4NCAxMDcuMDkgMjQuMjQ0IDEwOC42NzIgMjQuMjQ0QzExMC4wNzIgMjQuMjQ0IDExMC42MDQgMjMuMzA2IDExMC43MyAyMi44MDJIMTExLjg2NEMxMTEuNSAyNC4xMzIgMTEwLjQ5MiAyNS4yMSAxMDguNjU4IDI1LjIxQzEwNi40MDQgMjUuMjEgMTA1LjE4NiAyMy41ODYgMTA1LjE4NiAyMS40MTZDMTA1LjE4NiAxOS4xMzQgMTA2LjU0NCAxNy42NSAxMDguNjU4IDE3LjY1QzExMC43NDQgMTcuNjUgMTExLjk2MiAxOS4wNzggMTExLjk2MiAyMS4xNjRaTTEwNi4zNjIgMjAuNzQ0SDExMC43NzJDMTEwLjc3MiAxOS41NjggMTA5LjkzMiAxOC42MTYgMTA4LjYwMiAxOC42MTZDMTA3LjM3IDE4LjYxNiAxMDYuNDMyIDE5LjQ5OCAxMDYuMzYyIDIwLjc0NFpNMTE2LjgzMyAxNy42NjRDMTE4LjEzNSAxNy42NjQgMTE5LjIyNyAxOC4zNzggMTE5LjIyNyAyMC4wMTZWMjVIMTE4LjEwN1YyMC4yOTZDMTE4LjEwNyAxOS4zNzIgMTE3LjY3MyAxOC42NDQgMTE2LjU1MyAxOC42NDRDMTE1LjI5MyAxOC42NDQgMTE0LjQ1MyAxOS40NDIgMTE0LjQ1MyAyMC41NDhWMjVIMTEzLjMzM1YxNy44NkgxMTQuNDUzVjE4LjcxNEgxMTQuNDgxQzExNC44NTkgMTguMjEgMTE1LjYxNSAxNy42NjQgMTE2LjgzMyAxNy42NjRaTTEyNi4wNDcgMTguNzg0VjE0Ljk5SDEyNy4xNjdWMjVIMTI2LjA0N1YyNC4xMThIMTI2LjAxOUMxMjUuNTk5IDI0LjY2NCAxMjQuOTI3IDI1LjE5NiAxMjMuNzc5IDI1LjE5NkMxMjEuOTg3IDI1LjE5NiAxMjAuNTU5IDIzLjc4MiAxMjAuNTU5IDIxLjQzQzEyMC41NTkgMTkuMDc4IDEyMS45ODcgMTcuNjY0IDEyMy43NzkgMTcuNjY0QzEyNC45MjcgMTcuNjY0IDEyNS41OTkgMTguMTY4IDEyNi4wMTkgMTguNzg0SDEyNi4wNDdaTTEyMy44OTEgMjQuMjE2QzEyNS4yMjEgMjQuMjE2IDEyNi4wNDcgMjMuMTEgMTI2LjA0NyAyMS40M0MxMjYuMDQ3IDE5Ljc1IDEyNS4yMjEgMTguNjQ0IDEyMy44OTEgMTguNjQ0QzEyMi40MjEgMTguNjQ0IDEyMS43MzUgMjAuMDMgMTIxLjczNSAyMS40M0MxMjEuNzM1IDIyLjgzIDEyMi40MjEgMjQuMjE2IDEyMy44OTEgMjQuMjE2Wk0xMzUuMzIzIDIxLjE2NEMxMzUuMzIzIDIxLjM3NCAxMzUuMzIzIDIxLjYxMiAxMzUuMzA5IDIxLjcyNEgxMjkuNzIzQzEyOS43NTEgMjIuOTg0IDEzMC40NTEgMjQuMjQ0IDEzMi4wMzMgMjQuMjQ0QzEzMy40MzMgMjQuMjQ0IDEzMy45NjUgMjMuMzA2IDEzNC4wOTEgMjIuODAySDEzNS4yMjVDMTM0Ljg2MSAyNC4xMzIgMTMzLjg1MyAyNS4yMSAxMzIuMDE5IDI1LjIxQzEyOS43NjUgMjUuMjEgMTI4LjU0NyAyMy41ODYgMTI4LjU0NyAyMS40MTZDMTI4LjU0NyAxOS4xMzQgMTI5LjkwNSAxNy42NSAxMzIuMDE5IDE3LjY1QzEzNC4xMDUgMTcuNjUgMTM1LjMyMyAxOS4wNzggMTM1LjMyMyAyMS4xNjRaTTEyOS43MjMgMjAuNzQ0SDEzNC4xMzNDMTM0LjEzMyAxOS41NjggMTMzLjI5MyAxOC42MTYgMTMxLjk2MyAxOC42MTZDMTMwLjczMSAxOC42MTYgMTI5Ljc5MyAxOS40OTggMTI5LjcyMyAyMC43NDRaTTEzOS44MTYgMTcuNjY0QzE0MC4wODIgMTcuNjY0IDE0MC4yNzggMTcuNjc4IDE0MC40NzQgMTcuNzA2VjE4LjgyNkMxNDAuMzA2IDE4Ljc5OCAxNDAuMTggMTguNzg0IDE0MC4wMTIgMTguNzg0QzEzOC42OTYgMTguNzg0IDEzNy44MTQgMTkuODIgMTM3LjgxNCAyMS4xOTJWMjVIMTM2LjY5NFYxNy44NkgxMzcuODE0VjE5LjI3NEgxMzcuODQyQzEzOC4yMiAxOC4zMzYgMTM4Ljc5NCAxNy42NjQgMTM5LjgxNiAxNy42NjRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K"},18849:(M,j,N)=>{N.r(j),N.d(j,{assets:()=>u,contentTitle:()=>y,default:()=>E,frontMatter:()=>T,metadata:()=>D,toc:()=>A});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.md","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":"API examples","permalink":"/api-reference-api-examples"}}');var I=N(74848),g=N(28453);const T={title:"Deploy Langflow on Render",slug:"/deployment-render"},y=void 0,u={},A=[];function x(M){const j={a:"a",admonition:"admonition",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.jsx)(j.admonition,{type:"note",children:(0,I.jsxs)(j.p,{children:["Langflow requires at least 2 GB of RAM to run, so it uses a ",(0,I.jsx)(j.strong,{children:"standard"})," Render instance. This may require a credit card. Review ",(0,I.jsx)(j.a,{href:"https://render.com/pricing",children:"Render's pricing"})," before proceeding."]})}),"\n",(0,I.jsxs)(j.ol,{children:["\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsx)(j.p,{children:"Click the following button to go to 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, and then select the branch for your ",(0,I.jsx)(j.code,{children:"render.yaml"})," file."]}),"\n"]}),"\n",(0,I.jsxs)(j.li,{children:["\n",(0,I.jsxs)(j.p,{children:["Click ",(0,I.jsx)(j.strong,{children:"Deploy Blueprint"}),"."]}),"\n"]}),"\n"]}),"\n",(0,I.jsx)(j.p,{children:"Wait for the deployment to complete."}),"\n",(0,I.jsx)(j.p,{children:"Your Langflow instance is now ready to use."})]})}function E(M={}){const{wrapper:j}={...(0,g.R)(),...M.components};return j?(0,I.jsx)(j,{...M,children:(0,I.jsx)(x,{...M})}):x(M)}},28453:(M,j,N)=>{N.d(j,{R:()=>T,x:()=>y});var D=N(96540);const I={},g=D.createContext(I);function T(M){const j=D.useContext(g);return D.useMemo((function(){return"function"==typeof M?M(j):{...j,...M}}),[j,M])}function y(M){let j;return j=M.disableParentContext?"function"==typeof M.components?M.components(I):M.components||I:T(M.components),D.createElement(g.Provider,{value:j},M.children)}}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.18fd1848.js b/assets/js/22dd74f7.18fd1848.js deleted file mode 100644 index 7714f6f137..0000000000 --- a/assets/js/22dd74f7.18fd1848.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":"link","label":"Welcome to Langflow","href":"/","docId":"Get-Started/welcome-to-langflow","unlisted":false},{"type":"category","label":"Get started","items":[{"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}],"collapsed":true,"collapsible":true},{"type":"category","label":"Starter projects","items":[{"type":"link","label":"Basic prompting","href":"/starter-projects-basic-prompting","docId":"Starter-Projects/starter-projects-basic-prompting","unlisted":false},{"type":"link","label":"Vector store RAG","href":"/starter-projects-vector-store-rag","docId":"Starter-Projects/starter-projects-vector-store-rag","unlisted":false},{"type":"link","label":"Simple agent","href":"/starter-projects-simple-agent","docId":"Starter-Projects/starter-projects-simple-agent","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Blog writer","href":"/tutorials-blog-writer","docId":"Tutorials/tutorials-blog-writer","unlisted":false},{"type":"link","label":"Document QA","href":"/tutorials-document-qa","docId":"Tutorials/tutorials-document-qa","unlisted":false},{"type":"link","label":"Memory chatbot","href":"/tutorials-memory-chatbot","docId":"Tutorials/tutorials-memory-chatbot","unlisted":false},{"type":"link","label":"Math agent","href":"/tutorials-math-agent","docId":"Tutorials/tutorials-math-agent","unlisted":false},{"type":"link","label":"Sequential tasks agent","href":"/tutorials-sequential-agent","docId":"Tutorials/tutorials-sequential-agent","unlisted":false},{"type":"link","label":"Travel planning agent","href":"/tutorials-travel-planning-agent","docId":"Tutorials/tutorials-travel-planning-agent","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Langflow overview","href":"/concepts-overview","docId":"Concepts/concepts-overview","unlisted":false},{"type":"link","label":"Playground","href":"/concepts-playground","docId":"Concepts/concepts-playground","unlisted":false},{"type":"link","label":"Components","href":"/concepts-components","docId":"Concepts/concepts-components","unlisted":false},{"type":"link","label":"Flows","href":"/Concepts/concepts-flows","docId":"Concepts/concepts-flows","unlisted":false},{"type":"link","label":"Langflow objects","href":"/concepts-objects","docId":"Concepts/concepts-objects","unlisted":false},{"type":"link","label":"API pane","href":"/concepts-api","docId":"Concepts/concepts-api","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Components","items":[{"type":"link","label":"Agents","href":"/components-agents","docId":"Components/components-agents","unlisted":false},{"type":"link","label":"Create custom Python components","href":"/components-custom-components","docId":"Components/components-custom-components","unlisted":false},{"type":"link","label":"Data","href":"/components-data","docId":"Components/components-data","unlisted":false},{"type":"link","label":"Embeddings","href":"/components-embedding-models","docId":"Components/components-embedding-models","unlisted":false},{"type":"link","label":"Helpers","href":"/components-helpers","docId":"Components/components-helpers","unlisted":false},{"type":"link","label":"Inputs and outputs","href":"/components-io","docId":"Components/components-io","unlisted":false},{"type":"link","label":"Loaders","href":"/components-loaders","docId":"Components/components-loaders","unlisted":false},{"type":"link","label":"Logic","href":"/components-logic","docId":"Components/components-logic","unlisted":false},{"type":"link","label":"Memories","href":"/components-memories","docId":"Components/components-memories","unlisted":false},{"type":"link","label":"Models","href":"/components-models","docId":"Components/components-models","unlisted":false},{"type":"link","label":"Processing","href":"/components-processing","docId":"Components/components-processing","unlisted":false},{"type":"link","label":"Prompts","href":"/components-prompts","docId":"Components/components-prompts","unlisted":false},{"type":"link","label":"Tools","href":"/components-tools","docId":"Components/components-tools","unlisted":false},{"type":"link","label":"Vector stores","href":"/components-vector-stores","docId":"Components/components-vector-stores","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Agents","items":[{"type":"link","label":"Agents overview","href":"/agents-overview","docId":"Agents/agents-overview","unlisted":false},{"type":"link","label":"Create a problem-solving agent","href":"/agents-tool-calling-agent-component","docId":"Agents/agent-tool-calling-agent-component","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Configuration","items":[{"type":"link","label":"API keys","href":"/configuration-api-keys","docId":"Configuration/configuration-api-keys","unlisted":false},{"type":"link","label":"Authentication","href":"/configuration-authentication","docId":"Configuration/configuration-authentication","unlisted":false},{"type":"link","label":"Auto-saving","href":"/configuration-auto-save","docId":"Configuration/configuration-auto-saving","unlisted":false},{"type":"link","label":"Run Langflow in backend-only mode","href":"/configuration-backend-only","docId":"Configuration/configuration-backend-only","unlisted":false},{"type":"link","label":"Langflow CLI","href":"/configuration-cli","docId":"Configuration/configuration-cli","unlisted":false},{"type":"link","label":"Global variables","href":"/configuration-global-variables","docId":"Configuration/configuration-global-variables","unlisted":false},{"type":"link","label":"Environment variables","href":"/environment-variables","docId":"Configuration/environment-variables","unlisted":false},{"type":"link","label":"Security best practices","href":"/configuration-security-best-practices","docId":"Configuration/configuration-security-best-practices","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Deployment","items":[{"type":"link","label":"Docker","href":"/Deployment/deployment-docker","docId":"Deployment/deployment-docker","unlisted":false},{"type":"link","label":"GCP","href":"/deployment-gcp","docId":"Deployment/deployment-gcp","unlisted":false},{"type":"link","label":"HuggingFace\xa0Spaces","href":"/deployment-hugging-face-spaces","docId":"Deployment/deployment-hugging-face-spaces","unlisted":false},{"type":"link","label":"Kubernetes","href":"/deployment-kubernetes","docId":"Deployment/deployment-kubernetes","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":"category","label":"API reference","items":[{"type":"link","label":"API documentation","href":"/api"},{"type":"link","label":"API examples","href":"/api-reference-api-examples","docId":"API-Reference/api-reference-api-examples","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Integrations","items":[{"type":"link","label":"Apify","href":"/integrations-apify","docId":"Integrations/Apify/integrations-apify","unlisted":false},{"type":"link","label":"AssemblyAI","href":"/integrations-assemblyai","docId":"Integrations/integrations-assemblyai","unlisted":false},{"type":"link","label":"Integrate Composio with Langflow","href":"/integrations-composio","docId":"Integrations/Composio/integrations-composio","unlisted":false},{"type":"link","label":"Langfuse","href":"/integrations-langfuse","docId":"Integrations/integrations-langfuse","unlisted":false},{"type":"link","label":"LangSmith","href":"/integrations-langsmith","docId":"Integrations/integrations-langsmith","unlisted":false},{"type":"link","label":"LangWatch","href":"/integrations-langwatch","docId":"Integrations/integrations-langwatch","unlisted":false},{"type":"category","label":"Google","items":[{"type":"link","label":"Integrate Google OAuth with Langflow","href":"/integrations-setup-google-oauth-langflow","docId":"Integrations/Google/integrations-setup-google-oauth-langflow","unlisted":false},{"type":"link","label":"Integrate Google Cloud Vertex AI with Langflow","href":"/integrations-setup-google-cloud-vertex-ai-langflow","docId":"Integrations/Google/integrations-setup-google-cloud-vertex-ai-langflow","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Notion","items":[{"type":"link","label":"Setup","href":"/integrations/notion/setup","docId":"Integrations/Notion/integrations-notion","unlisted":false},{"type":"link","label":"Notion Conversational Agent","href":"/integrations/notion/notion-agent-conversational","docId":"Integrations/Notion/notion-agent-conversational","unlisted":false},{"type":"link","label":"Notion Meeting Notes Agent","href":"/integrations/notion/notion-agent-meeting-notes","docId":"Integrations/Notion/notion-agent-meeting-notes","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"NVIDIA","items":[{"type":"link","label":"Integrate Nvidia Ingest with Langflow","href":"/integrations-nvidia-ingest","docId":"Integrations/Nvidia/integrations-nvidia-ingest","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Contributing","items":[{"type":"link","label":"Join the Langflow community","href":"/contributing-community","docId":"Contributing/contributing-community","unlisted":false},{"type":"link","label":"Contribute components","href":"/contributing-components","docId":"Contributing/contributing-components","unlisted":false},{"type":"link","label":"Ask for help on the Discussions board","href":"/contributing-github-discussions","docId":"Contributing/contributing-github-discussion-board","unlisted":false},{"type":"link","label":"Request an enhancement or report a bug","href":"/contributing-github-issues","docId":"Contributing/contributing-github-issues","unlisted":false},{"type":"link","label":"Contribute to Langflow","href":"/contributing-how-to-contribute","docId":"Contributing/contributing-how-to-contribute","unlisted":false},{"type":"link","label":"Telemetry","href":"/contributing-telemetry","docId":"Contributing/contributing-telemetry","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Changelog","items":[{"type":"link","label":"Changelog","href":"https://github.com/langflow-ai/langflow/releases/latest"}],"collapsed":true,"collapsible":true}]},"docs":{"Agents/agent-tool-calling-agent-component":{"id":"Agents/agent-tool-calling-agent-component","title":"Create a problem-solving agent","description":"Developing agents in Langchain is complex.","sidebar":"docs"},"Agents/agents-overview":{"id":"Agents/agents-overview","title":"Agents overview","description":"Agents are AI systems that use LLMs as a brain to analyze problems and select external tools.","sidebar":"docs"},"API-Reference/api-reference-api-examples":{"id":"API-Reference/api-reference-api-examples","title":"API examples","description":"This page provides examples and practices for managing Langflow using the Langflow API.","sidebar":"docs"},"Components/components-agents":{"id":"Components/components-agents","title":"Agents","description":"Agent components define the behavior and capabilities of AI agents in your flow.","sidebar":"docs"},"Components/components-custom-components":{"id":"Components/components-custom-components","title":"Create custom Python components","description":"Custom components are created within Langflow and extend the platform\'s functionality with custom, reusable Python code.","sidebar":"docs"},"Components/components-data":{"id":"Components/components-data","title":"Data","description":"Data components load data from a source into your flow.","sidebar":"docs"},"Components/components-embedding-models":{"id":"Components/components-embedding-models","title":"Embeddings","description":"Embeddings models convert text into numerical vectors. These embeddings capture semantic meaning of the input text, and allow LLMs to understand context.","sidebar":"docs"},"Components/components-helpers":{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data, tasks, and other components in your flow.","sidebar":"docs"},"Components/components-io":{"id":"Components/components-io","title":"Inputs and outputs","description":"Input and output components define where data enters and exits your flow.","sidebar":"docs"},"Components/components-loaders":{"id":"Components/components-loaders","title":"Loaders","description":"As of Langflow 1.1, loader components are now found in the Components menu under Bundles.","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-memories":{"id":"Components/components-memories","title":"Memories","description":"Memory components store and retrieve chat messages by session_id.","sidebar":"docs"},"Components/components-models":{"id":"Components/components-models","title":"Models","description":"Model components generate text using large language models.","sidebar":"docs"},"Components/components-processing":{"id":"Components/components-processing","title":"Processing","description":"Processing components process and transform data within a flow.","sidebar":"docs"},"Components/components-prompts":{"id":"Components/components-prompts","title":"Prompts","description":"A prompt is a structured input to a language model that instructs the model how to handle user inputs and variables.","sidebar":"docs"},"Components/components-tools":{"id":"Components/components-tools","title":"Tools","description":"Tools are typically connected to agent components at the Tools port. Agents use LLMs as a reasoning engine to decide which of the connected tool components to use to solve a problem.","sidebar":"docs"},"Components/components-vector-stores":{"id":"Components/components-vector-stores","title":"Vector stores","description":"Vector databases store vector data, which backs AI workloads like chatbots and Retrieval Augmented Generation.","sidebar":"docs"},"Concepts/concepts-api":{"id":"Concepts/concepts-api","title":"API pane","description":"The\xa0API\xa0pane presents code templates for integrating your flow into external applications.","sidebar":"docs"},"Concepts/concepts-components":{"id":"Concepts/concepts-components","title":"Components","description":"A\xa0component\xa0is a single building block within a flow with inputs, outputs, functions, and parameters that define its functionality. A single component is like a class within a larger application.","sidebar":"docs"},"Concepts/concepts-flows":{"id":"Concepts/concepts-flows","title":"Flows","description":"Flows in Langflow are fully serializable and can be saved and loaded from the file system. In this guide, we\'ll explore how to import and export flows.","sidebar":"docs"},"Concepts/concepts-objects":{"id":"Concepts/concepts-objects","title":"Langflow objects","description":"In Langflow, objects are Pydantic models that serve as structured, functional representations of data.","sidebar":"docs"},"Concepts/concepts-overview":{"id":"Concepts/concepts-overview","title":"Langflow overview","description":"This page explores the fundamental building blocks of Langflow, beginning with the question, \\"What is a flow?\\"","sidebar":"docs"},"Concepts/concepts-playground":{"id":"Concepts/concepts-playground","title":"Playground","description":"The\xa0Playground\xa0is a dynamic interface designed for real-time interaction with LLMs, allowing users to chat, access memories, and monitor inputs and outputs. Here, users can directly prototype their models, making adjustments and observing different outcomes.","sidebar":"docs"},"Configuration/configuration-api-keys":{"id":"Configuration/configuration-api-keys","title":"API keys","description":"Langflow provides an API key functionality that allows users to access their individual components and flows without traditional login authentication. The API key is a user-specific token that can be included in the request header, query parameter, or as a command line argument to authenticate API calls. This documentation outlines how to generate, use, and manage API keys in Langflow.","sidebar":"docs"},"Configuration/configuration-authentication":{"id":"Configuration/configuration-authentication","title":"Authentication","description":"The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application.","sidebar":"docs"},"Configuration/configuration-auto-saving":{"id":"Configuration/configuration-auto-saving","title":"Auto-saving","description":"Langflow supports both manual and auto-saving functionality.","sidebar":"docs"},"Configuration/configuration-backend-only":{"id":"Configuration/configuration-backend-only","title":"Run Langflow in backend-only mode","description":"Langflow can run in --backend-only mode to expose a Langflow app as an API endpoint, without running the frontend UI.","sidebar":"docs"},"Configuration/configuration-cli":{"id":"Configuration/configuration-cli","title":"Langflow CLI","description":"The Langflow command line interface (Langflow CLI) is the main interface for managing and running the Langflow server.","sidebar":"docs"},"Configuration/configuration-custom-database":{"id":"Configuration/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."},"Configuration/configuration-global-variables":{"id":"Configuration/configuration-global-variables","title":"Global variables","description":"Global variables let you store and reuse generic input values and credentials across your projects.","sidebar":"docs"},"Configuration/configuration-security-best-practices":{"id":"Configuration/configuration-security-best-practices","title":"Security best practices","description":"This guide outlines security best practices for deploying and managing Langflow.","sidebar":"docs"},"Configuration/environment-variables":{"id":"Configuration/environment-variables","title":"Environment variables","description":"Langflow lets you configure a number of settings using environment variables.","sidebar":"docs"},"Contributing/contributing-community":{"id":"Contributing/contributing-community","title":"Join the Langflow community","description":"Join the Langflow Discord server","sidebar":"docs"},"Contributing/contributing-components":{"id":"Contributing/contributing-components","title":"Contribute components","description":"New components are added as objects of the\xa0CustomComponent\xa0class.","sidebar":"docs"},"Contributing/contributing-github-discussion-board":{"id":"Contributing/contributing-github-discussion-board","title":"Ask for help on the Discussions board","description":"If you\'re looking for help with your code, consider posting a question on the Langflow\xa0GitHub Discussions board. The Langflow team cannot provide individual support via email. The team also believes that help is much more valuable if it\'s\xa0shared publicly, so that more people can benefit from it.","sidebar":"docs"},"Contributing/contributing-github-issues":{"id":"Contributing/contributing-github-issues","title":"Request an enhancement or report a bug","description":"The\xa0Issues page in the Langflow repo is kept up to date with bugs, improvements, and feature requests. Labels are used to help with sorting and discovery of issues of interest. For an overview of the system Langflow uses to tag issues and pull requests, see the Langflow repo\'s labels page.","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-telemetry":{"id":"Contributing/contributing-telemetry","title":"Telemetry","description":"Langflow uses anonymous telemetry to collect essential usage statistics to enhance functionality and the user experience. This data helps us identify popular features and areas that need improvement, and ensures development efforts align with what you need.","sidebar":"docs"},"Deployment/deployment-docker":{"id":"Deployment/deployment-docker","title":"Docker","description":"This guide will help you get LangFlow up and running using Docker and Docker Compose.","sidebar":"docs"},"Deployment/deployment-gcp":{"id":"Deployment/deployment-gcp","title":"GCP","description":"To deploy Langflow on Google Cloud Platform using Cloud Shell, use the below script.","sidebar":"docs"},"Deployment/deployment-hugging-face-spaces":{"id":"Deployment/deployment-hugging-face-spaces","title":"HuggingFace\xa0Spaces","description":"HuggingFace Spaces","sidebar":"docs"},"Deployment/deployment-kubernetes":{"id":"Deployment/deployment-kubernetes","title":"Kubernetes","description":"This guide will help you get LangFlow up and running in Kubernetes cluster, including the following steps:","sidebar":"docs"},"Deployment/deployment-railway":{"id":"Deployment/deployment-railway","title":"Railway","description":"Deploy on Railway","sidebar":"docs"},"Deployment/deployment-render":{"id":"Deployment/deployment-render","title":"Render","description":"Deploy on Render","sidebar":"docs"},"Get-Started/get-started-installation":{"id":"Get-Started/get-started-installation","title":"Install Langflow","description":"You can deploy Langflow either locally or as a hosted service with Datastax Langflow.","sidebar":"docs"},"Get-Started/get-started-quickstart":{"id":"Get-Started/get-started-quickstart","title":"Quickstart","description":"Get to know Langflow by building an OpenAI-powered chatbot application. After you\'ve constructed a chatbot, add Retrieval Augmented Generation (RAG) to chat with your own data.","sidebar":"docs"},"Get-Started/welcome-to-langflow":{"id":"Get-Started/welcome-to-langflow","title":"Welcome to Langflow","description":"Langflow is a new, visual framework for building multi-agent and RAG applications. It is open-source, Python-powered, fully customizable, and LLM and vector store agnostic.","sidebar":"docs"},"Integrations/Apify/integrations-apify":{"id":"Integrations/Apify/integrations-apify","title":"Apify","description":"Apify is a web scraping and data extraction platform. It provides an app store with more than three thousand ready-made cloud tools called Actors.","sidebar":"docs"},"Integrations/Composio/integrations-composio":{"id":"Integrations/Composio/integrations-composio","title":"Integrate Composio with Langflow","description":"Langflow integrates with Composio as a toolset for your Agent component.","sidebar":"docs"},"Integrations/Google/integrations-setup-google-cloud-vertex-ai-langflow":{"id":"Integrations/Google/integrations-setup-google-cloud-vertex-ai-langflow","title":"Integrate Google Cloud Vertex AI with Langflow","description":"A comprehensive guide on creating a Google OAuth app, obtaining tokens, and integrating them with Langflow\'s Google components.","sidebar":"docs"},"Integrations/Google/integrations-setup-google-oauth-langflow":{"id":"Integrations/Google/integrations-setup-google-oauth-langflow","title":"Integrate Google OAuth with Langflow","description":"A comprehensive guide on creating a Google OAuth app, obtaining tokens, and integrating them with Langflow\'s Google components.","sidebar":"docs"},"Integrations/integrations-assemblyai":{"id":"Integrations/integrations-assemblyai","title":"AssemblyAI","description":"The AssemblyAI components allow you to apply powerful Speech AI models to your app for tasks like:","sidebar":"docs"},"Integrations/integrations-langfuse":{"id":"Integrations/integrations-langfuse","title":"Langfuse","description":"Langfuse is an observability and analytics platform specifically designed for language models and AI applications.","sidebar":"docs"},"Integrations/integrations-langsmith":{"id":"Integrations/integrations-langsmith","title":"LangSmith","description":"LangSmith is a full-lifecycle DevOps service from LangChain that provides monitoring and observability. To integrate with Langflow, just add your LangChain API key as a Langflow environment variable and you are good to go!","sidebar":"docs"},"Integrations/integrations-langwatch":{"id":"Integrations/integrations-langwatch","title":"LangWatch","description":"938674091aac4d9d9aa4aa6eb5c215b4}","sidebar":"docs"},"Integrations/Notion/integrations-notion":{"id":"Integrations/Notion/integrations-notion","title":"Setup","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.","sidebar":"docs"},"Integrations/Notion/notion-agent-conversational":{"id":"Integrations/Notion/notion-agent-conversational","title":"Notion Conversational Agent","description":"The Notion Conversational Agent is an AI-powered assistant that interacts with your Notion workspace through natural language conversations. This flow performs Notion-related tasks like creating pages, searching for information, and managing content, all through a chat interface.","sidebar":"docs"},"Integrations/Notion/notion-agent-meeting-notes":{"id":"Integrations/Notion/notion-agent-meeting-notes","title":"Notion Meeting Notes Agent","description":"The Notion Agent for Meeting Notes is an AI-powered tool that automatically processes meeting transcripts and updates your Notion workspace. It identifies tasks, action items, and key points from your meetings, then creates new tasks or updates existing ones in Notion without manual input.","sidebar":"docs"},"Integrations/Nvidia/integrations-nvidia-ingest":{"id":"Integrations/Nvidia/integrations-nvidia-ingest","title":"Integrate Nvidia Ingest with Langflow","description":"The NVIDIA Ingest component integrates with the NVIDIA nv-ingest microservice for data ingestion, processing, and extraction of text files.","sidebar":"docs"},"Starter-Projects/starter-projects-basic-prompting":{"id":"Starter-Projects/starter-projects-basic-prompting","title":"Basic prompting","description":"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks.","sidebar":"docs"},"Starter-Projects/starter-projects-simple-agent":{"id":"Starter-Projects/starter-projects-simple-agent","title":"Simple agent","description":"Build a Simple Agent flow for an agentic application using the Tool-calling agent component.","sidebar":"docs"},"Starter-Projects/starter-projects-vector-store-rag":{"id":"Starter-Projects/starter-projects-vector-store-rag","title":"Vector store RAG","description":"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it.","sidebar":"docs"},"Tutorials/tutorials-blog-writer":{"id":"Tutorials/tutorials-blog-writer","title":"Blog writer","description":"Build a Blog Writer flow for a one-shot application using OpenAI.","sidebar":"docs"},"Tutorials/tutorials-document-qa":{"id":"Tutorials/tutorials-document-qa","title":"Document QA","description":"Build a question-and-answer chatbot with a document loaded from local memory.","sidebar":"docs"},"Tutorials/tutorials-math-agent":{"id":"Tutorials/tutorials-math-agent","title":"Math agent","description":"Build a Math Agent flow for an agentic application using the Tool-calling agent component.","sidebar":"docs"},"Tutorials/tutorials-memory-chatbot":{"id":"Tutorials/tutorials-memory-chatbot","title":"Memory chatbot","description":"This flow extends the\xa0basic prompting flow\xa0with a Chat memory component that stores up to 100 previous chat messages and uses them to provide context for the current conversation.","sidebar":"docs"},"Tutorials/tutorials-sequential-agent":{"id":"Tutorials/tutorials-sequential-agent","title":"Sequential tasks agent","description":"Build a Sequential Tasks Agent flow for a multi-agent application using multiple Agent components.","sidebar":"docs"},"Tutorials/tutorials-travel-planning-agent":{"id":"Tutorials/tutorials-travel-planning-agent","title":"Travel planning agent","description":"Build a Travel Planning Agent flow for an agentic application using the multiple Tool-calling agents.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.d9d69df3.js b/assets/js/22dd74f7.d9d69df3.js new file mode 100644 index 0000000000..196d6158fc --- /dev/null +++ b/assets/js/22dd74f7.d9d69df3.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":"link","label":"Welcome to Langflow","href":"/","docId":"Get-Started/welcome-to-langflow","unlisted":false},{"type":"category","label":"Get started","items":[{"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}],"collapsed":true,"collapsible":true},{"type":"category","label":"Starter projects","items":[{"type":"link","label":"Basic prompting","href":"/starter-projects-basic-prompting","docId":"Starter-Projects/starter-projects-basic-prompting","unlisted":false},{"type":"link","label":"Vector store RAG","href":"/starter-projects-vector-store-rag","docId":"Starter-Projects/starter-projects-vector-store-rag","unlisted":false},{"type":"link","label":"Simple agent","href":"/starter-projects-simple-agent","docId":"Starter-Projects/starter-projects-simple-agent","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Blog writer","href":"/tutorials-blog-writer","docId":"Tutorials/tutorials-blog-writer","unlisted":false},{"type":"link","label":"Document QA","href":"/tutorials-document-qa","docId":"Tutorials/tutorials-document-qa","unlisted":false},{"type":"link","label":"Memory chatbot","href":"/tutorials-memory-chatbot","docId":"Tutorials/tutorials-memory-chatbot","unlisted":false},{"type":"link","label":"Math agent","href":"/tutorials-math-agent","docId":"Tutorials/tutorials-math-agent","unlisted":false},{"type":"link","label":"Sequential tasks agent","href":"/tutorials-sequential-agent","docId":"Tutorials/tutorials-sequential-agent","unlisted":false},{"type":"link","label":"Travel planning agent","href":"/tutorials-travel-planning-agent","docId":"Tutorials/tutorials-travel-planning-agent","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Langflow overview","href":"/concepts-overview","docId":"Concepts/concepts-overview","unlisted":false},{"type":"link","label":"Playground","href":"/concepts-playground","docId":"Concepts/concepts-playground","unlisted":false},{"type":"link","label":"Components","href":"/concepts-components","docId":"Concepts/concepts-components","unlisted":false},{"type":"link","label":"Flows","href":"/Concepts/concepts-flows","docId":"Concepts/concepts-flows","unlisted":false},{"type":"link","label":"Langflow objects","href":"/concepts-objects","docId":"Concepts/concepts-objects","unlisted":false},{"type":"link","label":"API pane","href":"/concepts-api","docId":"Concepts/concepts-api","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Components","items":[{"type":"link","label":"Agents","href":"/components-agents","docId":"Components/components-agents","unlisted":false},{"type":"link","label":"Create custom Python components","href":"/components-custom-components","docId":"Components/components-custom-components","unlisted":false},{"type":"link","label":"Data","href":"/components-data","docId":"Components/components-data","unlisted":false},{"type":"link","label":"Embeddings","href":"/components-embedding-models","docId":"Components/components-embedding-models","unlisted":false},{"type":"link","label":"Helpers","href":"/components-helpers","docId":"Components/components-helpers","unlisted":false},{"type":"link","label":"Inputs and outputs","href":"/components-io","docId":"Components/components-io","unlisted":false},{"type":"link","label":"Loaders","href":"/components-loaders","docId":"Components/components-loaders","unlisted":false},{"type":"link","label":"Logic","href":"/components-logic","docId":"Components/components-logic","unlisted":false},{"type":"link","label":"Memories","href":"/components-memories","docId":"Components/components-memories","unlisted":false},{"type":"link","label":"Models","href":"/components-models","docId":"Components/components-models","unlisted":false},{"type":"link","label":"Processing","href":"/components-processing","docId":"Components/components-processing","unlisted":false},{"type":"link","label":"Prompts","href":"/components-prompts","docId":"Components/components-prompts","unlisted":false},{"type":"link","label":"Tools","href":"/components-tools","docId":"Components/components-tools","unlisted":false},{"type":"link","label":"Vector stores","href":"/components-vector-stores","docId":"Components/components-vector-stores","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Agents","items":[{"type":"link","label":"Agents overview","href":"/agents-overview","docId":"Agents/agents-overview","unlisted":false},{"type":"link","label":"Create a problem-solving agent","href":"/agents-tool-calling-agent-component","docId":"Agents/agent-tool-calling-agent-component","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Configuration","items":[{"type":"link","label":"API keys","href":"/configuration-api-keys","docId":"Configuration/configuration-api-keys","unlisted":false},{"type":"link","label":"Authentication","href":"/configuration-authentication","docId":"Configuration/configuration-authentication","unlisted":false},{"type":"link","label":"Auto-saving","href":"/configuration-auto-save","docId":"Configuration/configuration-auto-saving","unlisted":false},{"type":"link","label":"Run Langflow in backend-only mode","href":"/configuration-backend-only","docId":"Configuration/configuration-backend-only","unlisted":false},{"type":"link","label":"Langflow CLI","href":"/configuration-cli","docId":"Configuration/configuration-cli","unlisted":false},{"type":"link","label":"Global variables","href":"/configuration-global-variables","docId":"Configuration/configuration-global-variables","unlisted":false},{"type":"link","label":"Environment variables","href":"/environment-variables","docId":"Configuration/environment-variables","unlisted":false},{"type":"link","label":"Security best practices","href":"/configuration-security-best-practices","docId":"Configuration/configuration-security-best-practices","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Deployment","items":[{"type":"link","label":"Docker","href":"/deployment-docker","docId":"Deployment/deployment-docker","unlisted":false},{"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":"Kubernetes","href":"/deployment-kubernetes","docId":"Deployment/deployment-kubernetes","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":"category","label":"API reference","items":[{"type":"link","label":"API documentation","href":"/api"},{"type":"link","label":"API examples","href":"/api-reference-api-examples","docId":"API-Reference/api-reference-api-examples","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Integrations","items":[{"type":"link","label":"Apify","href":"/integrations-apify","docId":"Integrations/Apify/integrations-apify","unlisted":false},{"type":"link","label":"AssemblyAI","href":"/integrations-assemblyai","docId":"Integrations/integrations-assemblyai","unlisted":false},{"type":"link","label":"Integrate Composio with Langflow","href":"/integrations-composio","docId":"Integrations/Composio/integrations-composio","unlisted":false},{"type":"link","label":"Langfuse","href":"/integrations-langfuse","docId":"Integrations/integrations-langfuse","unlisted":false},{"type":"link","label":"LangSmith","href":"/integrations-langsmith","docId":"Integrations/integrations-langsmith","unlisted":false},{"type":"link","label":"LangWatch","href":"/integrations-langwatch","docId":"Integrations/integrations-langwatch","unlisted":false},{"type":"category","label":"Google","items":[{"type":"link","label":"Integrate Google OAuth with Langflow","href":"/integrations-setup-google-oauth-langflow","docId":"Integrations/Google/integrations-setup-google-oauth-langflow","unlisted":false},{"type":"link","label":"Integrate Google Cloud Vertex AI with Langflow","href":"/integrations-setup-google-cloud-vertex-ai-langflow","docId":"Integrations/Google/integrations-setup-google-cloud-vertex-ai-langflow","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Notion","items":[{"type":"link","label":"Setup","href":"/integrations/notion/setup","docId":"Integrations/Notion/integrations-notion","unlisted":false},{"type":"link","label":"Notion Conversational Agent","href":"/integrations/notion/notion-agent-conversational","docId":"Integrations/Notion/notion-agent-conversational","unlisted":false},{"type":"link","label":"Notion Meeting Notes Agent","href":"/integrations/notion/notion-agent-meeting-notes","docId":"Integrations/Notion/notion-agent-meeting-notes","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"NVIDIA","items":[{"type":"link","label":"Integrate Nvidia Ingest with Langflow","href":"/integrations-nvidia-ingest","docId":"Integrations/Nvidia/integrations-nvidia-ingest","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Contributing","items":[{"type":"link","label":"Join the Langflow community","href":"/contributing-community","docId":"Contributing/contributing-community","unlisted":false},{"type":"link","label":"Contribute components","href":"/contributing-components","docId":"Contributing/contributing-components","unlisted":false},{"type":"link","label":"Ask for help on the Discussions board","href":"/contributing-github-discussions","docId":"Contributing/contributing-github-discussion-board","unlisted":false},{"type":"link","label":"Request an enhancement or report a bug","href":"/contributing-github-issues","docId":"Contributing/contributing-github-issues","unlisted":false},{"type":"link","label":"Contribute to Langflow","href":"/contributing-how-to-contribute","docId":"Contributing/contributing-how-to-contribute","unlisted":false},{"type":"link","label":"Telemetry","href":"/contributing-telemetry","docId":"Contributing/contributing-telemetry","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Changelog","items":[{"type":"link","label":"Changelog","href":"https://github.com/langflow-ai/langflow/releases/latest"}],"collapsed":true,"collapsible":true}]},"docs":{"Agents/agent-tool-calling-agent-component":{"id":"Agents/agent-tool-calling-agent-component","title":"Create a problem-solving agent","description":"Developing agents in Langchain is complex.","sidebar":"docs"},"Agents/agents-overview":{"id":"Agents/agents-overview","title":"Agents overview","description":"Agents are AI systems that use LLMs as a brain to analyze problems and select external tools.","sidebar":"docs"},"API-Reference/api-reference-api-examples":{"id":"API-Reference/api-reference-api-examples","title":"API examples","description":"This page provides examples and practices for managing Langflow using the Langflow API.","sidebar":"docs"},"Components/components-agents":{"id":"Components/components-agents","title":"Agents","description":"Agent components define the behavior and capabilities of AI agents in your flow.","sidebar":"docs"},"Components/components-custom-components":{"id":"Components/components-custom-components","title":"Create custom Python components","description":"Custom components are created within Langflow and extend the platform\'s functionality with custom, reusable Python code.","sidebar":"docs"},"Components/components-data":{"id":"Components/components-data","title":"Data","description":"Data components load data from a source into your flow.","sidebar":"docs"},"Components/components-embedding-models":{"id":"Components/components-embedding-models","title":"Embeddings","description":"Embeddings models convert text into numerical vectors. These embeddings capture semantic meaning of the input text, and allow LLMs to understand context.","sidebar":"docs"},"Components/components-helpers":{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data, tasks, and other components in your flow.","sidebar":"docs"},"Components/components-io":{"id":"Components/components-io","title":"Inputs and outputs","description":"Input and output components define where data enters and exits your flow.","sidebar":"docs"},"Components/components-loaders":{"id":"Components/components-loaders","title":"Loaders","description":"As of Langflow 1.1, loader components are now found in the Components menu under Bundles.","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-memories":{"id":"Components/components-memories","title":"Memories","description":"Memory components store and retrieve chat messages by session_id.","sidebar":"docs"},"Components/components-models":{"id":"Components/components-models","title":"Models","description":"Model components generate text using large language models.","sidebar":"docs"},"Components/components-processing":{"id":"Components/components-processing","title":"Processing","description":"Processing components process and transform data within a flow.","sidebar":"docs"},"Components/components-prompts":{"id":"Components/components-prompts","title":"Prompts","description":"A prompt is a structured input to a language model that instructs the model how to handle user inputs and variables.","sidebar":"docs"},"Components/components-tools":{"id":"Components/components-tools","title":"Tools","description":"Tools are typically connected to agent components at the Tools port. Agents use LLMs as a reasoning engine to decide which of the connected tool components to use to solve a problem.","sidebar":"docs"},"Components/components-vector-stores":{"id":"Components/components-vector-stores","title":"Vector stores","description":"Vector databases store vector data, which backs AI workloads like chatbots and Retrieval Augmented Generation.","sidebar":"docs"},"Concepts/concepts-api":{"id":"Concepts/concepts-api","title":"API pane","description":"The\xa0API\xa0pane presents code templates for integrating your flow into external applications.","sidebar":"docs"},"Concepts/concepts-components":{"id":"Concepts/concepts-components","title":"Components","description":"A\xa0component\xa0is a single building block within a flow with inputs, outputs, functions, and parameters that define its functionality. A single component is like a class within a larger application.","sidebar":"docs"},"Concepts/concepts-flows":{"id":"Concepts/concepts-flows","title":"Flows","description":"Flows in Langflow are fully serializable and can be saved and loaded from the file system. In this guide, we\'ll explore how to import and export flows.","sidebar":"docs"},"Concepts/concepts-objects":{"id":"Concepts/concepts-objects","title":"Langflow objects","description":"In Langflow, objects are Pydantic models that serve as structured, functional representations of data.","sidebar":"docs"},"Concepts/concepts-overview":{"id":"Concepts/concepts-overview","title":"Langflow overview","description":"This page explores the fundamental building blocks of Langflow, beginning with the question, \\"What is a flow?\\"","sidebar":"docs"},"Concepts/concepts-playground":{"id":"Concepts/concepts-playground","title":"Playground","description":"The\xa0Playground\xa0is a dynamic interface designed for real-time interaction with LLMs, allowing users to chat, access memories, and monitor inputs and outputs. Here, users can directly prototype their models, making adjustments and observing different outcomes.","sidebar":"docs"},"Configuration/configuration-api-keys":{"id":"Configuration/configuration-api-keys","title":"API keys","description":"Langflow provides an API key functionality that allows users to access their individual components and flows without traditional login authentication. The API key is a user-specific token that can be included in the request header, query parameter, or as a command line argument to authenticate API calls. This documentation outlines how to generate, use, and manage API keys in Langflow.","sidebar":"docs"},"Configuration/configuration-authentication":{"id":"Configuration/configuration-authentication","title":"Authentication","description":"The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application.","sidebar":"docs"},"Configuration/configuration-auto-saving":{"id":"Configuration/configuration-auto-saving","title":"Auto-saving","description":"Langflow supports both manual and auto-saving functionality.","sidebar":"docs"},"Configuration/configuration-backend-only":{"id":"Configuration/configuration-backend-only","title":"Run Langflow in backend-only mode","description":"Langflow can run in --backend-only mode to expose a Langflow app as an API endpoint, without running the frontend UI.","sidebar":"docs"},"Configuration/configuration-cli":{"id":"Configuration/configuration-cli","title":"Langflow CLI","description":"The Langflow command line interface (Langflow CLI) is the main interface for managing and running the Langflow server.","sidebar":"docs"},"Configuration/configuration-custom-database":{"id":"Configuration/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."},"Configuration/configuration-global-variables":{"id":"Configuration/configuration-global-variables","title":"Global variables","description":"Global variables let you store and reuse generic input values and credentials across your projects.","sidebar":"docs"},"Configuration/configuration-security-best-practices":{"id":"Configuration/configuration-security-best-practices","title":"Security best practices","description":"This guide outlines security best practices for deploying and managing Langflow.","sidebar":"docs"},"Configuration/environment-variables":{"id":"Configuration/environment-variables","title":"Environment variables","description":"Langflow lets you configure a number of settings using environment variables.","sidebar":"docs"},"Contributing/contributing-community":{"id":"Contributing/contributing-community","title":"Join the Langflow community","description":"Join the Langflow Discord server","sidebar":"docs"},"Contributing/contributing-components":{"id":"Contributing/contributing-components","title":"Contribute components","description":"New components are added as objects of the\xa0CustomComponent\xa0class.","sidebar":"docs"},"Contributing/contributing-github-discussion-board":{"id":"Contributing/contributing-github-discussion-board","title":"Ask for help on the Discussions board","description":"If you\'re looking for help with your code, consider posting a question on the Langflow\xa0GitHub Discussions board. The Langflow team cannot provide individual support via email. The team also believes that help is much more valuable if it\'s\xa0shared publicly, so that more people can benefit from it.","sidebar":"docs"},"Contributing/contributing-github-issues":{"id":"Contributing/contributing-github-issues","title":"Request an enhancement or report a bug","description":"The\xa0Issues page in the Langflow repo is kept up to date with bugs, improvements, and feature requests. Labels are used to help with sorting and discovery of issues of interest. For an overview of the system Langflow uses to tag issues and pull requests, see the Langflow repo\'s labels page.","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-telemetry":{"id":"Contributing/contributing-telemetry","title":"Telemetry","description":"Langflow uses anonymous telemetry to collect essential usage statistics to enhance functionality and the user experience. This data helps us identify popular features and areas that need improvement, and ensures development efforts align with what you need.","sidebar":"docs"},"Deployment/deployment-docker":{"id":"Deployment/deployment-docker","title":"Deploy Langflow on Docker","description":"This guide demonstrates deploying Langflow with Docker and Docker Compose.","sidebar":"docs"},"Deployment/deployment-gcp":{"id":"Deployment/deployment-gcp","title":"Deploy Langflow on Google Cloud Platform","description":"This guide demonstrates deploying Langflow on Google Cloud Platform.","sidebar":"docs"},"Deployment/deployment-hugging-face-spaces":{"id":"Deployment/deployment-hugging-face-spaces","title":"Deploy Langflow on HuggingFace Spaces","description":"This guide explains how to deploy Langflow on HuggingFace Spaces.","sidebar":"docs"},"Deployment/deployment-kubernetes":{"id":"Deployment/deployment-kubernetes","title":"Deploy Langflow on Kubernetes","description":"This guide demonstrates deploying Langflow on a Kubernetes cluster.","sidebar":"docs"},"Deployment/deployment-railway":{"id":"Deployment/deployment-railway","title":"Deploy Langflow on Railway","description":"This guide explains how to deploy Langflow on Railway, a cloud infrastructure platform that provides auto-deploy, managed databases, and automatic scaling.","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"},"Get-Started/get-started-installation":{"id":"Get-Started/get-started-installation","title":"Install Langflow","description":"You can deploy Langflow either locally or as a hosted service with Datastax Langflow.","sidebar":"docs"},"Get-Started/get-started-quickstart":{"id":"Get-Started/get-started-quickstart","title":"Quickstart","description":"Get to know Langflow by building an OpenAI-powered chatbot application. After you\'ve constructed a chatbot, add Retrieval Augmented Generation (RAG) to chat with your own data.","sidebar":"docs"},"Get-Started/welcome-to-langflow":{"id":"Get-Started/welcome-to-langflow","title":"Welcome to Langflow","description":"Langflow is a new, visual framework for building multi-agent and RAG applications. It is open-source, Python-powered, fully customizable, and LLM and vector store agnostic.","sidebar":"docs"},"Integrations/Apify/integrations-apify":{"id":"Integrations/Apify/integrations-apify","title":"Apify","description":"Apify is a web scraping and data extraction platform. It provides an app store with more than three thousand ready-made cloud tools called Actors.","sidebar":"docs"},"Integrations/Composio/integrations-composio":{"id":"Integrations/Composio/integrations-composio","title":"Integrate Composio with Langflow","description":"Langflow integrates with Composio as a toolset for your Agent component.","sidebar":"docs"},"Integrations/Google/integrations-setup-google-cloud-vertex-ai-langflow":{"id":"Integrations/Google/integrations-setup-google-cloud-vertex-ai-langflow","title":"Integrate Google Cloud Vertex AI with Langflow","description":"A comprehensive guide on creating a Google OAuth app, obtaining tokens, and integrating them with Langflow\'s Google components.","sidebar":"docs"},"Integrations/Google/integrations-setup-google-oauth-langflow":{"id":"Integrations/Google/integrations-setup-google-oauth-langflow","title":"Integrate Google OAuth with Langflow","description":"A comprehensive guide on creating a Google OAuth app, obtaining tokens, and integrating them with Langflow\'s Google components.","sidebar":"docs"},"Integrations/integrations-assemblyai":{"id":"Integrations/integrations-assemblyai","title":"AssemblyAI","description":"The AssemblyAI components allow you to apply powerful Speech AI models to your app for tasks like:","sidebar":"docs"},"Integrations/integrations-langfuse":{"id":"Integrations/integrations-langfuse","title":"Langfuse","description":"Langfuse is an observability and analytics platform specifically designed for language models and AI applications.","sidebar":"docs"},"Integrations/integrations-langsmith":{"id":"Integrations/integrations-langsmith","title":"LangSmith","description":"LangSmith is a full-lifecycle DevOps service from LangChain that provides monitoring and observability. To integrate with Langflow, just add your LangChain API key as a Langflow environment variable and you are good to go!","sidebar":"docs"},"Integrations/integrations-langwatch":{"id":"Integrations/integrations-langwatch","title":"LangWatch","description":"938674091aac4d9d9aa4aa6eb5c215b4}","sidebar":"docs"},"Integrations/Notion/integrations-notion":{"id":"Integrations/Notion/integrations-notion","title":"Setup","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.","sidebar":"docs"},"Integrations/Notion/notion-agent-conversational":{"id":"Integrations/Notion/notion-agent-conversational","title":"Notion Conversational Agent","description":"The Notion Conversational Agent is an AI-powered assistant that interacts with your Notion workspace through natural language conversations. This flow performs Notion-related tasks like creating pages, searching for information, and managing content, all through a chat interface.","sidebar":"docs"},"Integrations/Notion/notion-agent-meeting-notes":{"id":"Integrations/Notion/notion-agent-meeting-notes","title":"Notion Meeting Notes Agent","description":"The Notion Agent for Meeting Notes is an AI-powered tool that automatically processes meeting transcripts and updates your Notion workspace. It identifies tasks, action items, and key points from your meetings, then creates new tasks or updates existing ones in Notion without manual input.","sidebar":"docs"},"Integrations/Nvidia/integrations-nvidia-ingest":{"id":"Integrations/Nvidia/integrations-nvidia-ingest","title":"Integrate Nvidia Ingest with Langflow","description":"The NVIDIA Ingest component integrates with the NVIDIA nv-ingest microservice for data ingestion, processing, and extraction of text files.","sidebar":"docs"},"Starter-Projects/starter-projects-basic-prompting":{"id":"Starter-Projects/starter-projects-basic-prompting","title":"Basic prompting","description":"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks.","sidebar":"docs"},"Starter-Projects/starter-projects-simple-agent":{"id":"Starter-Projects/starter-projects-simple-agent","title":"Simple agent","description":"Build a Simple Agent flow for an agentic application using the Tool-calling agent component.","sidebar":"docs"},"Starter-Projects/starter-projects-vector-store-rag":{"id":"Starter-Projects/starter-projects-vector-store-rag","title":"Vector store RAG","description":"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it.","sidebar":"docs"},"Tutorials/tutorials-blog-writer":{"id":"Tutorials/tutorials-blog-writer","title":"Blog writer","description":"Build a Blog Writer flow for a one-shot application using OpenAI.","sidebar":"docs"},"Tutorials/tutorials-document-qa":{"id":"Tutorials/tutorials-document-qa","title":"Document QA","description":"Build a question-and-answer chatbot with a document loaded from local memory.","sidebar":"docs"},"Tutorials/tutorials-math-agent":{"id":"Tutorials/tutorials-math-agent","title":"Math agent","description":"Build a Math Agent flow for an agentic application using the Tool-calling agent component.","sidebar":"docs"},"Tutorials/tutorials-memory-chatbot":{"id":"Tutorials/tutorials-memory-chatbot","title":"Memory chatbot","description":"This flow extends the\xa0basic prompting flow\xa0with a Chat memory component that stores up to 100 previous chat messages and uses them to provide context for the current conversation.","sidebar":"docs"},"Tutorials/tutorials-sequential-agent":{"id":"Tutorials/tutorials-sequential-agent","title":"Sequential tasks agent","description":"Build a Sequential Tasks Agent flow for a multi-agent application using multiple Agent components.","sidebar":"docs"},"Tutorials/tutorials-travel-planning-agent":{"id":"Tutorials/tutorials-travel-planning-agent","title":"Travel planning agent","description":"Build a Travel Planning Agent flow for an agentic application using the multiple Tool-calling agents.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/2ab0d4f5.1c8e7815.js b/assets/js/2ab0d4f5.1c8e7815.js deleted file mode 100644 index fd5d0aee1f..0000000000 --- a/assets/js/2ab0d4f5.1c8e7815.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1845],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}},83640:(e,n,t)=>{t.r(n),t.d(n,{contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"type":"api","id":"simplified-run-flow","title":"Simplified Run Flow","description":"","slug":"/simplified-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","operationId":"simplified_run_flow_api_v1_run__flow_id_or_name__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id_or_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Id Or Name"}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stream"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value","description":"The input value"},"input_type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Input Type","description":"The input type","default":"chat"},"output_type":{"anyOf":[{"type":"string","enum":["chat","text","any","debug"]},{"type":"null"}],"title":"Output Type","description":"The output type","default":"chat"},"output_component":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Component","description":"If there are multiple output components, you can specify the component to get the output from.","default":""},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}],"description":"The tweaks"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"The session id"}},"type":"object","title":"SimplifiedAPIRequest"},{"type":"null"}],"title":"Input Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/{flow_id_or_name}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"info":{"title":"Langflow","version":"1.2.0"},"postman":{"name":"Simplified Run Flow","description":{"content":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","type":"text/plain"},"url":{"path":["api","v1","run",":flow_id_or_name"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"stream","value":"false"},{"disabled":false,"key":"user_id","value":""}],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id_or_name"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"input_value\\": \\"\\",\\n \\"input_type\\": \\"\\",\\n \\"output_type\\": \\"\\",\\n \\"output_component\\": \\"\\",\\n \\"tweaks\\": {\\n \\"Lorem1\\": \\"\\",\\n \\"ut6\\": \\"\\",\\n \\"sint_8e\\": \\"\\"\\n },\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/simplified-run-flow","previous":{"title":"Get All","permalink":"/api/get-all"},"next":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"}}');var s=t(74848),r=t(28453);const a={},o="Simplified Run Flow",l=[];function d(e){const n={h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"simplified-run-flow",children:"Simplified Run Flow"})}),"\n",(0,s.jsx)(n.p,{children:"Executes a specified flow by ID with support for streaming and telemetry."}),"\n",(0,s.jsx)(n.p,{children:"This endpoint executes a flow identified by ID or name, with options for streaming the response\nand tracking execution metrics. It handles both streaming and non-streaming execution modes."}),"\n",(0,s.jsx)(n.p,{children:"Args:\nbackground_tasks (BackgroundTasks): FastAPI background task manager\nflow (FlowRead | None): The flow to execute, loaded via dependency\ninput_request (SimplifiedAPIRequest | None): Input parameters for the flow\nstream (bool): Whether to stream the response\napi_key_user (UserRead): Authenticated user from API key\nrequest (Request): The incoming HTTP request"}),"\n",(0,s.jsx)(n.p,{children:"Returns:\nUnion[StreamingResponse, RunResponse]: Either a streaming response for real-time results\nor a RunResponse with the complete execution results"}),"\n",(0,s.jsx)(n.p,{children:"Raises:\nHTTPException: For flow not found (404) or invalid input (400)\nAPIException: For internal execution errors (500)"}),"\n",(0,s.jsx)(n.p,{children:"Notes:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Supports both streaming and non-streaming execution modes"}),"\n",(0,s.jsx)(n.li,{children:"Tracks execution time and success/failure via telemetry"}),"\n",(0,s.jsx)(n.li,{children:"Handles graceful client disconnection in streaming mode"}),"\n",(0,s.jsx)(n.li,{children:"Provides detailed error handling with appropriate HTTP status codes"}),"\n",(0,s.jsxs)(n.li,{children:["In streaming mode, uses EventManager to handle events:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'"add_message": New messages during execution'}),"\n",(0,s.jsx)(n.li,{children:'"token": Individual tokens during streaming'}),"\n",(0,s.jsx)(n.li,{children:'"end": Final execution result'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"flow_id_or_name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Flow Id Or Name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Query Parameters"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"stream"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"user_id"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" User Id"})]})})]})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Request Body "}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"200"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Successful Response"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]})})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"422"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Validation Error"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"detail"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"loc"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"msg"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"type"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/2ab0d4f5.f2f3ed71.js b/assets/js/2ab0d4f5.f2f3ed71.js new file mode 100644 index 0000000000..6806641eb7 --- /dev/null +++ b/assets/js/2ab0d4f5.f2f3ed71.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1845],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}},83640:(e,n,t)=>{t.r(n),t.d(n,{contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"type":"api","id":"simplified-run-flow","title":"Simplified Run Flow","description":"","slug":"/simplified-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","operationId":"simplified_run_flow_api_v1_run__flow_id_or_name__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id_or_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Id Or Name"}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stream"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value","description":"The input value"},"input_type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Input Type","description":"The input type","default":"chat"},"output_type":{"anyOf":[{"type":"string","enum":["chat","text","any","debug"]},{"type":"null"}],"title":"Output Type","description":"The output type","default":"chat"},"output_component":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Component","description":"If there are multiple output components, you can specify the component to get the output from.","default":""},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}],"description":"The tweaks"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"The session id"}},"type":"object","title":"SimplifiedAPIRequest"},{"type":"null"}],"title":"Input Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/{flow_id_or_name}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"info":{"title":"Langflow","version":"1.2.0"},"postman":{"name":"Simplified Run Flow","description":{"content":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","type":"text/plain"},"url":{"path":["api","v1","run",":flow_id_or_name"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"stream","value":"false"},{"disabled":false,"key":"user_id","value":""}],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id_or_name"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"input_value\\": \\"\\",\\n \\"input_type\\": \\"\\",\\n \\"output_type\\": \\"\\",\\n \\"output_component\\": \\"\\",\\n \\"tweaks\\": {\\n \\"ex_09\\": \\"\\",\\n \\"consequat__\\": \\"\\"\\n },\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/simplified-run-flow","previous":{"title":"Get All","permalink":"/api/get-all"},"next":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"}}');var s=t(74848),r=t(28453);const a={},o="Simplified Run Flow",l=[];function d(e){const n={h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"simplified-run-flow",children:"Simplified Run Flow"})}),"\n",(0,s.jsx)(n.p,{children:"Executes a specified flow by ID with support for streaming and telemetry."}),"\n",(0,s.jsx)(n.p,{children:"This endpoint executes a flow identified by ID or name, with options for streaming the response\nand tracking execution metrics. It handles both streaming and non-streaming execution modes."}),"\n",(0,s.jsx)(n.p,{children:"Args:\nbackground_tasks (BackgroundTasks): FastAPI background task manager\nflow (FlowRead | None): The flow to execute, loaded via dependency\ninput_request (SimplifiedAPIRequest | None): Input parameters for the flow\nstream (bool): Whether to stream the response\napi_key_user (UserRead): Authenticated user from API key\nrequest (Request): The incoming HTTP request"}),"\n",(0,s.jsx)(n.p,{children:"Returns:\nUnion[StreamingResponse, RunResponse]: Either a streaming response for real-time results\nor a RunResponse with the complete execution results"}),"\n",(0,s.jsx)(n.p,{children:"Raises:\nHTTPException: For flow not found (404) or invalid input (400)\nAPIException: For internal execution errors (500)"}),"\n",(0,s.jsx)(n.p,{children:"Notes:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Supports both streaming and non-streaming execution modes"}),"\n",(0,s.jsx)(n.li,{children:"Tracks execution time and success/failure via telemetry"}),"\n",(0,s.jsx)(n.li,{children:"Handles graceful client disconnection in streaming mode"}),"\n",(0,s.jsx)(n.li,{children:"Provides detailed error handling with appropriate HTTP status codes"}),"\n",(0,s.jsxs)(n.li,{children:["In streaming mode, uses EventManager to handle events:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'"add_message": New messages during execution'}),"\n",(0,s.jsx)(n.li,{children:'"token": Individual tokens during streaming'}),"\n",(0,s.jsx)(n.li,{children:'"end": Final execution result'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"flow_id_or_name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Flow Id Or Name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Query Parameters"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"stream"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"user_id"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" User Id"})]})})]})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Request Body "}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"200"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Successful Response"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]})})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"422"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Validation Error"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"detail"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"loc"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"msg"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"type"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/3b356402.9691cfec.js b/assets/js/3b356402.9691cfec.js new file mode 100644 index 0000000000..da58056a1c --- /dev/null +++ b/assets/js/3b356402.9691cfec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8304],{1276:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>d,assets:()=>l,chCodeConfig:()=>h,contentTitle:()=>a,default:()=>g,frontMatter:()=>s,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"Configuration/configuration-security-best-practices","title":"Security best practices","description":"This guide outlines security best practices for deploying and managing Langflow.","source":"@site/docs/Configuration/configuration-security-best-practices.md","sourceDirName":"Configuration","slug":"/configuration-security-best-practices","permalink":"/configuration-security-best-practices","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Security best practices","slug":"/configuration-security-best-practices"},"sidebar":"docs","previous":{"title":"Environment variables","permalink":"/environment-variables"},"next":{"title":"Docker","permalink":"/deployment-docker"}}');var o=n(74848),i=n(28453),c=n(24754);const s={title:"Security best practices",slug:"/configuration-security-best-practices"},a=void 0,l={},d={annotations:c.hk,Code:c.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Secret key protection",id:"secret-key-protection",level:2},{value:"API keys and credentials",id:"api-keys-and-credentials",level:2},{value:"Database file protection",id:"database-file-protection",level:2}];function p(e){const t={code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return d||f("CH",!1),d.Code||f("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsx)(t.p,{children:"This guide outlines security best practices for deploying and managing Langflow."}),"\n",(0,o.jsx)(t.h2,{id:"secret-key-protection",children:"Secret key protection"}),"\n",(0,o.jsx)(t.p,{children:"The secret key is critical for encrypting sensitive data in Langflow. Follow these guidelines:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Always use a custom secret key in production:"}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_SECRET_KEY",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"your-secure-secret-key",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Store the secret key securely:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Use environment variables or secure secret management systems."}),"\n",(0,o.jsx)(t.li,{children:"Never commit the secret key to version control."}),"\n",(0,o.jsx)(t.li,{children:"Regularly rotate the secret key."}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Use the default secret key locations:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["macOS: ",(0,o.jsx)(t.code,{children:"~/Library/Caches/langflow/secret_key"})]}),"\n",(0,o.jsxs)(t.li,{children:["Linux: ",(0,o.jsx)(t.code,{children:"~/.cache/langflow/secret_key"})]}),"\n",(0,o.jsxs)(t.li,{children:["Windows: ",(0,o.jsx)(t.code,{children:"%USERPROFILE%\\AppData\\Local\\langflow\\secret_key"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"api-keys-and-credentials",children:"API keys and credentials"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Store API keys and credentials as encrypted global variables."}),"\n",(0,o.jsx)(t.li,{children:"Use the Credential type for sensitive information."}),"\n",(0,o.jsx)(t.li,{children:"Implement proper access controls for users who can view/edit credentials."}),"\n",(0,o.jsx)(t.li,{children:"Regularly audit and rotate API keys."}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"database-file-protection",children:"Database file protection"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Store the database in a secure location:"}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"true",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"/secure/path/to/config",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Use the default database locations:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["macOS/Linux: ",(0,o.jsx)(t.code,{children:"PYTHON_LOCATION/site-packages/langflow/langflow.db"})]}),"\n",(0,o.jsxs)(t.li,{children:["Windows: ",(0,o.jsx)(t.code,{children:"PYTHON_LOCATION\\Lib\\site-packages\\langflow\\langflow.db"})]}),"\n"]}),"\n"]}),"\n"]})]})}function g(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}function f(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/3b356402.d2fd2ec3.js b/assets/js/3b356402.d2fd2ec3.js deleted file mode 100644 index f44670f83c..0000000000 --- a/assets/js/3b356402.d2fd2ec3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8304],{1276:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>d,assets:()=>l,chCodeConfig:()=>h,contentTitle:()=>a,default:()=>g,frontMatter:()=>s,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"Configuration/configuration-security-best-practices","title":"Security best practices","description":"This guide outlines security best practices for deploying and managing Langflow.","source":"@site/docs/Configuration/configuration-security-best-practices.md","sourceDirName":"Configuration","slug":"/configuration-security-best-practices","permalink":"/configuration-security-best-practices","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Security best practices","slug":"/configuration-security-best-practices"},"sidebar":"docs","previous":{"title":"Environment variables","permalink":"/environment-variables"},"next":{"title":"Docker","permalink":"/Deployment/deployment-docker"}}');var o=n(74848),i=n(28453),c=n(24754);const s={title:"Security best practices",slug:"/configuration-security-best-practices"},a=void 0,l={},d={annotations:c.hk,Code:c.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Secret key protection",id:"secret-key-protection",level:2},{value:"API keys and credentials",id:"api-keys-and-credentials",level:2},{value:"Database file protection",id:"database-file-protection",level:2}];function p(e){const t={code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return d||f("CH",!1),d.Code||f("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsx)(t.p,{children:"This guide outlines security best practices for deploying and managing Langflow."}),"\n",(0,o.jsx)(t.h2,{id:"secret-key-protection",children:"Secret key protection"}),"\n",(0,o.jsx)(t.p,{children:"The secret key is critical for encrypting sensitive data in Langflow. Follow these guidelines:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Always use a custom secret key in production:"}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_SECRET_KEY",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"your-secure-secret-key",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Store the secret key securely:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Use environment variables or secure secret management systems."}),"\n",(0,o.jsx)(t.li,{children:"Never commit the secret key to version control."}),"\n",(0,o.jsx)(t.li,{children:"Regularly rotate the secret key."}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Use the default secret key locations:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["macOS: ",(0,o.jsx)(t.code,{children:"~/Library/Caches/langflow/secret_key"})]}),"\n",(0,o.jsxs)(t.li,{children:["Linux: ",(0,o.jsx)(t.code,{children:"~/.cache/langflow/secret_key"})]}),"\n",(0,o.jsxs)(t.li,{children:["Windows: ",(0,o.jsx)(t.code,{children:"%USERPROFILE%\\AppData\\Local\\langflow\\secret_key"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"api-keys-and-credentials",children:"API keys and credentials"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Store API keys and credentials as encrypted global variables."}),"\n",(0,o.jsx)(t.li,{children:"Use the Credential type for sensitive information."}),"\n",(0,o.jsx)(t.li,{children:"Implement proper access controls for users who can view/edit credentials."}),"\n",(0,o.jsx)(t.li,{children:"Regularly audit and rotate API keys."}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"database-file-protection",children:"Database file protection"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Store the database in a secure location:"}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_SAVE_DB_IN_CONFIG_DIR",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"true",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"/secure/path/to/config",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Use the default database locations:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["macOS/Linux: ",(0,o.jsx)(t.code,{children:"PYTHON_LOCATION/site-packages/langflow/langflow.db"})]}),"\n",(0,o.jsxs)(t.li,{children:["Windows: ",(0,o.jsx)(t.code,{children:"PYTHON_LOCATION\\Lib\\site-packages\\langflow\\langflow.db"})]}),"\n"]}),"\n"]}),"\n"]})]})}function g(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}function f(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/44dfcf75.792f1012.js b/assets/js/44dfcf75.2ae9abad.js similarity index 78% rename from assets/js/44dfcf75.792f1012.js rename to assets/js/44dfcf75.2ae9abad.js index 31efad0083..b50e444e96 100644 --- a/assets/js/44dfcf75.792f1012.js +++ b/assets/js/44dfcf75.2ae9abad.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8598],{28453:(M,j,L)=>{L.d(j,{R:()=>T,x:()=>I});var N=L(96540);const u={},D=N.createContext(u);function T(M){const j=N.useContext(D);return N.useMemo((function(){return"function"==typeof M?M(j):{...j,...M}}),[j,M])}function I(M){let j;return j=M.disableParentContext?"function"==typeof M.components?M.components(u):M.components||u:T(M.components),N.createElement(D.Provider,{value:j},M.children)}},70234:(M,j,L)=>{L.d(j,{A:()=>N});const N="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgzIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTgzIDQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0wIDZhNiA2IDAgMCAxIDYtNmgxNzFhNiA2IDAgMCAxIDYgNnYyOGE2IDYgMCAwIDEtNiA2SDZhNiA2IDAgMCAxLTYtNlY2WiIgZmlsbD0idXJsKCM1NXo4YXBmeHZhKSIvPjxwYXRoIGQ9Ik01MC40OTQgMjVjMy4xMDMgMCA0Ljk4Mi0xLjkxOSA0Ljk4Mi01LjEgMC0zLjE3My0xLjg4LTUuMDgyLTQuOTUyLTUuMDgyaC0zLjY0VjI1aDMuNjFabS0xLjQ1Ni0xLjg0NXYtNi40OTJoMS4zNzJjMS45MDkgMCAyLjkxOC45NzQgMi45MTggMy4yMzYgMCAyLjI3Mi0xLjAxIDMuMjU2LTIuOTIzIDMuMjU2aC0xLjM2N1pNNjAuNTEgMjUuMTVjMS44ODkgMCAzLjE2Mi0uOTIgMy40Ni0yLjMzN2wtMS45NTktLjEyOWMtLjIxNC41ODItLjc2Ljg4NS0xLjQ2Ni44ODUtMS4wNiAwLTEuNzMtLjctMS43My0xLjg0di0uMDA0aDUuMnYtLjU4MmMwLTIuNTk1LTEuNTcxLTMuODc4LTMuNTktMy44NzgtMi4yNDcgMC0zLjcwNCAxLjU5Ni0zLjcwNCAzLjk1MyAwIDIuNDIgMS40MzcgMy45MzIgMy43ODkgMy45MzJabS0xLjY5Ni00LjczOGMuMDQ1LS44Ny43MDctMS41NjYgMS42NDYtMS41NjYuOTIgMCAxLjU1Ni42NTYgMS41NjEgMS41NjZoLTMuMjA2Wm02LjU4MyA3LjQ1M2gyLjExOHYtNC4wODdoLjA2NGMuMjk0LjYzNi45MzUgMS4zNDcgMi4xNjggMS4zNDcgMS43NCAwIDMuMDk3LTEuMzc3IDMuMDk3LTMuOTMyIDAtMi42MjUtMS40MTctMy45MjgtMy4wOTItMy45MjgtMS4yNzggMC0xLjg5Ljc2LTIuMTczIDEuMzgyaC0uMDk0di0xLjI4MmgtMi4wODh2MTAuNVptMi4wNzMtNi42ODJjMC0xLjM2Mi41NzctMi4yMzIgMS42MDYtMi4yMzIgMS4wNDkgMCAxLjYwNi45MSAxLjYwNiAyLjIzMiAwIDEuMzMyLS41NjcgMi4yNTctMS42MDYgMi4yNTctMS4wMiAwLTEuNjA2LS44OTUtMS42MDYtMi4yNTdabTguOTA0LTYuMzY0aC0yLjExOFYyNWgyLjExOFYxNC44MThabTUuMTQ3IDEwLjMzMWMyLjMxNyAwIDMuNzU4LTEuNTg2IDMuNzU4LTMuOTM3IDAtMi4zNjctMS40NDEtMy45NDgtMy43NTgtMy45NDhzLTMuNzU5IDEuNTgxLTMuNzU5IDMuOTQ4YzAgMi4zNTEgMS40NDIgMy45MzcgMy43NTkgMy45MzdabS4wMS0xLjY0Yy0xLjA2OSAwLTEuNjE2LS45OC0xLjYxNi0yLjMxMiAwLTEuMzMzLjU0Ny0yLjMxNyAxLjYxNi0yLjMxNyAxLjA0OSAwIDEuNTk2Ljk4NCAxLjU5NiAyLjMxNyAwIDEuMzMyLS41NDcgMi4zMTItMS41OTYgMi4zMTJabTYuMTczIDQuMzU1YzEuNTc2IDAgMi40MTItLjgwNiAyLjg0NC0yLjAzOWwyLjk2OC04LjQ1MS0yLjI0Mi0uMDEtMS41OTYgNS42MDhoLS4wOGwtMS41OC01LjYwOEg4NS43OWwyLjc0IDcuODU1LS4xMjUuMzIzYy0uMjc4LjcxNi0uODEuNzUtMS41NTYuNTIybC0uNDc3IDEuNThjLjMwMy4xMy43OTUuMjIgMS4zMzIuMjJabTEzLjU4Ny0yLjcxNWMyLjMxNiAwIDMuNzU4LTEuNTg2IDMuNzU4LTMuOTM3IDAtMi4zNjctMS40NDItMy45NDgtMy43NTgtMy45NDgtMi4zMTcgMC0zLjc1OSAxLjU4MS0zLjc1OSAzLjk0OCAwIDIuMzUxIDEuNDQyIDMuOTM3IDMuNzU5IDMuOTM3Wm0uMDA5LTEuNjRjLTEuMDY4IDAtMS42MTUtLjk4LTEuNjE1LTIuMzEyIDAtMS4zMzMuNTQ3LTIuMzE3IDEuNjE1LTIuMzE3IDEuMDQ5IDAgMS41OTYuOTg0IDEuNTk2IDIuMzE3IDAgMS4zMzItLjU0NyAyLjMxMi0xLjU5NiAyLjMxMlptNy4yNDQtMi45MjRjLjAwNS0uOTg0LjU5Mi0xLjU2IDEuNDQ3LTEuNTYuODUgMCAxLjM2Mi41NTYgMS4zNTcgMS40OVYyNWgyLjExOHYtNC44NjJjMC0xLjc4LTEuMDQ0LTIuODc0LTIuNjM1LTIuODc0LTEuMTMzIDAtMS45NTQuNTU3LTIuMjk3IDEuNDQ3aC0uMDg5di0xLjM0N2gtMi4wMTlWMjVoMi4xMTh2LTQuNDE1Wk0xMTguNDE2IDI1aDIuMTUzdi0zLjYxaDEuNTcxbDEuOTI5IDMuNjFoMi4zNzZsLTIuMTYyLTMuOTU3YzEuMTU4LS40OTcgMS43OTktMS41MDcgMS43OTktMi44OTkgMC0yLjAyMy0xLjMzNy0zLjMyNi0zLjY0OS0zLjMyNmgtNC4wMTdWMjVabTIuMTUzLTUuMzR2LTMuMDgyaDEuNDUyYzEuMjQyIDAgMS44NDQuNTUyIDEuODQ0IDEuNTY2IDAgMS4wMS0uNjAyIDEuNTE3LTEuODM0IDEuNTE3aC0xLjQ2MlptOS4xNzIgNS40ODRjMS4xMjkgMCAxLjg2LS40OTIgMi4yMzMtMS4yMDNoLjA1OVYyNWgyLjAwOXYtNS4xNWMwLTEuODItMS41NDEtMi41ODYtMy4yNDItMi41ODYtMS44MjkgMC0zLjAzMi44NzUtMy4zMjYgMi4yNjdsMS45NTkuMTZjLjE0NC0uNTA4LjU5Ny0uODggMS4zNTctLjg4LjcyMSAwIDEuMTM0LjM2MiAxLjEzNC45ODl2LjAzYzAgLjQ5Mi0uNTIyLjU1Ni0xLjg0OS42ODYtMS41MTIuMTM5LTIuODY5LjY0Ni0yLjg2OSAyLjM1MSAwIDEuNTEyIDEuMDc5IDIuMjc3IDIuNTM1IDIuMjc3Wm0uNjA3LTEuNDYxYy0uNjUxIDAtMS4xMTktLjMwNC0xLjExOS0uODg1IDAtLjU5Ny40OTMtLjg5IDEuMjM4LS45OTUuNDYzLS4wNjQgMS4yMTgtLjE3NCAxLjQ3Mi0uMzQzdi44MWMwIC44MDEtLjY2MSAxLjQxMy0xLjU5MSAxLjQxM1pNMTM1LjY4NSAyNWgyLjExOHYtNy42MzZoLTIuMTE4VjI1Wm0xLjA2NC04LjYyYy42MzEgMCAxLjE0OC0uNDgzIDEuMTQ4LTEuMDc1IDAtLjU4Ni0uNTE3LTEuMDY5LTEuMTQ4LTEuMDY5LS42MjYgMC0xLjE0NC40ODMtMS4xNDQgMS4wNyAwIC41OTEuNTE4IDEuMDczIDEuMTQ0IDEuMDczWm00Ljg2OC0xLjU2MmgtMi4xMThWMjVoMi4xMThWMTQuODE4Wk0xNDQuODIgMjVoMi4yMzhsMS4zMTItNC44MDNoLjA5NEwxNDkuNzc3IDI1aDIuMjQybDIuMDczLTcuNjM2aC0yLjEzN2wtMS4xNjQgNS4xaC0uMDY0bC0xLjI1My01LjFoLTIuMTAzbC0xLjIzMyA1LjEzaC0uMDdsLTEuMTgzLTUuMTNoLTIuMTQzTDE0NC44MiAyNVptMTIuNTguMTQ0YzEuMTI4IDAgMS44NTktLjQ5MiAyLjIzMi0xLjIwM2guMDZWMjVoMi4wMDh2LTUuMTVjMC0xLjgyLTEuNTQxLTIuNTg2LTMuMjQxLTIuNTg2LTEuODMgMC0zLjAzMy44NzUtMy4zMjYgMi4yNjdsMS45NTguMTZjLjE0NS0uNTA4LjU5Ny0uODggMS4zNTgtLjg4LjcyMSAwIDEuMTMzLjM2MiAxLjEzMy45ODl2LjAzYzAgLjQ5Mi0uNTIyLjU1Ni0xLjg0OS42ODYtMS41MTIuMTM5LTIuODY5LjY0Ni0yLjg2OSAyLjM1MSAwIDEuNTEyIDEuMDc5IDIuMjc3IDIuNTM2IDIuMjc3Wm0uNjA2LTEuNDYxYy0uNjUxIDAtMS4xMTgtLjMwNC0xLjExOC0uODg1IDAtLjU5Ny40OTItLjg5IDEuMjM4LS45OTUuNDYyLS4wNjQgMS4yMTgtLjE3NCAxLjQ3MS0uMzQzdi44MWMwIC44MDEtLjY2MSAxLjQxMy0xLjU5MSAxLjQxM1ptNi4zNzEgNC4xOGMxLjU3NiAwIDIuNDEyLS44MDUgMi44NDQtMi4wMzhsMi45NjgtOC40NTEtMi4yNDItLjAxLTEuNTk2IDUuNjA4aC0uMDhsLTEuNTgtNS42MDhoLTIuMjI4bDIuNzQgNy44NTUtLjEyNS4zMjNjLS4yNzguNzE2LS44MS43NS0xLjU1Ni41MjJsLS40NzcgMS41OGMuMzAzLjEzLjc5NS4yMiAxLjMzMi4yMloiIGZpbGw9IiNmZmYiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEzLjU1NCAxNC4xMDVDMTUuNjE0IDEwLjQ2NCAxOS41MTYgOCAyNCA4YzYuNjI4IDAgMTIgNS4zNzMgMTIgMTJhMTEuOTY3IDExLjk2NyAwIDAgMS0uNjEgMy43NjRIMTIuNjFhMTEuODk2IDExLjg5NiAwIDAgMS0uNDUxLTEuODkzbC4yMTIgMS4wMDhoMTYuNjkzYzEuMDY0IDAgMS45NDMtLjU0NSAyLjM1LTEuNDU3LjQ0NC0uOTk0LjI1Ny0yLjAzLS4zOTYtMi45MzMtLjcwNS0uOTc1LTEuODg5LTIuMzQzLTIuNzA5LTIuOTY0LTEuNTEtMS4xNDMtMy40My0xLjMxLTQuOTkxLTEuMzYzbC0uNDQ5LS4wMTYtLjEzLS4wMDZjLS42MjUtLjAyNy0uOTY1LS4wNDEtNC40MzgtLjA0MXYuMDAxcy0zLjEzNy4wMDItNC43NDcuMDA1Wm0tMS41MjggNS4zNzljLjAxNy0uNDA1LjA1NC0uODA4LjExMS0xLjIwOGg5LjU3M1YxNy4wNmgtOS4zMzJhLjE0NS4xNDUgMCAwIDEtLjAwMy4wMTJsLS4wMDMuMDEtLjIxNCAxLjA1NWExMi4wNiAxMi4wNiAwIDAgMSAuNzk3LTIuODE0YzEuNzk4LS4wMDUgMy42NDUtLjAxIDUuMzQzLS4wMSAzLjE4IDAgMy43MjEuMDE0IDQuNTIuMDQ3LjIxNy4wMDkuNDI4LjAxNS42MzUuMDIgMi4wNzYuMDU1IDMuNzE4LjA5OCA2LjU0OSAzLjc1OC4wODYuMTEuMTcyLjIyMS4yMzUuMzQ2SDEyLjAyNlptMS40ODQtNS4zMDNjLS4yMDUuMzctLjM5Ljc1LS41NTUgMS4xNDJoLS4wMWMuMTY2LS4zOTMuMzU5LS43NzEuNTY1LTEuMTQyWm0uMDQxLS4wNzNabS0xLjUxNiA2LjU5M2gxOC4zNDZjLS4xMzguNTMyLS41Ni45Ni0xLjMxNS45NkgxMi4xMjhhMTIuMzE1IDEyLjMxNSAwIDAgMS0uMDkzLS45NlptLjU4MiAzLjA3OWMuMTM4LjQwNy4yOTYuODA4LjQ3NSAxLjE5OUgzNC45MUMzMy4wMTcgMjkuMTE5IDI4Ljg1IDMyIDI0IDMyYy01LjMwNSAwLTkuNzk4LTMuNDQ3LTExLjM4NC04LjIyWm0tLjYwNy00LjAwNS4wMS0uMTU4di43NjNjLS4wMDItLjA1NC0uMDA2LS4xMDctLjAxLS4xNi0uMDA1LS4wNzQtLjAxLS4xNDctLjAxLS4yMjIgMC0uMDc1LjAwNS0uMTQ5LjAxLS4yMjNaIiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy41NTQgMTQuMTA1QzE1LjYxNCAxMC40NjQgMTkuNTE2IDggMjQgOGM2LjYyOCAwIDEyIDUuMzczIDEyIDEyYTExLjk2NyAxMS45NjcgMCAwIDEtLjYxIDMuNzY0SDEyLjYxYTExLjg5NiAxMS44OTYgMCAwIDEtLjQ1MS0xLjg5M2wuMjEyIDEuMDA4aDE2LjY5M2MxLjA2NCAwIDEuOTQzLS41NDUgMi4zNS0xLjQ1Ny40NDQtLjk5NC4yNTctMi4wMy0uMzk2LTIuOTMzLS43MDUtLjk3NS0xLjg4OS0yLjM0My0yLjcwOS0yLjk2NC0xLjUxLTEuMTQzLTMuNDMtMS4zMS00Ljk5MS0xLjM2M2wtLjQ0OS0uMDE2LS4xMy0uMDA2Yy0uNjI1LS4wMjctLjk2NS0uMDQxLTQuNDM4LS4wNDF2LjAwMXMtMy4xMzcuMDAyLTQuNzQ3LjAwNVptLTEuNTI4IDUuMzc5Yy4wMTctLjQwNS4wNTQtLjgwOC4xMTEtMS4yMDhoOS41NzNWMTcuMDZoLTkuMzMyYS4xNDUuMTQ1IDAgMCAxLS4wMDMuMDEybC0uMDAzLjAxLS4yMTQgMS4wNTVhMTIuMDYgMTIuMDYgMCAwIDEgLjc5Ny0yLjgxNGMxLjc5OC0uMDA1IDMuNjQ1LS4wMSA1LjM0My0uMDEgMy4xOCAwIDMuNzIxLjAxNCA0LjUyLjA0Ny4yMTcuMDA5LjQyOC4wMTUuNjM1LjAyIDIuMDc2LjA1NSAzLjcxOC4wOTggNi41NDkgMy43NTguMDg2LjExLjE3Mi4yMjEuMjM1LjM0NkgxMi4wMjZabTEuNDg0LTUuMzAzYy0uMjA1LjM3LS4zOS43NS0uNTU1IDEuMTQyaC0uMDFjLjE2Ni0uMzkzLjM1OS0uNzcxLjU2NS0xLjE0MlptLjA0MS0uMDczWm0tMS41MTYgNi41OTNoMTguMzQ2Yy0uMTM4LjUzMi0uNTYuOTYtMS4zMTUuOTZIMTIuMTI4YTEyLjMxNSAxMi4zMTUgMCAwIDEtLjA5My0uOTZabS41ODIgMy4wNzljLjEzOC40MDcuMjk2LjgwOC40NzUgMS4xOTlIMzQuOTFDMzMuMDE3IDI5LjExOSAyOC44NSAzMiAyNCAzMmMtNS4zMDUgMC05Ljc5OC0zLjQ0Ny0xMS4zODQtOC4yMlptLS42MDctNC4wMDUuMDEtLjE1OHYuNzYzYy0uMDAyLS4wNTQtLjAwNi0uMTA3LS4wMS0uMTYtLjAwNS0uMDc0LS4wMS0uMTQ3LS4wMS0uMjIyIDAtLjA3NS4wMDUtLjE0OS4wMS0uMjIzWiIgZmlsbD0idXJsKCM3ZnFyN3Btb2tiKSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iNTV6OGFwZnh2YSIgeDE9IjE4MSIgeTE9IjAiIHgyPSIyNiIgeTI9IjM3LjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjQjYzQkNFIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNTAxNkExIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9IjdmcXI3cG1va2IiIHgxPSIxOS41IiB5MT0iMzIiIHgyPSIxOS41IiB5Mj0iOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM1QjFCQTciLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiIHN0b3Atb3BhY2l0eT0iMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg=="},71742:(M,j,L)=>{L.r(j),L.d(j,{assets:()=>t,contentTitle:()=>I,default:()=>g,frontMatter:()=>T,metadata:()=>N,toc:()=>y});const N=JSON.parse('{"id":"Deployment/deployment-railway","title":"Railway","description":"Deploy on Railway","source":"@site/docs/Deployment/deployment-railway.md","sourceDirName":"Deployment","slug":"/deployment-railway","permalink":"/deployment-railway","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Railway","slug":"/deployment-railway"},"sidebar":"docs","previous":{"title":"Kubernetes","permalink":"/deployment-kubernetes"},"next":{"title":"Render","permalink":"/deployment-render"}}');var u=L(74848),D=L(28453);const T={title:"Railway",slug:"/deployment-railway"},I=void 0,t={},y=[{value:"Deploy on Railway",id:"a9a1ce4d39e74cc29aef4d30c6172d10",level:2}];function i(M){const j={a:"a",h2:"h2",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,D.R)(),...M.components};return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(j.h2,{id:"a9a1ce4d39e74cc29aef4d30c6172d10",children:"Deploy on Railway"}),"\n",(0,u.jsx)(j.hr,{}),"\n",(0,u.jsx)(j.p,{children:"Railway is a cloud infrastructure platform that enables developers to deploy and manage applications effortlessly. It provides an intuitive interface, seamless integrations, and powerful features like auto-deploy from GitHub, managed databases, and automatic scaling."}),"\n",(0,u.jsx)(j.p,{children:"Deploying Langflow to Railway involves a few simple steps:"}),"\n",(0,u.jsxs)(j.ol,{children:["\n",(0,u.jsxs)(j.li,{children:["\n",(0,u.jsxs)(j.p,{children:[(0,u.jsx)(j.strong,{children:"Click the Button Below"}),": Start by clicking the deployment button provided below. This will redirect you to the Railway platform."]}),"\n",(0,u.jsx)(j.p,{children:(0,u.jsx)(j.a,{href:"https://railway.app/template/JMXEWp?referralCode=MnPSdg",children:(0,u.jsx)(j.img,{alt:"Deploy on Railway",src:L(70234).A+"",width:"183",height:"40"})})}),"\n"]}),"\n",(0,u.jsxs)(j.li,{children:["\n",(0,u.jsxs)(j.p,{children:[(0,u.jsx)(j.strong,{children:"Deploy"}),": Proceed to deploy your Langflow instance. Click Deploy Now to deploy the instance. Railway will handle the rest, including setting up the infrastructure, deploying the Langflow instance, and starting the application."]}),"\n"]}),"\n"]}),"\n",(0,u.jsx)(j.p,{children:"By following these steps, your Langflow instance will be successfully deployed on Railway."})]})}function g(M={}){const{wrapper:j}={...(0,D.R)(),...M.components};return j?(0,u.jsx)(j,{...M,children:(0,u.jsx)(i,{...M})}):i(M)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8598],{28453:(M,j,L)=>{L.d(j,{R:()=>T,x:()=>I});var N=L(96540);const u={},D=N.createContext(u);function T(M){const j=N.useContext(D);return N.useMemo((function(){return"function"==typeof M?M(j):{...j,...M}}),[j,M])}function I(M){let j;return j=M.disableParentContext?"function"==typeof M.components?M.components(u):M.components||u:T(M.components),N.createElement(D.Provider,{value:j},M.children)}},70234:(M,j,L)=>{L.d(j,{A:()=>N});const N="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgzIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTgzIDQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0wIDZhNiA2IDAgMCAxIDYtNmgxNzFhNiA2IDAgMCAxIDYgNnYyOGE2IDYgMCAwIDEtNiA2SDZhNiA2IDAgMCAxLTYtNlY2WiIgZmlsbD0idXJsKCM1NXo4YXBmeHZhKSIvPjxwYXRoIGQ9Ik01MC40OTQgMjVjMy4xMDMgMCA0Ljk4Mi0xLjkxOSA0Ljk4Mi01LjEgMC0zLjE3My0xLjg4LTUuMDgyLTQuOTUyLTUuMDgyaC0zLjY0VjI1aDMuNjFabS0xLjQ1Ni0xLjg0NXYtNi40OTJoMS4zNzJjMS45MDkgMCAyLjkxOC45NzQgMi45MTggMy4yMzYgMCAyLjI3Mi0xLjAxIDMuMjU2LTIuOTIzIDMuMjU2aC0xLjM2N1pNNjAuNTEgMjUuMTVjMS44ODkgMCAzLjE2Mi0uOTIgMy40Ni0yLjMzN2wtMS45NTktLjEyOWMtLjIxNC41ODItLjc2Ljg4NS0xLjQ2Ni44ODUtMS4wNiAwLTEuNzMtLjctMS43My0xLjg0di0uMDA0aDUuMnYtLjU4MmMwLTIuNTk1LTEuNTcxLTMuODc4LTMuNTktMy44NzgtMi4yNDcgMC0zLjcwNCAxLjU5Ni0zLjcwNCAzLjk1MyAwIDIuNDIgMS40MzcgMy45MzIgMy43ODkgMy45MzJabS0xLjY5Ni00LjczOGMuMDQ1LS44Ny43MDctMS41NjYgMS42NDYtMS41NjYuOTIgMCAxLjU1Ni42NTYgMS41NjEgMS41NjZoLTMuMjA2Wm02LjU4MyA3LjQ1M2gyLjExOHYtNC4wODdoLjA2NGMuMjk0LjYzNi45MzUgMS4zNDcgMi4xNjggMS4zNDcgMS43NCAwIDMuMDk3LTEuMzc3IDMuMDk3LTMuOTMyIDAtMi42MjUtMS40MTctMy45MjgtMy4wOTItMy45MjgtMS4yNzggMC0xLjg5Ljc2LTIuMTczIDEuMzgyaC0uMDk0di0xLjI4MmgtMi4wODh2MTAuNVptMi4wNzMtNi42ODJjMC0xLjM2Mi41NzctMi4yMzIgMS42MDYtMi4yMzIgMS4wNDkgMCAxLjYwNi45MSAxLjYwNiAyLjIzMiAwIDEuMzMyLS41NjcgMi4yNTctMS42MDYgMi4yNTctMS4wMiAwLTEuNjA2LS44OTUtMS42MDYtMi4yNTdabTguOTA0LTYuMzY0aC0yLjExOFYyNWgyLjExOFYxNC44MThabTUuMTQ3IDEwLjMzMWMyLjMxNyAwIDMuNzU4LTEuNTg2IDMuNzU4LTMuOTM3IDAtMi4zNjctMS40NDEtMy45NDgtMy43NTgtMy45NDhzLTMuNzU5IDEuNTgxLTMuNzU5IDMuOTQ4YzAgMi4zNTEgMS40NDIgMy45MzcgMy43NTkgMy45MzdabS4wMS0xLjY0Yy0xLjA2OSAwLTEuNjE2LS45OC0xLjYxNi0yLjMxMiAwLTEuMzMzLjU0Ny0yLjMxNyAxLjYxNi0yLjMxNyAxLjA0OSAwIDEuNTk2Ljk4NCAxLjU5NiAyLjMxNyAwIDEuMzMyLS41NDcgMi4zMTItMS41OTYgMi4zMTJabTYuMTczIDQuMzU1YzEuNTc2IDAgMi40MTItLjgwNiAyLjg0NC0yLjAzOWwyLjk2OC04LjQ1MS0yLjI0Mi0uMDEtMS41OTYgNS42MDhoLS4wOGwtMS41OC01LjYwOEg4NS43OWwyLjc0IDcuODU1LS4xMjUuMzIzYy0uMjc4LjcxNi0uODEuNzUtMS41NTYuNTIybC0uNDc3IDEuNThjLjMwMy4xMy43OTUuMjIgMS4zMzIuMjJabTEzLjU4Ny0yLjcxNWMyLjMxNiAwIDMuNzU4LTEuNTg2IDMuNzU4LTMuOTM3IDAtMi4zNjctMS40NDItMy45NDgtMy43NTgtMy45NDgtMi4zMTcgMC0zLjc1OSAxLjU4MS0zLjc1OSAzLjk0OCAwIDIuMzUxIDEuNDQyIDMuOTM3IDMuNzU5IDMuOTM3Wm0uMDA5LTEuNjRjLTEuMDY4IDAtMS42MTUtLjk4LTEuNjE1LTIuMzEyIDAtMS4zMzMuNTQ3LTIuMzE3IDEuNjE1LTIuMzE3IDEuMDQ5IDAgMS41OTYuOTg0IDEuNTk2IDIuMzE3IDAgMS4zMzItLjU0NyAyLjMxMi0xLjU5NiAyLjMxMlptNy4yNDQtMi45MjRjLjAwNS0uOTg0LjU5Mi0xLjU2IDEuNDQ3LTEuNTYuODUgMCAxLjM2Mi41NTYgMS4zNTcgMS40OVYyNWgyLjExOHYtNC44NjJjMC0xLjc4LTEuMDQ0LTIuODc0LTIuNjM1LTIuODc0LTEuMTMzIDAtMS45NTQuNTU3LTIuMjk3IDEuNDQ3aC0uMDg5di0xLjM0N2gtMi4wMTlWMjVoMi4xMTh2LTQuNDE1Wk0xMTguNDE2IDI1aDIuMTUzdi0zLjYxaDEuNTcxbDEuOTI5IDMuNjFoMi4zNzZsLTIuMTYyLTMuOTU3YzEuMTU4LS40OTcgMS43OTktMS41MDcgMS43OTktMi44OTkgMC0yLjAyMy0xLjMzNy0zLjMyNi0zLjY0OS0zLjMyNmgtNC4wMTdWMjVabTIuMTUzLTUuMzR2LTMuMDgyaDEuNDUyYzEuMjQyIDAgMS44NDQuNTUyIDEuODQ0IDEuNTY2IDAgMS4wMS0uNjAyIDEuNTE3LTEuODM0IDEuNTE3aC0xLjQ2MlptOS4xNzIgNS40ODRjMS4xMjkgMCAxLjg2LS40OTIgMi4yMzMtMS4yMDNoLjA1OVYyNWgyLjAwOXYtNS4xNWMwLTEuODItMS41NDEtMi41ODYtMy4yNDItMi41ODYtMS44MjkgMC0zLjAzMi44NzUtMy4zMjYgMi4yNjdsMS45NTkuMTZjLjE0NC0uNTA4LjU5Ny0uODggMS4zNTctLjg4LjcyMSAwIDEuMTM0LjM2MiAxLjEzNC45ODl2LjAzYzAgLjQ5Mi0uNTIyLjU1Ni0xLjg0OS42ODYtMS41MTIuMTM5LTIuODY5LjY0Ni0yLjg2OSAyLjM1MSAwIDEuNTEyIDEuMDc5IDIuMjc3IDIuNTM1IDIuMjc3Wm0uNjA3LTEuNDYxYy0uNjUxIDAtMS4xMTktLjMwNC0xLjExOS0uODg1IDAtLjU5Ny40OTMtLjg5IDEuMjM4LS45OTUuNDYzLS4wNjQgMS4yMTgtLjE3NCAxLjQ3Mi0uMzQzdi44MWMwIC44MDEtLjY2MSAxLjQxMy0xLjU5MSAxLjQxM1pNMTM1LjY4NSAyNWgyLjExOHYtNy42MzZoLTIuMTE4VjI1Wm0xLjA2NC04LjYyYy42MzEgMCAxLjE0OC0uNDgzIDEuMTQ4LTEuMDc1IDAtLjU4Ni0uNTE3LTEuMDY5LTEuMTQ4LTEuMDY5LS42MjYgMC0xLjE0NC40ODMtMS4xNDQgMS4wNyAwIC41OTEuNTE4IDEuMDczIDEuMTQ0IDEuMDczWm00Ljg2OC0xLjU2MmgtMi4xMThWMjVoMi4xMThWMTQuODE4Wk0xNDQuODIgMjVoMi4yMzhsMS4zMTItNC44MDNoLjA5NEwxNDkuNzc3IDI1aDIuMjQybDIuMDczLTcuNjM2aC0yLjEzN2wtMS4xNjQgNS4xaC0uMDY0bC0xLjI1My01LjFoLTIuMTAzbC0xLjIzMyA1LjEzaC0uMDdsLTEuMTgzLTUuMTNoLTIuMTQzTDE0NC44MiAyNVptMTIuNTguMTQ0YzEuMTI4IDAgMS44NTktLjQ5MiAyLjIzMi0xLjIwM2guMDZWMjVoMi4wMDh2LTUuMTVjMC0xLjgyLTEuNTQxLTIuNTg2LTMuMjQxLTIuNTg2LTEuODMgMC0zLjAzMy44NzUtMy4zMjYgMi4yNjdsMS45NTguMTZjLjE0NS0uNTA4LjU5Ny0uODggMS4zNTgtLjg4LjcyMSAwIDEuMTMzLjM2MiAxLjEzMy45ODl2LjAzYzAgLjQ5Mi0uNTIyLjU1Ni0xLjg0OS42ODYtMS41MTIuMTM5LTIuODY5LjY0Ni0yLjg2OSAyLjM1MSAwIDEuNTEyIDEuMDc5IDIuMjc3IDIuNTM2IDIuMjc3Wm0uNjA2LTEuNDYxYy0uNjUxIDAtMS4xMTgtLjMwNC0xLjExOC0uODg1IDAtLjU5Ny40OTItLjg5IDEuMjM4LS45OTUuNDYyLS4wNjQgMS4yMTgtLjE3NCAxLjQ3MS0uMzQzdi44MWMwIC44MDEtLjY2MSAxLjQxMy0xLjU5MSAxLjQxM1ptNi4zNzEgNC4xOGMxLjU3NiAwIDIuNDEyLS44MDUgMi44NDQtMi4wMzhsMi45NjgtOC40NTEtMi4yNDItLjAxLTEuNTk2IDUuNjA4aC0uMDhsLTEuNTgtNS42MDhoLTIuMjI4bDIuNzQgNy44NTUtLjEyNS4zMjNjLS4yNzguNzE2LS44MS43NS0xLjU1Ni41MjJsLS40NzcgMS41OGMuMzAzLjEzLjc5NS4yMiAxLjMzMi4yMloiIGZpbGw9IiNmZmYiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEzLjU1NCAxNC4xMDVDMTUuNjE0IDEwLjQ2NCAxOS41MTYgOCAyNCA4YzYuNjI4IDAgMTIgNS4zNzMgMTIgMTJhMTEuOTY3IDExLjk2NyAwIDAgMS0uNjEgMy43NjRIMTIuNjFhMTEuODk2IDExLjg5NiAwIDAgMS0uNDUxLTEuODkzbC4yMTIgMS4wMDhoMTYuNjkzYzEuMDY0IDAgMS45NDMtLjU0NSAyLjM1LTEuNDU3LjQ0NC0uOTk0LjI1Ny0yLjAzLS4zOTYtMi45MzMtLjcwNS0uOTc1LTEuODg5LTIuMzQzLTIuNzA5LTIuOTY0LTEuNTEtMS4xNDMtMy40My0xLjMxLTQuOTkxLTEuMzYzbC0uNDQ5LS4wMTYtLjEzLS4wMDZjLS42MjUtLjAyNy0uOTY1LS4wNDEtNC40MzgtLjA0MXYuMDAxcy0zLjEzNy4wMDItNC43NDcuMDA1Wm0tMS41MjggNS4zNzljLjAxNy0uNDA1LjA1NC0uODA4LjExMS0xLjIwOGg5LjU3M1YxNy4wNmgtOS4zMzJhLjE0NS4xNDUgMCAwIDEtLjAwMy4wMTJsLS4wMDMuMDEtLjIxNCAxLjA1NWExMi4wNiAxMi4wNiAwIDAgMSAuNzk3LTIuODE0YzEuNzk4LS4wMDUgMy42NDUtLjAxIDUuMzQzLS4wMSAzLjE4IDAgMy43MjEuMDE0IDQuNTIuMDQ3LjIxNy4wMDkuNDI4LjAxNS42MzUuMDIgMi4wNzYuMDU1IDMuNzE4LjA5OCA2LjU0OSAzLjc1OC4wODYuMTEuMTcyLjIyMS4yMzUuMzQ2SDEyLjAyNlptMS40ODQtNS4zMDNjLS4yMDUuMzctLjM5Ljc1LS41NTUgMS4xNDJoLS4wMWMuMTY2LS4zOTMuMzU5LS43NzEuNTY1LTEuMTQyWm0uMDQxLS4wNzNabS0xLjUxNiA2LjU5M2gxOC4zNDZjLS4xMzguNTMyLS41Ni45Ni0xLjMxNS45NkgxMi4xMjhhMTIuMzE1IDEyLjMxNSAwIDAgMS0uMDkzLS45NlptLjU4MiAzLjA3OWMuMTM4LjQwNy4yOTYuODA4LjQ3NSAxLjE5OUgzNC45MUMzMy4wMTcgMjkuMTE5IDI4Ljg1IDMyIDI0IDMyYy01LjMwNSAwLTkuNzk4LTMuNDQ3LTExLjM4NC04LjIyWm0tLjYwNy00LjAwNS4wMS0uMTU4di43NjNjLS4wMDItLjA1NC0uMDA2LS4xMDctLjAxLS4xNi0uMDA1LS4wNzQtLjAxLS4xNDctLjAxLS4yMjIgMC0uMDc1LjAwNS0uMTQ5LjAxLS4yMjNaIiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy41NTQgMTQuMTA1QzE1LjYxNCAxMC40NjQgMTkuNTE2IDggMjQgOGM2LjYyOCAwIDEyIDUuMzczIDEyIDEyYTExLjk2NyAxMS45NjcgMCAwIDEtLjYxIDMuNzY0SDEyLjYxYTExLjg5NiAxMS44OTYgMCAwIDEtLjQ1MS0xLjg5M2wuMjEyIDEuMDA4aDE2LjY5M2MxLjA2NCAwIDEuOTQzLS41NDUgMi4zNS0xLjQ1Ny40NDQtLjk5NC4yNTctMi4wMy0uMzk2LTIuOTMzLS43MDUtLjk3NS0xLjg4OS0yLjM0My0yLjcwOS0yLjk2NC0xLjUxLTEuMTQzLTMuNDMtMS4zMS00Ljk5MS0xLjM2M2wtLjQ0OS0uMDE2LS4xMy0uMDA2Yy0uNjI1LS4wMjctLjk2NS0uMDQxLTQuNDM4LS4wNDF2LjAwMXMtMy4xMzcuMDAyLTQuNzQ3LjAwNVptLTEuNTI4IDUuMzc5Yy4wMTctLjQwNS4wNTQtLjgwOC4xMTEtMS4yMDhoOS41NzNWMTcuMDZoLTkuMzMyYS4xNDUuMTQ1IDAgMCAxLS4wMDMuMDEybC0uMDAzLjAxLS4yMTQgMS4wNTVhMTIuMDYgMTIuMDYgMCAwIDEgLjc5Ny0yLjgxNGMxLjc5OC0uMDA1IDMuNjQ1LS4wMSA1LjM0My0uMDEgMy4xOCAwIDMuNzIxLjAxNCA0LjUyLjA0Ny4yMTcuMDA5LjQyOC4wMTUuNjM1LjAyIDIuMDc2LjA1NSAzLjcxOC4wOTggNi41NDkgMy43NTguMDg2LjExLjE3Mi4yMjEuMjM1LjM0NkgxMi4wMjZabTEuNDg0LTUuMzAzYy0uMjA1LjM3LS4zOS43NS0uNTU1IDEuMTQyaC0uMDFjLjE2Ni0uMzkzLjM1OS0uNzcxLjU2NS0xLjE0MlptLjA0MS0uMDczWm0tMS41MTYgNi41OTNoMTguMzQ2Yy0uMTM4LjUzMi0uNTYuOTYtMS4zMTUuOTZIMTIuMTI4YTEyLjMxNSAxMi4zMTUgMCAwIDEtLjA5My0uOTZabS41ODIgMy4wNzljLjEzOC40MDcuMjk2LjgwOC40NzUgMS4xOTlIMzQuOTFDMzMuMDE3IDI5LjExOSAyOC44NSAzMiAyNCAzMmMtNS4zMDUgMC05Ljc5OC0zLjQ0Ny0xMS4zODQtOC4yMlptLS42MDctNC4wMDUuMDEtLjE1OHYuNzYzYy0uMDAyLS4wNTQtLjAwNi0uMTA3LS4wMS0uMTYtLjAwNS0uMDc0LS4wMS0uMTQ3LS4wMS0uMjIyIDAtLjA3NS4wMDUtLjE0OS4wMS0uMjIzWiIgZmlsbD0idXJsKCM3ZnFyN3Btb2tiKSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iNTV6OGFwZnh2YSIgeDE9IjE4MSIgeTE9IjAiIHgyPSIyNiIgeTI9IjM3LjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjQjYzQkNFIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNTAxNkExIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9IjdmcXI3cG1va2IiIHgxPSIxOS41IiB5MT0iMzIiIHgyPSIxOS41IiB5Mj0iOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM1QjFCQTciLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiIHN0b3Atb3BhY2l0eT0iMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg=="},71742:(M,j,L)=>{L.r(j),L.d(j,{assets:()=>t,contentTitle:()=>I,default:()=>g,frontMatter:()=>T,metadata:()=>N,toc:()=>y});const N=JSON.parse('{"id":"Deployment/deployment-railway","title":"Deploy Langflow on Railway","description":"This guide explains how to deploy Langflow on Railway, a cloud infrastructure platform that provides auto-deploy, managed databases, and automatic scaling.","source":"@site/docs/Deployment/deployment-railway.md","sourceDirName":"Deployment","slug":"/deployment-railway","permalink":"/deployment-railway","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Deploy Langflow on Railway","slug":"/deployment-railway"},"sidebar":"docs","previous":{"title":"Kubernetes","permalink":"/deployment-kubernetes"},"next":{"title":"Render","permalink":"/deployment-render"}}');var u=L(74848),D=L(28453);const T={title:"Deploy Langflow on Railway",slug:"/deployment-railway"},I=void 0,t={},y=[];function i(M){const j={a:"a",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,D.R)(),...M.components};return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(j.p,{children:["This guide explains how to deploy Langflow on ",(0,u.jsx)(j.a,{href:"https://railway.app/",children:"Railway"}),", a cloud infrastructure platform that provides auto-deploy, managed databases, and automatic scaling."]}),"\n",(0,u.jsxs)(j.ol,{children:["\n",(0,u.jsxs)(j.li,{children:["\n",(0,u.jsx)(j.p,{children:"Click the following button to go to Railway:"}),"\n",(0,u.jsx)(j.p,{children:(0,u.jsx)(j.a,{href:"https://railway.app/template/JMXEWp?referralCode=MnPSdg",children:(0,u.jsx)(j.img,{alt:"Deploy on Railway",src:L(70234).A+"",width:"183",height:"40"})})}),"\n"]}),"\n",(0,u.jsxs)(j.li,{children:["\n",(0,u.jsxs)(j.p,{children:["Click ",(0,u.jsx)(j.strong,{children:"Deploy Now"}),".\nRailway automatically does the following:"]}),"\n",(0,u.jsxs)(j.ul,{children:["\n",(0,u.jsx)(j.li,{children:"Sets up the infrastructure."}),"\n",(0,u.jsx)(j.li,{children:"Deploys Langflow."}),"\n",(0,u.jsx)(j.li,{children:"Starts the application."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,u.jsx)(j.p,{children:"Wait for the deployment to complete."}),"\n",(0,u.jsx)(j.p,{children:"Your Langflow instance is now ready to use."})]})}function g(M={}){const{wrapper:j}={...(0,D.R)(),...M.components};return j?(0,u.jsx)(j,{...M,children:(0,u.jsx)(i,{...M})}):i(M)}}}]); \ No newline at end of file diff --git a/assets/js/54175a6c.86865e4e.js b/assets/js/54175a6c.86865e4e.js new file mode 100644 index 0000000000..39650b806a --- /dev/null +++ b/assets/js/54175a6c.86865e4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9455],{14028:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>a});const l=JSON.parse('{"id":"Deployment/deployment-gcp","title":"Deploy Langflow on Google Cloud Platform","description":"This guide demonstrates deploying Langflow on Google Cloud Platform.","source":"@site/docs/Deployment/deployment-gcp.md","sourceDirName":"Deployment","slug":"/deployment-gcp","permalink":"/deployment-gcp","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Deploy Langflow on Google Cloud Platform","slug":"/deployment-gcp"},"sidebar":"docs","previous":{"title":"Docker","permalink":"/deployment-docker"},"next":{"title":"Hugging Face Spaces","permalink":"/deployment-hugging-face-spaces"}}');var t=n(74848),s=n(28453);const i={title:"Deploy Langflow on Google Cloud Platform",slug:"/deployment-gcp"},r=void 0,c={},a=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Deploy Langflow in GCP",id:"deploy-langflow-in-gcp",level:2},{value:"Pricing",id:"pricing",level:2}];function d(e){const o={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.p,{children:"This guide demonstrates deploying Langflow on Google Cloud Platform."}),"\n",(0,t.jsx)(o.p,{children:"To deploy Langflow on Google Cloud Platform using Cloud Shell, use the below script."}),"\n",(0,t.jsx)(o.p,{children:"The script guides you through setting up a Debian-based VM with the Langflow package, Nginx, and the necessary configurations to run the Langflow dev environment in GCP."}),"\n",(0,t.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsxs)(o.li,{children:["A ",(0,t.jsx)(o.a,{href:"https://console.cloud.google.com/",children:"Google Cloud"})," project with the necessary permissions to create resources"]}),"\n"]}),"\n",(0,t.jsx)(o.h2,{id:"deploy-langflow-in-gcp",children:"Deploy Langflow in GCP"}),"\n",(0,t.jsxs)(o.ol,{children:["\n",(0,t.jsxs)(o.li,{children:["\n",(0,t.jsx)(o.p,{children:"Click the following button to launch Cloud Shell:"}),"\n",(0,t.jsx)(o.p,{children:(0,t.jsx)(o.a,{href:"https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/langflow-ai/langflow&working_dir=scripts/gcp&shellonly=true&tutorial=walkthroughtutorial.md",children:(0,t.jsx)(o.img,{src:"https://gstatic.com/cloudssh/images/open-btn.svg",alt:"Deploy to Google Cloud"})})}),"\n"]}),"\n",(0,t.jsxs)(o.li,{children:["\n",(0,t.jsxs)(o.p,{children:["Click ",(0,t.jsx)(o.strong,{children:"Trust repo"}),". Some gcloud commands may not run in an ephemeral Cloud Shell environment."]}),"\n"]}),"\n",(0,t.jsxs)(o.li,{children:["\n",(0,t.jsxs)(o.p,{children:["Click ",(0,t.jsx)(o.strong,{children:"Start"})," and follow the tutorial to deploy Langflow."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(o.h2,{id:"pricing",children:"Pricing"}),"\n",(0,t.jsxs)(o.p,{children:["This deployment uses a ",(0,t.jsx)(o.a,{href:"https://cloud.google.com/compute/docs/instances/preemptible",children:"spot (preemptible) instance"}),", which is a cost-effective option for running Langflow. However, ",(0,t.jsx)(o.strong,{children:"due to the nature of spot instances, the VM may be terminated at any time if Google Cloud needs to reclaim the resources"}),"."]}),"\n",(0,t.jsxs)(o.p,{children:["For more information, see the ",(0,t.jsx)(o.a,{href:"https://cloud.google.com/products/calculator?hl=en",children:"GCP pricing calculator"}),"."]})]})}function p(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},28453:(e,o,n)=>{n.d(o,{R:()=>i,x:()=>r});var l=n(96540);const t={},s=l.createContext(t);function i(e){const o=l.useContext(s);return l.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),l.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/54175a6c.ab836bda.js b/assets/js/54175a6c.ab836bda.js deleted file mode 100644 index c6d8b12433..0000000000 --- a/assets/js/54175a6c.ab836bda.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9455],{14028:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>s,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"Deployment/deployment-gcp","title":"GCP","description":"To deploy Langflow on Google Cloud Platform using Cloud Shell, use the below script.","source":"@site/docs/Deployment/deployment-gcp.md","sourceDirName":"Deployment","slug":"/deployment-gcp","permalink":"/deployment-gcp","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"GCP","slug":"/deployment-gcp"},"sidebar":"docs","previous":{"title":"Docker","permalink":"/Deployment/deployment-docker"},"next":{"title":"HuggingFace\xa0Spaces","permalink":"/deployment-hugging-face-spaces"}}');var l=o(74848),i=o(28453);const s={title:"GCP",slug:"/deployment-gcp"},r="Deploy on Google Cloud Platform",c={},a=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Deploy Langflow in GCP",id:"deploy-langflow-in-gcp",level:2},{value:"Spot/Preemptible Instance",id:"spotpreemptible-instance",level:2},{value:"Pricing",id:"pricing",level:2}];function d(e){const n={a:"a",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.header,{children:(0,l.jsx)(n.h1,{id:"deploy-on-google-cloud-platform",children:"Deploy on Google Cloud Platform"})}),"\n",(0,l.jsx)(n.p,{children:"To deploy Langflow on Google Cloud Platform using Cloud Shell, use the below script.\nThe script will guide you through setting up a Debian-based VM with the Langflow package, Nginx, and the necessary configurations to run the Langflow dev environment in GCP."}),"\n",(0,l.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"A GCP account with the necessary permissions to create resources"}),"\n",(0,l.jsx)(n.li,{children:"A project on GCP where you want to deploy Langflow"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"deploy-langflow-in-gcp",children:"Deploy Langflow in GCP"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Click below to launch Cloud Shell."}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsxs)(n.a,{href:"https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/langflow-ai/langflow&working_dir=scripts/gcp&shellonly=true&tutorial=walkthroughtutorial.md",children:[(0,l.jsx)(n.img,{alt:"GCP Deploy",src:o(66538).A+"",width:"24",height:"24"})," Deploy to Google Cloud"]})}),"\n",(0,l.jsxs)(n.ol,{start:"2",children:["\n",(0,l.jsxs)(n.li,{children:["Click ",(0,l.jsx)(n.strong,{children:"Trust repo"}),". Some gcloud commands may not run in an ephemeral Cloud Shell environment."]}),"\n",(0,l.jsxs)(n.li,{children:["Click ",(0,l.jsx)(n.strong,{children:"Start"})," and follow the tutorial to deploy Langflow."]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"spotpreemptible-instance",children:"Spot/Preemptible Instance"}),"\n",(0,l.jsxs)(n.p,{children:["When running a ",(0,l.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/instances/preemptible",children:"spot (preemptible) instance"}),", the code and VM will behave the same way as in a regular instance, executing the startup script to configure the environment, install necessary dependencies, and run the Langflow application. However, ",(0,l.jsx)(n.strong,{children:"due to the nature of spot instances, the VM may be terminated at any time if Google Cloud needs to reclaim the resources"}),". This makes spot instances suitable for fault-tolerant, stateless, or interruptible workloads that can handle unexpected terminations and restarts."]}),"\n",(0,l.jsx)(n.h2,{id:"pricing",children:"Pricing"}),"\n",(0,l.jsxs)(n.p,{children:["For more information, see the ",(0,l.jsx)(n.a,{href:"https://cloud.google.com/products/calculator?hl=en",children:"GCP pricing calculator"}),"."]})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(d,{...e})}):d(e)}},28453:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>r});var t=o(96540);const l={},i=t.createContext(l);function s(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),t.createElement(i.Provider,{value:n},e.children)}},66538:(e,n,o)=>{o.d(n,{A:()=>t});const t="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8cG9seWdvbiBwb2ludHM9IjIwLjM5IDE4LjI0IDIwLjM5IDggMTEuNTIgMi44OSAxMS41MiA3LjU1IDE2LjM3IDEwLjMyIDE2LjM1IDE1LjkxIDIwLjM5IDE4LjI0IiBzdHlsZT0iZmlsbDojNDI4NWY0Ii8+CiAgICA8cG9seWdvbiBwb2ludHM9IjE0Ljc5IDE5Ljg2IDE0Ljc5IDExLjIzIDcuMzMgNi45MiA3LjMzIDEwLjk0IDExLjM0IDEzLjIzIDExLjMyIDE3Ljg1IDE0Ljc5IDE5Ljg2IiBzdHlsZT0iZmlsbDojNjY5ZGY2Ii8+CiAgICA8cG9seWdvbiBwb2ludHM9IjkuNzYgMjEuMTUgOS43NiAxNC4xNCAzLjY5IDEwLjY0IDMuNjkgMTQgNi44NiAxNS44MSA2Ljg0IDE5LjQ3IDkuNzYgMjEuMTUiIHN0eWxlPSJmaWxsOiNhZWNiZmEiLz4KPC9zdmc+"}}]); \ No newline at end of file diff --git a/assets/js/5cf11f26.4983a282.js b/assets/js/5cf11f26.4983a282.js new file mode 100644 index 0000000000..2b4e64895f --- /dev/null +++ b/assets/js/5cf11f26.4983a282.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4133],{13067:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>c,metadata:()=>o,toc:()=>r});const o=JSON.parse('{"id":"Deployment/deployment-hugging-face-spaces","title":"Deploy Langflow on HuggingFace Spaces","description":"This guide explains how to deploy Langflow on HuggingFace Spaces.","source":"@site/docs/Deployment/deployment-hugging-face-spaces.md","sourceDirName":"Deployment","slug":"/deployment-hugging-face-spaces","permalink":"/deployment-hugging-face-spaces","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Deploy Langflow on HuggingFace Spaces","slug":"/deployment-hugging-face-spaces"},"sidebar":"docs","previous":{"title":"Google Cloud Platform","permalink":"/deployment-gcp"},"next":{"title":"Kubernetes","permalink":"/deployment-kubernetes"}}');var s=t(74848),l=t(28453);const c={title:"Deploy Langflow on HuggingFace Spaces",slug:"/deployment-hugging-face-spaces"},i=void 0,a={},r=[];function g(e){const n={a:"a",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["This guide explains how to deploy Langflow on ",(0,s.jsx)(n.a,{href:"https://huggingface.co/spaces/",children:"HuggingFace Spaces"}),"."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Go to the ",(0,s.jsx)(n.a,{href:"https://huggingface.co/spaces/Langflow/Langflow?duplicate=true",children:"Langflow Space"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.strong,{children:"Duplicate Space"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"In the configuration dialog, do the following:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Enter a name for your Space."}),"\n",(0,s.jsx)(n.li,{children:"Select either public or private visibility."}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Duplicate Space"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Hugging Face deployment dialog",src:t(87862).A+"",width:"3008",height:"1692"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Wait for the setup to complete. You'll be redirected to your new Space automatically."}),"\n",(0,s.jsx)(n.p,{children:"Your Langflow instance is now ready to use."})]})}function p(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(g,{...e})}):g(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>i});var o=t(96540);const s={},l=o.createContext(s);function c(e){const n=o.useContext(l);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(l.Provider,{value:n},e.children)}},87862:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/hugging-face-deployment-fa1554738ef6c3249ba3fec70b2134cb.png"}}]); \ No newline at end of file diff --git a/assets/js/5cf11f26.b3b4d32d.js b/assets/js/5cf11f26.b3b4d32d.js deleted file mode 100644 index 305fc2285e..0000000000 --- a/assets/js/5cf11f26.b3b4d32d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4133],{13067:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>c,metadata:()=>s,toc:()=>r});const s=JSON.parse('{"id":"Deployment/deployment-hugging-face-spaces","title":"HuggingFace\xa0Spaces","description":"HuggingFace Spaces","source":"@site/docs/Deployment/deployment-hugging-face-spaces.md","sourceDirName":"Deployment","slug":"/deployment-hugging-face-spaces","permalink":"/deployment-hugging-face-spaces","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"HuggingFace\xa0Spaces","slug":"/deployment-hugging-face-spaces"},"sidebar":"docs","previous":{"title":"GCP","permalink":"/deployment-gcp"},"next":{"title":"Kubernetes","permalink":"/deployment-kubernetes"}}');var i=t(74848),a=t(28453);const c={title:"HuggingFace\xa0Spaces",slug:"/deployment-hugging-face-spaces"},o=void 0,l={},r=[{value:"HuggingFace Spaces",id:"00f5b3a6818d496dbb18e1a6a910e57d",level:2}];function g(e){const n={a:"a",h2:"h2",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"00f5b3a6818d496dbb18e1a6a910e57d",children:"HuggingFace Spaces"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.p,{children:"HuggingFace provides a great alternative for running Langflow in their Spaces environment. This means you can run Langflow in the cloud without any local installation required. Here's how you can get Langflow up and running on HuggingFace Spaces:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Access Langflow Space"}),": Open a Chromium-based browser and navigate to the\xa0",(0,i.jsx)(n.a,{href:"https://huggingface.co/spaces/Langflow/Langflow?duplicate=true",children:"Langflow Space"}),". This link directs you to a pre-configured environment for Langflow."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Duplicate the Space"}),": You'll encounter an option to duplicate the Langflow space. This step involves a few simple decisions:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Naming Your Space"}),": Assign a unique name to your new Space."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Visibility Settings"}),": Choose between Public or Private visibility for your Space."]}),"\n",(0,i.jsxs)(n.li,{children:["After setting these parameters, click on\xa0",(0,i.jsx)(n.strong,{children:"Duplicate Space"}),"\xa0to initiate the setup."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:t(87862).A+"",width:"3008",height:"1692"})}),"\n",(0,i.jsxs)(n.ol,{start:"3",children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Complete Installation"}),": The duplication and setup process begins immediately after you click\xa0",(0,i.jsx)(n.strong,{children:"Duplicate Space"}),". Once completed, you will be automatically redirected to the main page of your new Space."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Start Exploring Langflow"}),": With the setup complete, Langflow is now ready for use in your Space and you can start exploring its features and capabilities right away!"]}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(g,{...e})}):g(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>o});var s=t(96540);const i={},a=s.createContext(i);function c(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(a.Provider,{value:n},e.children)}},87862:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/hugging-face-deployment-fa1554738ef6c3249ba3fec70b2134cb.png"}}]); \ No newline at end of file diff --git a/assets/js/c2ebd62a.2a4b8371.js b/assets/js/c2ebd62a.2a4b8371.js deleted file mode 100644 index 02c5bd570b..0000000000 --- a/assets/js/c2ebd62a.2a4b8371.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4028],{23063:(e,o,t)=>{t.r(o),t.d(o,{CH:()=>i,assets:()=>p,chCodeConfig:()=>d,contentTitle:()=>a,default:()=>f,frontMatter:()=>r,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"Deployment/deployment-kubernetes","title":"Kubernetes","description":"This guide will help you get LangFlow up and running in Kubernetes cluster, including the following steps:","source":"@site/docs/Deployment/deployment-kubernetes.md","sourceDirName":"Deployment","slug":"/deployment-kubernetes","permalink":"/deployment-kubernetes","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Kubernetes","slug":"/deployment-kubernetes"},"sidebar":"docs","previous":{"title":"HuggingFace\xa0Spaces","permalink":"/deployment-hugging-face-spaces"},"next":{"title":"Railway","permalink":"/deployment-railway"}}');var s=t(74848),l=t(28453),c=t(24754);const r={title:"Kubernetes",slug:"/deployment-kubernetes"},a=void 0,p={},i={annotations:c.hk,Code:c.Cy},d={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},h=[{value:"LangFlow (IDE)",id:"cb60b2f34e70490faf231cb0fe1a4b42",level:2},{value:"Prerequisites",id:"3efd3c63ff8849228c136f9252e504fd",level:3},{value:"Step 0. Prepare a Kubernetes cluster",id:"290b9624770a4c1ba2c889d384b7ef4c",level:3},{value:"Step 1. Install the LangFlow Helm chart",id:"b5c2a35144634a05a392f7e650929efe",level:3},{value:"Step 2. Access LangFlow",id:"34c71d04351949deb6c8ed7ffe30eafb",level:3},{value:"LangFlow version",id:"645c6ef7984d4da0bcc4170bab0ff415",level:3},{value:"Storage",id:"6772c00af79147d293c821b4c6905d3b",level:3},{value:"Scaling",id:"e1d95ba6551742aa86958dc03b26129e",level:3},{value:"Deploy on AWS EKS, Google GKE, or Azure AKS and other examples",id:"a8c3d4dc4e4f42f49b21189df5e2b851",level:3},{value:"LangFlow (Runtime)",id:"49f2813ad2d3460081ad26a286a65e73",level:2},{value:"Prerequisites",id:"3ad3a9389fff483ba8bd309189426a9d",level:3},{value:"Step 0. Prepare a Kubernetes cluster",id:"aaa764703ec44bd5ba64b5ef4599630b",level:3},{value:"Step 1. Install the LangFlow runtime Helm chart",id:"72a18aa8349c421186ba01d73a002531",level:3},{value:"Step 2. Access the LangFlow app API",id:"e13326fc07734e4aa86dfb75ccfa31f8",level:3},{value:"Storage",id:"09514d2b59064d37b685c7c0acecb861",level:3},{value:"Log level and LangFlow configurations",id:"ecd97f0be96d4d1cabcc5b77a2d00980",level:3},{value:"Configure secrets and variables",id:"b91929e92acf47c183ea4c9ba9d19514",level:3},{value:"Scaling",id:"359b9ea5302147ebbed3ab8aa49dae8d",level:3},{value:"Other Examples",id:"8522b4276b51448e9f8f0c6efc731a7c",level:2}];function y(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",ul:"ul",...(0,l.R)(),...e.components};return i||u("CH",!1),i.Code||u("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",(0,s.jsx)(o.p,{children:"This guide will help you get LangFlow up and running in Kubernetes cluster, including the following steps:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Install ",(0,s.jsx)(o.a,{href:"/deployment-kubernetes",children:"LangFlow as IDE"})," in a Kubernetes cluster (for development)"]}),"\n",(0,s.jsxs)(o.li,{children:["Install ",(0,s.jsx)(o.a,{href:"/deployment-kubernetes",children:"LangFlow as a standalone application"})," in a Kubernetes cluster (for production runtime workloads)"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"cb60b2f34e70490faf231cb0fe1a4b42",children:"LangFlow (IDE)"}),"\n",(0,s.jsx)(o.hr,{}),"\n",(0,s.jsx)(o.p,{children:"This solution is designed to provide a complete environment for developers to create, test, and debug their flows. It includes both the API and the UI."}),"\n",(0,s.jsx)(o.h3,{id:"3efd3c63ff8849228c136f9252e504fd",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Kubernetes server"}),"\n",(0,s.jsx)(o.li,{children:"kubectl"}),"\n",(0,s.jsx)(o.li,{children:"Helm"}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"290b9624770a4c1ba2c889d384b7ef4c",children:"Step 0. Prepare a Kubernetes cluster"}),"\n",(0,s.jsxs)(o.p,{children:["We use ",(0,s.jsx)(o.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"Minikube"})," for this example, but you can use any Kubernetes cluster."]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Create a Kubernetes cluster on Minikube."}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"minikube start",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Set ",(0,s.jsx)(o.code,{children:"kubectl"})," to use Minikube."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl config use-context minikube",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"b5c2a35144634a05a392f7e650929efe",children:"Step 1. Install the LangFlow Helm chart"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Add the repository to Helm."}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm repo add langflow ",props:{}}]},{tokens:[{content:"helm repo update",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Install LangFlow with the default options in the ",(0,s.jsx)(o.code,{children:"langflow"})," namespace."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm install langflow-ide langflow/langflow-ide -n langflow --create-namespace",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Check the status of the pods"}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl get pods -n langflow",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"NAME READY STATUS RESTARTS AGE",props:{}}]},{tokens:[{content:"langflow-0 1/1 Running 0 33s",props:{}}]},{tokens:[{content:"langflow-frontend-5d9c558dbb-g7tc9 1/1 Running 0 38s",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"34c71d04351949deb6c8ed7ffe30eafb",children:"Step 2. Access LangFlow"}),"\n",(0,s.jsx)(o.p,{children:"Enable local port forwarding to access LangFlow from your local machine."}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl port-forward -n langflow svc/langflow-langflow-runtime 7860:7860",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Now you can access LangFlow at ",(0,s.jsx)(o.code,{children:"http://localhost:7860/"}),"."]}),"\n",(0,s.jsx)(o.h3,{id:"645c6ef7984d4da0bcc4170bab0ff415",children:"LangFlow version"}),"\n",(0,s.jsxs)(o.p,{children:["To specify a different LangFlow version, you can set the ",(0,s.jsx)(o.code,{children:"langflow.backend.image.tag"})," and ",(0,s.jsx)(o.code,{children:"langflow.frontend.image.tag"})," values in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" backend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" tag",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1.0.0a59"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" frontend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" tag",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1.0.0a59"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.h3,{id:"6772c00af79147d293c821b4c6905d3b",children:"Storage"}),"\n",(0,s.jsxs)(o.p,{children:["By default, the chart will use a SQLLite database stored in a local persistent disk.\nIf you want to use an external PostgreSQL database, you can set the ",(0,s.jsx)(o.code,{children:"langflow.database"})," values in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# Deploy postgresql. You can skip this section if you have an existing postgresql database.",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"postgresql",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" fullnameOverride",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-ide-postgresql-service"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" auth",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" username",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" password",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-postgres"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" database",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-db"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"langflow",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" backend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" externalDatabase",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" driver",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"postgresql"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" host",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-ide-postgresql-service"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" port",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"5432"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" database",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-db"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" user",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" password",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" valueFrom",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" secretKeyRef",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" key",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"password"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-ide-postgresql-service"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" sqlite",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.h3,{id:"e1d95ba6551742aa86958dc03b26129e",children:"Scaling"}),"\n",(0,s.jsxs)(o.p,{children:["You can scale the number of replicas for the LangFlow backend and frontend services by changing the ",(0,s.jsx)(o.code,{children:"replicaCount"})," value in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" backend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" replicaCount",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"3",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" frontend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" replicaCount",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"3",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"You can scale frontend and backend services independently."}),"\n",(0,s.jsxs)(o.p,{children:["To scale vertically (increase the resources for the pods), you can set the ",(0,s.jsx)(o.code,{children:"resources"})," values in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" backend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" resources",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" requests",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" memory",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2Gi"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" cpu",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000m"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" frontend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" resources",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" requests",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" memory",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1Gi"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" cpu",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000m"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.h3,{id:"a8c3d4dc4e4f42f49b21189df5e2b851",children:"Deploy on AWS EKS, Google GKE, or Azure AKS and other examples"}),"\n",(0,s.jsxs)(o.p,{children:["Visit the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts",children:"LangFlow Helm Charts repository"})," for more information."]}),"\n",(0,s.jsx)(o.h2,{id:"49f2813ad2d3460081ad26a286a65e73",children:"LangFlow (Runtime)"}),"\n",(0,s.jsx)(o.hr,{}),"\n",(0,s.jsx)(o.p,{children:"The runtime 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."}),"\n",(0,s.jsx)(o.p,{children:"Using a dedicated deployment for a set of flows is fundamental in production environments to have granular resource control."}),"\n",(0,s.jsx)(o.h3,{id:"3ad3a9389fff483ba8bd309189426a9d",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Kubernetes server"}),"\n",(0,s.jsx)(o.li,{children:"kubectl"}),"\n",(0,s.jsx)(o.li,{children:"Helm"}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"aaa764703ec44bd5ba64b5ef4599630b",children:"Step 0. Prepare a Kubernetes cluster"}),"\n",(0,s.jsx)(o.p,{children:"Follow the same steps as for the LangFlow IDE."}),"\n",(0,s.jsx)(o.h3,{id:"72a18aa8349c421186ba01d73a002531",children:"Step 1. Install the LangFlow runtime Helm chart"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Add the repository to Helm."}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"repo add langflow ",props:{style:{color:"#A5D6FF"}}},{content:"<",props:{style:{color:"#FF7B72"}}},{content:"https://langflow-ai.github.io/langflow-helm-chart",props:{style:{color:"#A5D6FF"}}},{content:"s",props:{style:{color:"#C9D1D9"}}},{content:">",props:{style:{color:"#FF7B72"}}}]},{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"repo update",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Install the LangFlow app with the default options in the ",(0,s.jsx)(o.code,{children:"langflow"})," namespace.\nIf you bundled the flow in a docker image, you can specify the image name in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file or with the ",(0,s.jsx)(o.code,{children:"-set"})," flag:\nIf you want to download the flow from a remote location, you can specify the URL in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file or with the ",(0,s.jsx)(o.code,{children:"-set"})," flag:"]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"install my-langflow-app langflow/langflow-runtime ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"--create-namespace --set ",props:{style:{color:"#79C0FF"}}},{content:"image.repository=myuser/langflow-just-chat ",props:{style:{color:"#A5D6FF"}}},{content:"--set ",props:{style:{color:"#79C0FF"}}},{content:"image.tag=",props:{style:{color:"#A5D6FF"}}},{content:"1.0.0",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"install my-langflow-app langflow/langflow-runtime ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"--create-namespace --set ",props:{style:{color:"#79C0FF"}}},{content:"downloadFlows.flows[0].url=https://raw.githubusercontent.com/langflow-ai/langflow/dev/src/backend/base/langflow/initial_setup/starter_projects/Basic%20Prompting%",props:{style:{color:"#A5D6FF"}}},{content:"20",props:{style:{color:"#79C0FF"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"Hello%2C%20world!",props:{style:{color:"#FFA657"}}},{content:")",props:{style:{color:"#C9D1D9"}}},{content:".json",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"shell"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Check the status of the pods."}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl get pods -n langflow",props:{}}]},{tokens:[{content:"",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"e13326fc07734e4aa86dfb75ccfa31f8",children:"Step 2. Access the LangFlow app API"}),"\n",(0,s.jsx)(o.p,{children:"Enable local port forwarding to access LangFlow from your local machine."}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl port-forward -n langflow svc/langflow-my-langflow-app 7860:7860",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Now you can access the API at ",(0,s.jsx)(o.code,{children:"http://localhost:7860/api/v1/flows"})," and execute the flow:"]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"id",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"$(",props:{style:{color:"#A5D6FF"}}},{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-s ",props:{style:{color:"#79C0FF"}}},{content:"<",props:{style:{color:"#FF7B72"}}},{content:"http://localhost:7860/api/v1/flows",props:{style:{color:"#A5D6FF"}}},{content:"> | ",props:{style:{color:"#FF7B72"}}},{content:"jq ",props:{style:{color:"#FFA657"}}},{content:"-r",props:{style:{color:"#79C0FF"}}},{content:" '.flows[0].id')",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:"POST ",props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:' "" ',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:"'Content-Type: application/json'",props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "Hello!",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }'",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,s.jsx)(o.h3,{id:"09514d2b59064d37b685c7c0acecb861",children:"Storage"}),"\n",(0,s.jsx)(o.p,{children:"In this case, storage is not needed as our deployment is stateless."}),"\n",(0,s.jsx)(o.h3,{id:"ecd97f0be96d4d1cabcc5b77a2d00980",children:"Log level and LangFlow configurations"}),"\n",(0,s.jsxs)(o.p,{children:["You can set the log level and other LangFlow configurations in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"env",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_LOG_LEVEL",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"INFO"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.h3,{id:"b91929e92acf47c183ea4c9ba9d19514",children:"Configure secrets and variables"}),"\n",(0,s.jsxs)(o.p,{children:["To inject secrets and LangFlow global variables, you can use the ",(0,s.jsx)(o.code,{children:"secrets"})," and ",(0,s.jsx)(o.code,{children:"env"})," sections in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsxs)(o.p,{children:["Let's say your flow uses a global variable which is a secret; when you export the flow as JSON, it's recommended to not include it.\nWhen importing the flow in the LangFlow runtime, you can set the global variable using the ",(0,s.jsx)(o.code,{children:"env"})," section in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file.\nAssuming you have a global variable called ",(0,s.jsx)(o.code,{children:"openai_key_var"}),", you can read it directly from a secret:"]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"env",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai_key_var",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" valueFrom",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" secretKeyRef",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai-key",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" key",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai-key",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"or directly from the values file (not recommended for secret values!):"}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"env",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai_key_var",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"sk-...."',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.h3,{id:"359b9ea5302147ebbed3ab8aa49dae8d",children:"Scaling"}),"\n",(0,s.jsxs)(o.p,{children:["You can scale the number of replicas for the LangFlow app by changing the ",(0,s.jsx)(o.code,{children:"replicaCount"})," value in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"replicaCount",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"3",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["To scale vertically (increase the resources for the pods), you can set the ",(0,s.jsx)(o.code,{children:"resources"})," values in the ",(0,s.jsx)(o.code,{children:"values.yaml"})," file."]}),"\n",(0,s.jsx)(i.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"resources",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" requests",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" memory",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2Gi"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" cpu",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000m"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,s.jsx)(o.h2,{id:"8522b4276b51448e9f8f0c6efc731a7c",children:"Other Examples"}),"\n",(0,s.jsx)(o.hr,{}),"\n",(0,s.jsx)(o.p,{children:"Visit the LangFlow Helm Charts repository for more examples and configurations. Use the default values file as reference for all the options available."}),"\n",(0,s.jsx)(o.admonition,{type:"note",children:(0,s.jsx)(o.p,{children:"Visit the examples directory to learn more about different deployment options."})})]})}function f(e={}){const{wrapper:o}={...(0,l.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(y,{...e})}):y(e)}function u(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/c2ebd62a.8b4e5776.js b/assets/js/c2ebd62a.8b4e5776.js new file mode 100644 index 0000000000..f3bf05bca8 --- /dev/null +++ b/assets/js/c2ebd62a.8b4e5776.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4028],{23063:(e,o,t)=>{t.r(o),t.d(o,{CH:()=>d,assets:()=>h,chCodeConfig:()=>u,contentTitle:()=>p,default:()=>y,frontMatter:()=>i,metadata:()=>n,toc:()=>f});const n=JSON.parse('{"id":"Deployment/deployment-kubernetes","title":"Deploy Langflow on Kubernetes","description":"This guide demonstrates deploying Langflow on a Kubernetes cluster.","source":"@site/docs/Deployment/deployment-kubernetes.md","sourceDirName":"Deployment","slug":"/deployment-kubernetes","permalink":"/deployment-kubernetes","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Deploy Langflow on Kubernetes","slug":"/deployment-kubernetes"},"sidebar":"docs","previous":{"title":"Hugging Face Spaces","permalink":"/deployment-hugging-face-spaces"},"next":{"title":"Railway","permalink":"/deployment-railway"}}');var l=t(74848),s=t(28453),r=t(24754),c=t(65537),a=t(79329);const i={title:"Deploy Langflow on Kubernetes",slug:"/deployment-kubernetes"},p=void 0,h={},d={annotations:r.hk,Code:r.Cy},u={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},f=[{value:"Deploy the Langflow IDE",id:"deploy-the-langflow-ide",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Prepare a Kubernetes cluster",id:"prepare-a-kubernetes-cluster",level:3},{value:"Install the Langflow IDE Helm chart",id:"install-the-langflow-ide-helm-chart",level:3},{value:"Configure port forwarding to access Langflow",id:"configure-port-forwarding-to-access-langflow",level:3},{value:"Configure the Langflow version",id:"configure-the-langflow-version",level:3},{value:"Configure external storage",id:"configure-external-storage",level:3},{value:"Configure scaling",id:"configure-scaling",level:3},{value:"Deploy the Langflow runtime",id:"deploy-the-langflow-runtime",level:2},{value:"Prerequisites",id:"prerequisites-1",level:3},{value:"Install the Langflow runtime Helm chart",id:"install-the-langflow-runtime-helm-chart",level:3},{value:"Access the Langflow app API",id:"access-the-langflow-app-api",level:3},{value:"Configure secrets",id:"configure-secrets",level:3},{value:"Configure the log level",id:"configure-the-log-level",level:3},{value:"Configure scaling",id:"configure-scaling-1",level:3},{value:"Deploy Langflow on AWS EKS, Google GKE, or Azure AKS and other examples",id:"deploy-langflow-on-aws-eks-google-gke-or-azure-aks-and-other-examples",level:2}];function g(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",ul:"ul",...(0,s.R)(),...e.components};return d||m("CH",!1),d.Code||m("CH.Code",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.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,l.jsx)(o.p,{children:"This guide demonstrates deploying Langflow on a Kubernetes cluster."}),"\n",(0,l.jsxs)(o.p,{children:["Two charts are available at the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts",children:"Langflow Helm Charts repository"}),":"]}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsxs)(o.li,{children:["Deploy the ",(0,l.jsx)(o.a,{href:"deployment-kubernetes#langflow-ide-deployment",children:"Langflow IDE"})," for the complete Langflow development environment."]}),"\n",(0,l.jsxs)(o.li,{children:["Deploy the ",(0,l.jsx)(o.a,{href:"/deployment-kubernetes#langflow-runtime-deployment",children:"Langflow runtime"})," to deploy a standalone Langflow application in a more secure and stable environment."]}),"\n"]}),"\n",(0,l.jsx)(o.h2,{id:"deploy-the-langflow-ide",children:"Deploy the Langflow IDE"}),"\n",(0,l.jsx)(o.p,{children:"The Langflow IDE deployment is a complete environment for developers to create, test, and debug their flows. It includes both the API and the UI."}),"\n",(0,l.jsxs)(o.p,{children:["The ",(0,l.jsx)(o.code,{children:"langflow-ide"})," Helm chart is available in the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/tree/main/charts/langflow-ide",children:"Langflow Helm Charts repository"}),"."]}),"\n",(0,l.jsx)(o.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsxs)(o.li,{children:["A ",(0,l.jsx)(o.a,{href:"https://kubernetes.io/docs/setup/",children:"Kubernetes"})," cluster"]}),"\n",(0,l.jsx)(o.li,{children:(0,l.jsx)(o.a,{href:"https://kubernetes.io/docs/tasks/tools/#kubectl",children:"kubectl"})}),"\n",(0,l.jsx)(o.li,{children:(0,l.jsx)(o.a,{href:"https://helm.sh/docs/intro/install/",children:"Helm"})}),"\n"]}),"\n",(0,l.jsx)(o.h3,{id:"prepare-a-kubernetes-cluster",children:"Prepare a Kubernetes cluster"}),"\n",(0,l.jsxs)(o.p,{children:["This example uses ",(0,l.jsx)(o.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"Minikube"}),", but you can use any Kubernetes cluster."]}),"\n",(0,l.jsxs)(o.ol,{children:["\n",(0,l.jsxs)(o.li,{children:["\n",(0,l.jsx)(o.p,{children:"Create a Kubernetes cluster on Minikube."}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"minikube start",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,l.jsxs)(o.li,{children:["\n",(0,l.jsxs)(o.p,{children:["Set ",(0,l.jsx)(o.code,{children:"kubectl"})," to use Minikube."]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl config use-context minikube",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(o.h3,{id:"install-the-langflow-ide-helm-chart",children:"Install the Langflow IDE Helm chart"}),"\n",(0,l.jsxs)(o.ol,{children:["\n",(0,l.jsxs)(o.li,{children:["\n",(0,l.jsx)(o.p,{children:"Add the repository to Helm and update it."}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm repo add langflow https://langflow-ai.github.io/langflow-helm-charts",props:{}}]},{tokens:[{content:"helm repo update",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,l.jsxs)(o.li,{children:["\n",(0,l.jsxs)(o.p,{children:["Install Langflow with the default options in the ",(0,l.jsx)(o.code,{children:"langflow"})," namespace."]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm install langflow-ide langflow/langflow-ide -n langflow --create-namespace",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,l.jsxs)(o.li,{children:["\n",(0,l.jsx)(o.p,{children:"Check the status of the pods"}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl get pods -n langflow",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"NAME READY STATUS RESTARTS AGE",props:{}}]},{tokens:[{content:"langflow-0 1/1 Running 0 33s",props:{}}]},{tokens:[{content:"langflow-frontend-5d9c558dbb-g7tc9 1/1 Running 0 38s",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(o.h3,{id:"configure-port-forwarding-to-access-langflow",children:"Configure port forwarding to access Langflow"}),"\n",(0,l.jsx)(o.p,{children:"Enable local port forwarding to access Langflow from your local machine."}),"\n",(0,l.jsxs)(o.ol,{children:["\n",(0,l.jsx)(o.li,{children:"To make the Langflow API accessible from your local machine at port 7860:"}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl port-forward -n langflow svc/langflow-service-backend 7860:7860",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,l.jsxs)(o.ol,{start:"2",children:["\n",(0,l.jsx)(o.li,{children:"To make the Langflow UI accessible from your local machine at port 8080:"}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl port-forward -n langflow svc/langflow-service 8080:8080",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,l.jsx)(o.p,{children:"Now you can access:"}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsxs)(o.li,{children:["The Langflow API at ",(0,l.jsx)(o.code,{children:"http://localhost:7860"})]}),"\n",(0,l.jsxs)(o.li,{children:["The Langflow UI at ",(0,l.jsx)(o.code,{children:"http://localhost:8080"})]}),"\n"]}),"\n",(0,l.jsx)(o.h3,{id:"configure-the-langflow-version",children:"Configure the Langflow version"}),"\n",(0,l.jsxs)(o.p,{children:["Langflow is deployed with the ",(0,l.jsx)(o.code,{children:"latest"})," version by default."]}),"\n",(0,l.jsxs)(o.p,{children:["To specify a different Langflow version, set the ",(0,l.jsx)(o.code,{children:"langflow.backend.image.tag"})," and ",(0,l.jsx)(o.code,{children:"langflow.frontend.image.tag"})," values in the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/blob/main/charts/langflow-ide/values.yaml",children:"values.yaml"})," file."]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" backend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" tag",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1.0.0a59"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" frontend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" tag",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1.0.0a59"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,l.jsx)(o.h3,{id:"configure-external-storage",children:"Configure external storage"}),"\n",(0,l.jsx)(o.p,{children:"By default, the chart deploys a SQLite database stored in a local persistent disk.\nIf you want to use an external PostgreSQL database, you can configure it in two ways:"}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsx)(o.li,{children:"Use the built-in PostgreSQL chart:"}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"postgresql",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" auth",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" username",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" password",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-postgres"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" database",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-db"',props:{style:{color:"#A5D6FF"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsx)(o.li,{children:"Use an external database:"}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"postgresql",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"langflow",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" backend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" externalDatabase",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" driver",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"postgresql"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" port",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"5432"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" user",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" password",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" valueFrom",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" secretKeyRef",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" key",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"password"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"your-secret-name"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" database",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"langflow-db"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" sqlite",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,l.jsx)(o.h3,{id:"configure-scaling",children:"Configure scaling"}),"\n",(0,l.jsx)(o.p,{children:"Scale the number of replicas and resources for both frontend and backend services:"}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" backend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" replicaCount",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"1",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" resources",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" requests",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" cpu",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"0.5",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" memory",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"1Gi",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" # limits:",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # cpu: 0.5",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # memory: 1Gi",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" frontend",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" enabled",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"true",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" replicaCount",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"1",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" resources",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" requests",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" cpu",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"0.3",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" memory",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"512Mi",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" # limits:",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # cpu: 0.3",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # memory: 512Mi",props:{style:{color:"#8B949E"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,l.jsx)(o.h2,{id:"deploy-the-langflow-runtime",children:"Deploy the Langflow runtime"}),"\n",(0,l.jsx)(o.p,{children:"The runtime 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."}),"\n",(0,l.jsxs)(o.p,{children:["The ",(0,l.jsx)(o.code,{children:"langflow-runtime"})," Helm chart is available in the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/tree/main/charts/langflow-runtime",children:"Langflow Helm Charts repository"}),"."]}),"\n",(0,l.jsx)(o.h3,{id:"prerequisites-1",children:"Prerequisites"}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsxs)(o.li,{children:["A ",(0,l.jsx)(o.a,{href:"https://kubernetes.io/docs/setup/",children:"Kubernetes"})," server"]}),"\n",(0,l.jsx)(o.li,{children:(0,l.jsx)(o.a,{href:"https://kubernetes.io/docs/tasks/tools/#kubectl",children:"kubectl"})}),"\n",(0,l.jsx)(o.li,{children:(0,l.jsx)(o.a,{href:"https://helm.sh/docs/intro/install/",children:"Helm"})}),"\n"]}),"\n",(0,l.jsx)(o.h3,{id:"install-the-langflow-runtime-helm-chart",children:"Install the Langflow runtime Helm chart"}),"\n",(0,l.jsxs)(o.ol,{children:["\n",(0,l.jsx)(o.li,{children:"Add the repository to Helm."}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"repo add langflow https://langflow-ai.github.io/langflow-helm-charts",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"repo update",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsxs)(o.ol,{start:"2",children:["\n",(0,l.jsxs)(o.li,{children:["Install the Langflow app with the default options in the ",(0,l.jsx)(o.code,{children:"langflow"})," namespace."]}),"\n"]}),"\n",(0,l.jsxs)(o.p,{children:["If you have a created a ",(0,l.jsx)(o.a,{href:"/deployment-docker#package-your-flow-as-a-docker-image",children:"custom image with packaged flows"}),", you can deploy Langflow by overriding the default ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/blob/main/charts/langflow-runtime/values.yaml",children:"values.yaml"})," file with the ",(0,l.jsx)(o.code,{children:"--set"})," flag."]}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsx)(o.li,{children:"Use a custom image with bundled flows:"}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"install my-langflow-app langflow/langflow-runtime ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"--create-namespace --set ",props:{style:{color:"#79C0FF"}}},{content:"image.repository=myuser/langflow-hello-world ",props:{style:{color:"#A5D6FF"}}},{content:"--set ",props:{style:{color:"#79C0FF"}}},{content:"image.tag=",props:{style:{color:"#A5D6FF"}}},{content:"1.0.0",props:{style:{color:"#79C0FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsxs)(o.ul,{children:["\n",(0,l.jsxs)(o.li,{children:["Alternatively, install the chart and download the flows from a URL with the ",(0,l.jsx)(o.code,{children:"--set"})," flag:"]}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"install my-langflow-app-with-flow langflow/langflow-runtime ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -n ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --create-namespace \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --set ",props:{style:{color:"#79C0FF"}}},{content:"'downloadFlows.flows[0].url=https://raw.githubusercontent.com/langflow-ai/langflow/dev/tests/data/basic_example.json'",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsxs)(o.admonition,{type:"important",children:[(0,l.jsx)(o.p,{children:"You may need to escape the square brackets in this command if you are using a shell that requires it:"}),(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"install my-langflow-app-with-flow langflow/langflow-runtime ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -n ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --create-namespace \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --set ",props:{style:{color:"#79C0FF"}}},{content:"'downloadFlows.flows\\[0\\].url=https://raw.githubusercontent.com/langflow-ai/langflow/dev/tests/data/basic_example.json'",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]})]}),"\n",(0,l.jsxs)(o.ol,{start:"3",children:["\n",(0,l.jsx)(o.li,{children:"Check the status of the pods."}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl ",props:{style:{color:"#FFA657"}}},{content:"get pods ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsx)(o.h3,{id:"access-the-langflow-app-api",children:"Access the Langflow app API"}),"\n",(0,l.jsxs)(o.ol,{children:["\n",(0,l.jsx)(o.li,{children:"Get your service name."}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl ",props:{style:{color:"#FFA657"}}},{content:"get svc ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsxs)(o.p,{children:["The service name is your release name followed by ",(0,l.jsx)(o.code,{children:"-langflow-runtime"}),". For example, if you used ",(0,l.jsx)(o.code,{children:"helm install my-langflow-app-with-flow"})," the service name is ",(0,l.jsx)(o.code,{children:"my-langflow-app-with-flow-langflow-runtime"}),"."]}),"\n",(0,l.jsxs)(o.ol,{start:"2",children:["\n",(0,l.jsx)(o.li,{children:"Enable port forwarding to access Langflow from your local machine:"}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl ",props:{style:{color:"#FFA657"}}},{content:"port-forward ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow svc/my-langflow-app-with-flow-langflow-runtime 7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860",props:{style:{color:"#79C0FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsxs)(o.ol,{start:"3",children:["\n",(0,l.jsxs)(o.li,{children:["Confirm you can access the API at ",(0,l.jsx)(o.code,{children:"http://localhost:7860/api/v1/flows/"})," and view a list of flows."]}),"\n"]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-v ",props:{style:{color:"#79C0FF"}}},{content:"http://localhost:7860/api/v1/flows/",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsxs)(o.ol,{start:"4",children:["\n",(0,l.jsx)(o.li,{children:"Execute the packaged flow."}),"\n"]}),"\n",(0,l.jsx)(o.p,{children:"The following command gets the first flow ID from the flows list and runs the flow."}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# Get flow ID",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"id",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"$(",props:{style:{color:"#A5D6FF"}}},{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-s",props:{style:{color:"#79C0FF"}}},{content:' "http://localhost:7860/api/v1/flows/" ',props:{style:{color:"#A5D6FF"}}},{content:"| ",props:{style:{color:"#FF7B72"}}},{content:"jq ",props:{style:{color:"#FFA657"}}},{content:"-r",props:{style:{color:"#79C0FF"}}},{content:" '.[0].id')",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"# Run flow",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:"POST ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:' "http://localhost:7860/api/v1/run/',props:{style:{color:"#A5D6FF"}}},{content:"$id",props:{style:{color:"#C9D1D9"}}},{content:'?stream=false" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:"'Content-Type: application/json' ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "Hello!",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }'",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,l.jsx)(o.h3,{id:"configure-secrets",children:"Configure secrets"}),"\n",(0,l.jsxs)(o.p,{children:["To inject secrets and Langflow global variables, use the ",(0,l.jsx)(o.code,{children:"secrets"})," and ",(0,l.jsx)(o.code,{children:"env"})," sections in the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/blob/main/charts/langflow-runtime/values.yaml",children:"values.yaml"})," file."]}),"\n",(0,l.jsxs)(o.p,{children:["For example, the ",(0,l.jsx)(o.a,{href:"https://raw.githubusercontent.com/langflow-ai/langflow-helm-charts/refs/heads/main/examples/flows/basic-prompting-hello-world.json",children:"example flow JSON"})," uses a global variable that is a secret. When you export the flow as JSON, it's recommended to not include the secret."]}),"\n",(0,l.jsx)(o.p,{children:"Instead, when importing the flow in the Langflow runtime, you can set the global variable in one of the following ways:"}),"\n",(0,l.jsxs)(c.A,{children:[(0,l.jsxs)(a.A,{value:"values",label:"Using values.yaml",children:[(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"env",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai_key_var",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" valueFrom",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" secretKeyRef",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai-key",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" key",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai-key",props:{style:{color:"#A5D6FF"}}}]}],lang:"yaml"},annotations:[]}]}),(0,l.jsx)(o.p,{children:"Or directly in the values file (not recommended for secret values):"}),(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"env",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"openai_key_var",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"sk-...."',props:{style:{color:"#A5D6FF"}}}]}],lang:"yaml"},annotations:[]}]})]}),(0,l.jsxs)(a.A,{value:"helm",label:"Using Helm Commands",children:[(0,l.jsxs)(o.ol,{children:["\n",(0,l.jsx)(o.li,{children:"Create the secret:"}),"\n"]}),(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl ",props:{style:{color:"#FFA657"}}},{content:"create secret generic openai-credentials ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --namespace ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --from-literal=OPENAI_API_KEY=sk...",props:{style:{color:"#79C0FF"}}}]}],lang:"shell"},annotations:[]}]}),(0,l.jsxs)(o.ol,{start:"2",children:["\n",(0,l.jsx)(o.li,{children:"Verify the secret exists. The result is encrypted."}),"\n"]}),(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kubectl ",props:{style:{color:"#FFA657"}}},{content:"get secrets ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow openai-credentials",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),(0,l.jsxs)(o.ol,{start:"3",children:["\n",(0,l.jsx)(o.li,{children:"Upgrade the Helm release to use the secret."}),"\n"]}),(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"helm ",props:{style:{color:"#FFA657"}}},{content:"upgrade my-langflow-app-image langflow/langflow-runtime ",props:{style:{color:"#A5D6FF"}}},{content:"-n ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --reuse-values \\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --set ",props:{style:{color:"#79C0FF"}}},{content:'"extraEnv[0].name=OPENAI_API_KEY" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --set ",props:{style:{color:"#79C0FF"}}},{content:'"extraEnv[0].valueFrom.secretKeyRef.name=openai-credentials" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" --set ",props:{style:{color:"#79C0FF"}}},{content:'"extraEnv[0].valueFrom.secretKeyRef.key=OPENAI_API_KEY"',props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]})]})]}),"\n",(0,l.jsx)(o.h3,{id:"configure-the-log-level",children:"Configure the log level"}),"\n",(0,l.jsxs)(o.p,{children:["Set the log level and other Langflow configurations in the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/blob/main/charts/langflow-runtime/values.yaml",children:"values.yaml"})," file."]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"env",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_LOG_LEVEL",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" value",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"INFO"',props:{style:{color:"#A5D6FF"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,l.jsx)(o.h3,{id:"configure-scaling-1",children:"Configure scaling"}),"\n",(0,l.jsxs)(o.p,{children:["To scale the number of replicas for the Langflow appplication, change the ",(0,l.jsx)(o.code,{children:"replicaCount"})," value in the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/blob/main/charts/langflow-runtime/values.yaml",children:"values.yaml"})," file."]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"replicaCount",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"3",props:{style:{color:"#79C0FF"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,l.jsxs)(o.p,{children:["To scale the application vertically by increasing the resources for the pods, change the ",(0,l.jsx)(o.code,{children:"resources"})," values in the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/blob/main/charts/langflow-runtime/values.yaml",children:"values.yaml"})," file."]}),"\n",(0,l.jsx)(d.Code,{codeConfig:u,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"resources",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" requests",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" memory",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2Gi"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" cpu",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"1000m"',props:{style:{color:"#A5D6FF"}}}]}],lang:"yaml"},annotations:[]}]}),"\n",(0,l.jsx)(o.h2,{id:"deploy-langflow-on-aws-eks-google-gke-or-azure-aks-and-other-examples",children:"Deploy Langflow on AWS EKS, Google GKE, or Azure AKS and other examples"}),"\n",(0,l.jsxs)(o.p,{children:["For more information, see the ",(0,l.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts",children:"Langflow Helm Charts repository"}),"."]})]})}function y(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,l.jsx)(o,{...e,children:(0,l.jsx)(g,{...e})}):g(e)}function m(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},65537:(e,o,t)=>{t.d(o,{A:()=>C});var n=t(96540),l=t(18215),s=t(65627),r=t(56347),c=t(50372),a=t(30604),i=t(11861),p=t(78749);function h(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:o}=e;return!!o&&"object"==typeof o&&"value"in o}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function d(e){const{values:o,children:t}=e;return(0,n.useMemo)((()=>{const e=o??function(e){return h(e).map((e=>{let{props:{value:o,label:t,attributes:n,default:l}}=e;return{value:o,label:t,attributes:n,default:l}}))}(t);return function(e){const o=(0,i.XI)(e,((e,o)=>e.value===o.value));if(o.length>0)throw new Error(`Docusaurus error: Duplicate values "${o.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[o,t])}function u(e){let{value:o,tabValues:t}=e;return t.some((e=>e.value===o))}function f(e){let{queryString:o=!1,groupId:t}=e;const l=(0,r.W6)(),s=function(e){let{queryString:o=!1,groupId:t}=e;if("string"==typeof o)return o;if(!1===o)return null;if(!0===o&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:o,groupId:t});return[(0,a.aZ)(s),(0,n.useCallback)((e=>{if(!s)return;const o=new URLSearchParams(l.location.search);o.set(s,e),l.replace({...l.location,search:o.toString()})}),[s,l])]}function g(e){const{defaultValue:o,queryString:t=!1,groupId:l}=e,s=d(e),[r,a]=(0,n.useState)((()=>function(e){let{defaultValue:o,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(o){if(!u({value:o,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${o}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return o}const n=t.find((e=>e.default))??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:o,tabValues:s}))),[i,h]=f({queryString:t,groupId:l}),[g,y]=function(e){let{groupId:o}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(o),[l,s]=(0,p.Dv)(t);return[l,(0,n.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:l}),m=(()=>{const e=i??g;return u({value:e,tabValues:s})?e:null})();(0,c.A)((()=>{m&&a(m)}),[m]);return{selectedValue:r,selectValue:(0,n.useCallback)((e=>{if(!u({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);a(e),h(e),y(e)}),[h,y,s]),tabValues:s}}var y=t(9136);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var F=t(74848);function w(e){let{className:o,block:t,selectedValue:n,selectValue:r,tabValues:c}=e;const a=[],{blockElementScrollPositionUntilNextRender:i}=(0,s.a_)(),p=e=>{const o=e.currentTarget,t=a.indexOf(o),l=c[t].value;l!==n&&(i(o),r(l))},h=e=>{let o=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const t=a.indexOf(e.currentTarget)+1;o=a[t]??a[0];break}case"ArrowLeft":{const t=a.indexOf(e.currentTarget)-1;o=a[t]??a[a.length-1];break}}o?.focus()};return(0,F.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":t},o),children:c.map((e=>{let{value:o,label:t,attributes:s}=e;return(0,F.jsx)("li",{role:"tab",tabIndex:n===o?0:-1,"aria-selected":n===o,ref:e=>{a.push(e)},onKeyDown:h,onClick:p,...s,className:(0,l.A)("tabs__item",m.tabItem,s?.className,{"tabs__item--active":n===o}),children:t??o},o)}))})}function b(e){let{lazy:o,children:t,selectedValue:s}=e;const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(o){const e=r.find((e=>e.props.value===s));return e?(0,n.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,F.jsx)("div",{className:"margin-top--md",children:r.map(((e,o)=>(0,n.cloneElement)(e,{key:o,hidden:e.props.value!==s})))})}function D(e){const o=g(e);return(0,F.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,F.jsx)(w,{...o,...e}),(0,F.jsx)(b,{...o,...e})]})}function C(e){const o=(0,y.A)();return(0,F.jsx)(D,{...e,children:h(e.children)},String(o))}},79329:(e,o,t)=>{t.d(o,{A:()=>r});t(96540);var n=t(18215);const l={tabItem:"tabItem_Ymn6"};var s=t(74848);function r(e){let{children:o,hidden:t,className:r}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,n.A)(l.tabItem,r),hidden:t,children:o})}}}]); \ No newline at end of file diff --git a/assets/js/dc7b1ef3.2932102b.js b/assets/js/dc7b1ef3.2932102b.js new file mode 100644 index 0000000000..978adec5af --- /dev/null +++ b/assets/js/dc7b1ef3.2932102b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[868],{75671:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>a,assets:()=>d,chCodeConfig:()=>h,contentTitle:()=>i,default:()=>u,frontMatter:()=>c,metadata:()=>l,toc:()=>p});const l=JSON.parse('{"id":"Deployment/deployment-docker","title":"Deploy Langflow on Docker","description":"This guide demonstrates deploying Langflow with Docker and Docker Compose.","source":"@site/docs/Deployment/deployment-docker.md","sourceDirName":"Deployment","slug":"/deployment-docker","permalink":"/deployment-docker","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Deploy Langflow on Docker","slug":"/deployment-docker"},"sidebar":"docs","previous":{"title":"Security best practices","permalink":"/configuration-security-best-practices"},"next":{"title":"Google Cloud Platform","permalink":"/deployment-gcp"}}');var s=n(74848),r=n(28453),t=n(24754);const c={title:"Deploy Langflow on Docker",slug:"/deployment-docker"},i=void 0,d={},a={annotations:t.hk,Code:t.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Clone the repo and build the Langflow Docker container",id:"clone-the-repo-and-build-the-langflow-docker-container",level:2},{value:"Configure Docker services",id:"configure-docker-services",level:2},{value:"Langflow service",id:"langflow-service",level:3},{value:"PostgreSQL service",id:"postgresql-service",level:3},{value:"Deploy a specific Langflow version with Docker Compose",id:"deploy-a-specific-langflow-version-with-docker-compose",level:3},{value:"Package your flow as a Docker image",id:"package-your-flow-as-a-docker-image",level:2}];function g(e){const o={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",ul:"ul",...(0,r.R)(),...e.components};return a||f("CH",!1),a.Code||f("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,s.jsx)(o.p,{children:"This guide demonstrates deploying Langflow with Docker and Docker Compose."}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://docs.docker.com/",children:"Docker"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://docs.docker.com/compose/",children:"Docker Compose"})}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"clone-the-repo-and-build-the-langflow-docker-container",children:"Clone the repo and build the Langflow Docker container"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Clone the Langflow repository:"}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.code,{children:"git clone https://github.com/langflow-ai/langflow.git"})}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Navigate to the ",(0,s.jsx)(o.code,{children:"docker_example"})," directory:"]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.code,{children:"cd langflow/docker_example"})}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Run the Docker Compose file:"}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.code,{children:"docker compose up"})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.p,{children:["Langflow is now accessible at ",(0,s.jsx)(o.code,{children:"http://localhost:7860/"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"configure-docker-services",children:"Configure Docker services"}),"\n",(0,s.jsxs)(o.p,{children:["The Docker Compose configuration spins up two services: ",(0,s.jsx)(o.code,{children:"langflow"})," and ",(0,s.jsx)(o.code,{children:"postgres"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["To configure values for these services at container startup, include them in your ",(0,s.jsx)(o.code,{children:".env"})," file."]}),"\n",(0,s.jsxs)(o.p,{children:["An example ",(0,s.jsx)(o.code,{children:".env"})," file is available in the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:"project repository"}),"."]}),"\n",(0,s.jsxs)(o.p,{children:["To pass the ",(0,s.jsx)(o.code,{children:".env"})," values at container startup, include the flag in your ",(0,s.jsx)(o.code,{children:"docker run"})," command:"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker run -it --rm \\",props:{}}]},{tokens:[{content:" -p 7860:7860 \\",props:{}}]},{tokens:[{content:" --env-file .env \\",props:{}}]},{tokens:[{content:" langflowai/langflow:latest",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(o.h3,{id:"langflow-service",children:"Langflow service"}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:"langflow"}),"service serves both the backend API and frontend UI of the Langflow web application."]}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:"langflow"})," service uses the ",(0,s.jsx)(o.code,{children:"langflowai/langflow:latest"})," Docker image and exposes port ",(0,s.jsx)(o.code,{children:"7860"}),". It depends on the ",(0,s.jsx)(o.code,{children:"postgres"})," service."]}),"\n",(0,s.jsx)(o.p,{children:"Environment variables:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"LANGFLOW_DATABASE_URL"}),": The connection string for the PostgreSQL database."]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"LANGFLOW_CONFIG_DIR"}),": The directory where Langflow stores logs, file storage, monitor data, and secret keys."]}),"\n"]}),"\n",(0,s.jsx)(o.p,{children:"Volumes:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"langflow-data"}),": This volume is mapped to ",(0,s.jsx)(o.code,{children:"/app/langflow"})," in the container."]}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"postgresql-service",children:"PostgreSQL service"}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:"postgres"})," service is a database that stores Langflow's persistent data including flows, users, and settings."]}),"\n",(0,s.jsx)(o.p,{children:"The service runs on port 5432 and includes a dedicated volume for data storage."}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:"postgres"})," service uses the ",(0,s.jsx)(o.code,{children:"postgres:16"})," Docker image."]}),"\n",(0,s.jsx)(o.p,{children:"Environment variables:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"POSTGRES_USER"}),": The username for the PostgreSQL database."]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"POSTGRES_PASSWORD"}),": The password for the PostgreSQL database."]}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"POSTGRES_DB"}),": The name of the PostgreSQL database."]}),"\n"]}),"\n",(0,s.jsx)(o.p,{children:"Volumes:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"langflow-postgres"}),": This volume is mapped to ",(0,s.jsx)(o.code,{children:"/var/lib/postgresql/data"})," in the container."]}),"\n"]}),"\n",(0,s.jsx)(o.h3,{id:"deploy-a-specific-langflow-version-with-docker-compose",children:"Deploy a specific Langflow version with Docker Compose"}),"\n",(0,s.jsxs)(o.p,{children:["If you want to deploy a specific version of Langflow, you can modify the ",(0,s.jsx)(o.code,{children:"image"})," field under the ",(0,s.jsx)(o.code,{children:"langflow"})," service in the Docker Compose file. For example, to use version ",(0,s.jsx)(o.code,{children:"1.0-alpha"}),", change ",(0,s.jsx)(o.code,{children:"langflowai/langflow:latest"})," to ",(0,s.jsx)(o.code,{children:"langflowai/langflow:1.0-alpha"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"package-your-flow-as-a-docker-image",children:"Package your flow as a Docker image"}),"\n",(0,s.jsxs)(o.p,{children:["You can include your Langflow flow with the application image.\nWhen you build the image, your saved flow ",(0,s.jsx)(o.code,{children:".JSON"})," flow is included.\nThis enables you to serve a flow from a container, push the image to Docker Hub, and deploy on Kubernetes."]}),"\n",(0,s.jsxs)(o.p,{children:["An example flow is available in the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow-helm-charts/tree/main/examples/flows",children:"Langflow Helm Charts"})," repository, or you can provide your own ",(0,s.jsx)(o.code,{children:"JSON"})," file."]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsx)(o.li,{children:"Create a project directory:"}),"\n"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"mkdir ",props:{style:{color:"#FFA657"}}},{content:"langflow-custom",props:{style:{color:"#A5D6FF"}}},{content:" && ",props:{style:{color:"#C9D1D9"}}},{content:"cd ",props:{style:{color:"#79C0FF"}}},{content:"langflow-custom",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,s.jsxs)(o.ol,{start:"2",children:["\n",(0,s.jsxs)(o.li,{children:["Download the example flow or include your flow's ",(0,s.jsx)(o.code,{children:".JSON"})," file in the ",(0,s.jsx)(o.code,{children:"langflow-custom"})," directory."]}),"\n"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"wget ",props:{style:{color:"#FFA657"}}},{content:"https://raw.githubusercontent.com/langflow-ai/langflow-helm-charts/refs/heads/main/examples/flows/basic-prompting-hello-world.json",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,s.jsxs)(o.ol,{start:"3",children:["\n",(0,s.jsx)(o.li,{children:"Create a Dockerfile:"}),"\n"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"FROM",props:{style:{color:"#FF7B72"}}},{content:" langflowai/langflow:latest",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"RUN",props:{style:{color:"#FF7B72"}}},{content:" mkdir /app/flows",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"COPY",props:{style:{color:"#FF7B72"}}},{content:" ./*json /app/flows/.",props:{style:{color:"#C9D1D9"}}}]}],lang:"dockerfile"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The ",(0,s.jsx)(o.code,{children:"COPY ./*json"})," command copies all JSON files in your current directory to the ",(0,s.jsx)(o.code,{children:"/flows"})," folder."]}),"\n",(0,s.jsxs)(o.ol,{start:"4",children:["\n",(0,s.jsx)(o.li,{children:"Build and run the image locally."}),"\n"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"build ",props:{style:{color:"#A5D6FF"}}},{content:"-t ",props:{style:{color:"#79C0FF"}}},{content:"myuser/langflow-hello-world:",props:{style:{color:"#A5D6FF"}}},{content:"1.0.0 ",props:{style:{color:"#79C0FF"}}},{content:".",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"-p ",props:{style:{color:"#79C0FF"}}},{content:"7860:",props:{style:{color:"#A5D6FF"}}},{content:"7860 ",props:{style:{color:"#79C0FF"}}},{content:"myuser/langflow-hello-world:",props:{style:{color:"#A5D6FF"}}},{content:"1.0.0",props:{style:{color:"#79C0FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,s.jsxs)(o.ol,{start:"5",children:["\n",(0,s.jsxs)(o.li,{children:["Build and push the image to Docker Hub.\nReplace ",(0,s.jsx)(o.code,{children:"myuser"})," with your Docker Hub username."]}),"\n"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"build ",props:{style:{color:"#A5D6FF"}}},{content:"-t ",props:{style:{color:"#79C0FF"}}},{content:"myuser/langflow-hello-world:",props:{style:{color:"#A5D6FF"}}},{content:"1.0.0 ",props:{style:{color:"#79C0FF"}}},{content:".",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"push myuser/langflow-hello-world:",props:{style:{color:"#A5D6FF"}}},{content:"1.0.0",props:{style:{color:"#79C0FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["To deploy the image with Helm, see ",(0,s.jsx)(o.a,{href:"/deployment-kubernetes#langflow-runtime-deployment",children:"Langflow runtime deployment"}),"."]})]})}function u(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(g,{...e})}):g(e)}function f(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/dc7b1ef3.6b1741d9.js b/assets/js/dc7b1ef3.6b1741d9.js deleted file mode 100644 index e3047f4667..0000000000 --- a/assets/js/dc7b1ef3.6b1741d9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[868],{28453:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>r});var s=o(96540);const c={},l=s.createContext(c);function i(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),s.createElement(l.Provider,{value:n},e.children)}},75671:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>t});const s=JSON.parse('{"id":"Deployment/deployment-docker","title":"Docker","description":"This guide will help you get LangFlow up and running using Docker and Docker Compose.","source":"@site/docs/Deployment/deployment-docker.md","sourceDirName":"Deployment","slug":"/Deployment/deployment-docker","permalink":"/Deployment/deployment-docker","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Docker","lug":"/deployment-docker"},"sidebar":"docs","previous":{"title":"Security best practices","permalink":"/configuration-security-best-practices"},"next":{"title":"GCP","permalink":"/deployment-gcp"}}');var c=o(74848),l=o(28453);const i={title:"Docker",lug:"/deployment-docker"},r=void 0,d={},t=[{value:"Prerequisites",id:"856bb2d98156402bbd1980365b98110c",level:2},{value:"Docker",id:"55b5d304f2294e47b0dcd3e069cf5e67",level:2},{value:"Clone repo and build Docker container",id:"ba89773aa8b8425b985bfe7ba91c35cc",level:3},{value:"Docker Compose configuration",id:"02226209cad24185a6ec5b69bd820d0f",level:3},{value:"LangFlow service",id:"d749848451ea43bd86f6f096dc77e6e6",level:3},{value:"PostgreSQL service",id:"121140decbfe4997b12213bdd2c4da7e",level:3},{value:"Switch to a specific LangFlow version",id:"2b3e191ea48f4feab89242433cf012d5",level:3}];function a(e){const n={code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",ul:"ul",...(0,l.R)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(n.p,{children:"This guide will help you get LangFlow up and running using Docker and Docker Compose."}),"\n",(0,c.jsx)(n.h2,{id:"856bb2d98156402bbd1980365b98110c",children:"Prerequisites"}),"\n",(0,c.jsx)(n.hr,{}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsx)(n.li,{children:"Docker"}),"\n",(0,c.jsx)(n.li,{children:"Docker Compose"}),"\n"]}),"\n",(0,c.jsx)(n.h2,{id:"55b5d304f2294e47b0dcd3e069cf5e67",children:"Docker"}),"\n",(0,c.jsx)(n.hr,{}),"\n",(0,c.jsx)(n.h3,{id:"ba89773aa8b8425b985bfe7ba91c35cc",children:"Clone repo and build Docker container"}),"\n",(0,c.jsxs)(n.ol,{children:["\n",(0,c.jsxs)(n.li,{children:["\n",(0,c.jsx)(n.p,{children:"Clone the LangFlow repository:"}),"\n",(0,c.jsx)(n.p,{children:(0,c.jsx)(n.code,{children:"git clone https://github.com/langflow-ai/langflow.git"})}),"\n"]}),"\n",(0,c.jsxs)(n.li,{children:["\n",(0,c.jsxs)(n.p,{children:["Navigate to the\xa0",(0,c.jsx)(n.code,{children:"docker_example"}),"\xa0directory:"]}),"\n",(0,c.jsx)(n.p,{children:(0,c.jsx)(n.code,{children:"cd langflow/docker_example"})}),"\n"]}),"\n",(0,c.jsxs)(n.li,{children:["\n",(0,c.jsx)(n.p,{children:"Run the Docker Compose file:"}),"\n",(0,c.jsx)(n.p,{children:(0,c.jsx)(n.code,{children:"docker compose up"})}),"\n"]}),"\n"]}),"\n",(0,c.jsxs)(n.p,{children:["LangFlow will now be accessible at ",(0,c.jsx)(n.code,{children:"http://localhost:7860/"}),"."]}),"\n",(0,c.jsx)(n.h3,{id:"02226209cad24185a6ec5b69bd820d0f",children:"Docker Compose configuration"}),"\n",(0,c.jsxs)(n.p,{children:["The Docker Compose configuration spins up two services:\xa0",(0,c.jsx)(n.code,{children:"langflow"}),"\xa0and\xa0",(0,c.jsx)(n.code,{children:"postgres"}),"."]}),"\n",(0,c.jsx)(n.h3,{id:"d749848451ea43bd86f6f096dc77e6e6",children:"LangFlow service"}),"\n",(0,c.jsxs)(n.p,{children:["The\xa0",(0,c.jsx)(n.code,{children:"langflow"}),"\xa0service uses the\xa0",(0,c.jsx)(n.code,{children:"langflowai/langflow:latest"}),"\xa0Docker image and exposes port 7860. It depends on the\xa0",(0,c.jsx)(n.code,{children:"postgres"}),"\xa0service."]}),"\n",(0,c.jsx)(n.p,{children:"Environment variables:"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"LANGFLOW_DATABASE_URL"}),": The connection string for the PostgreSQL database."]}),"\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"LANGFLOW_CONFIG_DIR"}),": The directory where LangFlow stores logs, file storage, monitor data, and secret keys."]}),"\n"]}),"\n",(0,c.jsx)(n.p,{children:"Volumes:"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"langflow-data"}),": This volume is mapped to\xa0",(0,c.jsx)(n.code,{children:"/app/langflow"}),"\xa0in the container."]}),"\n"]}),"\n",(0,c.jsx)(n.h3,{id:"121140decbfe4997b12213bdd2c4da7e",children:"PostgreSQL service"}),"\n",(0,c.jsxs)(n.p,{children:["The\xa0",(0,c.jsx)(n.code,{children:"postgres"}),"\xa0service uses the\xa0",(0,c.jsx)(n.code,{children:"postgres:16"}),"\xa0Docker image and exposes port 5432."]}),"\n",(0,c.jsx)(n.p,{children:"Environment variables:"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"POSTGRES_USER"}),": The username for the PostgreSQL database."]}),"\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"POSTGRES_PASSWORD"}),": The password for the PostgreSQL database."]}),"\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"POSTGRES_DB"}),": The name of the PostgreSQL database."]}),"\n"]}),"\n",(0,c.jsx)(n.p,{children:"Volumes:"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"langflow-postgres"}),": This volume is mapped to\xa0",(0,c.jsx)(n.code,{children:"/var/lib/postgresql/data"}),"\xa0in the container."]}),"\n"]}),"\n",(0,c.jsx)(n.h3,{id:"2b3e191ea48f4feab89242433cf012d5",children:"Switch to a specific LangFlow version"}),"\n",(0,c.jsxs)(n.p,{children:["If you want to use a specific version of LangFlow, you can modify the\xa0",(0,c.jsx)(n.code,{children:"image"}),"\xa0field under the\xa0",(0,c.jsx)(n.code,{children:"langflow"}),"\xa0service in the Docker Compose file. For example, to use version 1.0-alpha, change\xa0",(0,c.jsx)(n.code,{children:"langflowai/langflow:latest"}),"\xa0to\xa0",(0,c.jsx)(n.code,{children:"langflowai/langflow:1.0-alpha"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,c.jsx)(n,{...e,children:(0,c.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/e6c6a4d2.17a197da.js b/assets/js/e6c6a4d2.c01924a2.js similarity index 56% rename from assets/js/e6c6a4d2.17a197da.js rename to assets/js/e6c6a4d2.c01924a2.js index b710c00aa2..0f496eae51 100644 --- a/assets/js/e6c6a4d2.17a197da.js +++ b/assets/js/e6c6a4d2.c01924a2.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8504],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var s=n(96540);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},94910:(e,t,n)=>{n.r(t),n.d(t,{contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});const s=JSON.parse('{"type":"api","id":"experimental-run-flow","title":"Experimental Run Flow","description":"","slug":"/experimental-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/{flow_id}\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","operationId":"experimental_run_flow_api_v1_run_advanced__flow_id__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flow Id"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"inputs":{"anyOf":[{"items":{"properties":{"components":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Components","default":[]},"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Type","description":"Defines on which components the input value should be applied. \'any\' applies to all input components.","default":"any"}},"additionalProperties":false,"type":"object","title":"InputValueRequest","examples":[{"components":["components_id","Component Name"],"input_value":"input_value","session":"session_id"},{"components":["Component Name"],"input_value":"input_value"},{"input_value":"input_value"},{"components":["Component Name"],"input_value":"input_value","session":"session_id"},{"input_value":"input_value","session":"session_id"},{"input_value":"input_value","type":"chat"},{"input_value":"{\\"key\\": \\"value\\"}","type":"json"}]},"type":"array"},{"type":"null"}],"title":"Inputs"},"outputs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outputs"},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}]},"stream":{"type":"boolean","title":"Stream","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"Body_experimental_run_flow_api_v1_run_advanced__flow_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"outputs":{"anyOf":[{"items":{"properties":{"inputs":{"type":"object","title":"Inputs"},"outputs":{"items":{"anyOf":[{"properties":{"results":{"anyOf":[{},{"type":"null"}],"title":"Results"},"artifacts":{"anyOf":[{},{"type":"null"}],"title":"Artifacts"},"outputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Outputs"},"logs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Logs"},"messages":{"anyOf":[{"items":{"properties":{"message":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"array"}],"title":"Message"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","default":"Machine"},"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name","default":"AI"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"files":{"items":{"properties":{"path":{"type":"string","title":"Path"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["path","name","type"],"title":"File","description":"File schema."},"type":"array","title":"Files","default":[]},"type":{"type":"string","title":"Type"}},"type":"object","required":["message","type"],"title":"ChatOutputResponse","description":"Chat output response schema."},"type":"array"},{"type":"null"}],"title":"Messages"},"timedelta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timedelta"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"component_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Display Name"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"used_frozen_result":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Used Frozen Result","default":false}},"type":"object","title":"ResultData"},{"type":"null"}]},"type":"array","title":"Outputs"}},"type":"object","title":"RunOutputs"},"type":"array"},{"type":"null"}],"title":"Outputs","default":[]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"RunResponse","description":"Run response schema."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/advanced/{flow_id}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"jsonRequestBodyExample":{"stream":false},"info":{"title":"Langflow","version":"1.2.0"},"postman":{"name":"Experimental Run Flow","description":{"content":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/{flow_id}\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","type":"text/plain"},"url":{"path":["api","v1","run","advanced",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"inputs\\": [\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n },\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n }\\n ],\\n \\"outputs\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"tweaks\\": {\\n \\"eiusmodb\\": \\"\\"\\n },\\n \\"stream\\": false,\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/experimental-run-flow","previous":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"},"next":{"title":"Process","permalink":"/api/process"}}');var i=n(74848),o=n(28453);const a={},l="Experimental Run Flow",r=[{value:"Parameters:",id:"parameters",level:3},{value:"Returns:",id:"returns",level:3},{value:"Raises:",id:"raises",level:3},{value:"Example usage:",id:"example-usage",level:3}];function p(e){const t={code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"experimental-run-flow",children:"Experimental Run Flow"})}),"\n",(0,i.jsx)(t.p,{children:"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability."}),"\n",(0,i.jsx)(t.p,{children:"This endpoint supports running flows with caching to enhance performance and efficiency."}),"\n",(0,i.jsx)(t.h3,{id:"parameters",children:"Parameters:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"flow_id"})," (str): The unique identifier of the flow to be executed."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"inputs"})," (List[InputValueRequest], optional): A list of inputs specifying the input values and components\nfor the flow. Each input can target specific components and provide custom values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"outputs"})," (List[str], optional): A list of output names to retrieve from the executed flow.\nIf not provided, all outputs are returned."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"tweaks"})," (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\nThe tweaks can be used to modify the flow's parameters and components.\nTweaks can be overridden by the input values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"stream"})," (bool, optional): Specifies whether the results should be streamed. Defaults to False."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"session_id"})," (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\nexecution."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"api_key_user"})," (User): The user associated with the current API key. Automatically resolved from the API key."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"returns",children:"Returns:"}),"\n",(0,i.jsxs)(t.p,{children:["A ",(0,i.jsx)(t.code,{children:"RunResponse"})," object containing the selected outputs (or all if not specified) of the executed flow\nand the session ID.\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input."]}),"\n",(0,i.jsx)(t.h3,{id:"raises",children:"Raises:"}),"\n",(0,i.jsx)(t.p,{children:"HTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\nflow execution."}),"\n",(0,i.jsx)(t.h3,{id:"example-usage",children:"Example usage:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-json",children:'POST /run/{flow_id}\nx-api-key: YOUR_API_KEY\nPayload:\n{\n "inputs": [\n {"components": ["component1"], "input_value": "value1"},\n {"components": ["component3"], "input_value": "value2"}\n ],\n "outputs": ["Component Name", "component_id"],\n "tweaks": {"parameter_name": "value", "Component Name": {"parameter_name": "value"}, "component_id": {"parameter_name": "value"}}\n "stream": false\n}\n'})}),"\n",(0,i.jsx)(t.p,{children:"This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\ncatering to diverse application requirements."}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"flow_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" uuid"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Request Body "}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"inputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Inputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"tweaks"}),(0,i.jsx)("span",{style:{opacity:"0.6"}})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"stream"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"})]})})]})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"200"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Successful Response"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})})]})]})})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"422"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Validation Error"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"detail"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"loc"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"msg"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"type"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8504],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var s=n(96540);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},94910:(e,t,n)=>{n.r(t),n.d(t,{contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});const s=JSON.parse('{"type":"api","id":"experimental-run-flow","title":"Experimental Run Flow","description":"","slug":"/experimental-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/{flow_id}\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","operationId":"experimental_run_flow_api_v1_run_advanced__flow_id__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flow Id"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"inputs":{"anyOf":[{"items":{"properties":{"components":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Components","default":[]},"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Type","description":"Defines on which components the input value should be applied. \'any\' applies to all input components.","default":"any"}},"additionalProperties":false,"type":"object","title":"InputValueRequest","examples":[{"components":["components_id","Component Name"],"input_value":"input_value","session":"session_id"},{"components":["Component Name"],"input_value":"input_value"},{"input_value":"input_value"},{"components":["Component Name"],"input_value":"input_value","session":"session_id"},{"input_value":"input_value","session":"session_id"},{"input_value":"input_value","type":"chat"},{"input_value":"{\\"key\\": \\"value\\"}","type":"json"}]},"type":"array"},{"type":"null"}],"title":"Inputs"},"outputs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outputs"},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}]},"stream":{"type":"boolean","title":"Stream","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"Body_experimental_run_flow_api_v1_run_advanced__flow_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"outputs":{"anyOf":[{"items":{"properties":{"inputs":{"type":"object","title":"Inputs"},"outputs":{"items":{"anyOf":[{"properties":{"results":{"anyOf":[{},{"type":"null"}],"title":"Results"},"artifacts":{"anyOf":[{},{"type":"null"}],"title":"Artifacts"},"outputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Outputs"},"logs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Logs"},"messages":{"anyOf":[{"items":{"properties":{"message":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"array"}],"title":"Message"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","default":"Machine"},"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name","default":"AI"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"files":{"items":{"properties":{"path":{"type":"string","title":"Path"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["path","name","type"],"title":"File","description":"File schema."},"type":"array","title":"Files","default":[]},"type":{"type":"string","title":"Type"}},"type":"object","required":["message","type"],"title":"ChatOutputResponse","description":"Chat output response schema."},"type":"array"},{"type":"null"}],"title":"Messages"},"timedelta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timedelta"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"component_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Display Name"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"used_frozen_result":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Used Frozen Result","default":false}},"type":"object","title":"ResultData"},{"type":"null"}]},"type":"array","title":"Outputs"}},"type":"object","title":"RunOutputs"},"type":"array"},{"type":"null"}],"title":"Outputs","default":[]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"RunResponse","description":"Run response schema."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/advanced/{flow_id}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"jsonRequestBodyExample":{"stream":false},"info":{"title":"Langflow","version":"1.2.0"},"postman":{"name":"Experimental Run Flow","description":{"content":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/{flow_id}\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","type":"text/plain"},"url":{"path":["api","v1","run","advanced",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"inputs\\": [\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n },\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n }\\n ],\\n \\"outputs\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"tweaks\\": {\\n \\"nostrud65\\": \\"\\",\\n \\"aliquip_43\\": \\"\\"\\n },\\n \\"stream\\": false,\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/experimental-run-flow","previous":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"},"next":{"title":"Process","permalink":"/api/process"}}');var i=n(74848),o=n(28453);const a={},l="Experimental Run Flow",r=[{value:"Parameters:",id:"parameters",level:3},{value:"Returns:",id:"returns",level:3},{value:"Raises:",id:"raises",level:3},{value:"Example usage:",id:"example-usage",level:3}];function p(e){const t={code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"experimental-run-flow",children:"Experimental Run Flow"})}),"\n",(0,i.jsx)(t.p,{children:"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability."}),"\n",(0,i.jsx)(t.p,{children:"This endpoint supports running flows with caching to enhance performance and efficiency."}),"\n",(0,i.jsx)(t.h3,{id:"parameters",children:"Parameters:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"flow_id"})," (str): The unique identifier of the flow to be executed."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"inputs"})," (List[InputValueRequest], optional): A list of inputs specifying the input values and components\nfor the flow. Each input can target specific components and provide custom values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"outputs"})," (List[str], optional): A list of output names to retrieve from the executed flow.\nIf not provided, all outputs are returned."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"tweaks"})," (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\nThe tweaks can be used to modify the flow's parameters and components.\nTweaks can be overridden by the input values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"stream"})," (bool, optional): Specifies whether the results should be streamed. Defaults to False."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"session_id"})," (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\nexecution."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"api_key_user"})," (User): The user associated with the current API key. Automatically resolved from the API key."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"returns",children:"Returns:"}),"\n",(0,i.jsxs)(t.p,{children:["A ",(0,i.jsx)(t.code,{children:"RunResponse"})," object containing the selected outputs (or all if not specified) of the executed flow\nand the session ID.\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input."]}),"\n",(0,i.jsx)(t.h3,{id:"raises",children:"Raises:"}),"\n",(0,i.jsx)(t.p,{children:"HTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\nflow execution."}),"\n",(0,i.jsx)(t.h3,{id:"example-usage",children:"Example usage:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-json",children:'POST /run/{flow_id}\nx-api-key: YOUR_API_KEY\nPayload:\n{\n "inputs": [\n {"components": ["component1"], "input_value": "value1"},\n {"components": ["component3"], "input_value": "value2"}\n ],\n "outputs": ["Component Name", "component_id"],\n "tweaks": {"parameter_name": "value", "Component Name": {"parameter_name": "value"}, "component_id": {"parameter_name": "value"}}\n "stream": false\n}\n'})}),"\n",(0,i.jsx)(t.p,{children:"This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\ncatering to diverse application requirements."}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"flow_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" uuid"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Request Body "}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"inputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Inputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"tweaks"}),(0,i.jsx)("span",{style:{opacity:"0.6"}})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"stream"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"})]})})]})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"200"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Successful Response"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})})]})]})})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"422"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Validation Error"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"detail"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"loc"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"msg"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"type"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/main.7eed58fb.js b/assets/js/main.7eed58fb.js deleted file mode 100644 index e99cc8b17e..0000000000 --- a/assets/js/main.7eed58fb.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.7eed58fb.js.LICENSE.txt */ -(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8792],{204:(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}`},layout:{},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"}}},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),l=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)?l(r.call(e)):l(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 l=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 l.name="Invariant Violation",l}}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 l=Object.prototype.hasOwnProperty.bind(t),s=0;s{"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 w="",k="",x="",S="",E={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 _(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 j(e){return y(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function O(e,t,n){var o="",a="",i=0,l="",s=!1,c=j(e),u=c.split("\n"),p=j(t).split("\n"),d=0,f="";if("strictEqual"===n&&"object"===h(e)&&"object"===h(t)&&null!==e&&null!==t&&(n="strictEqualObject"),1===u.length&&1===p.length&&u[0]!==p[0]){var m=u[0].length+p[0].length;if(m<=10){if(!("object"===h(e)&&null!==e||"object"===h(t)&&null!==t||0===e&&0===t))return"".concat(E[n],"\n\n")+"".concat(u[0]," !== ").concat(p[0],"\n")}else if("strictEqualObject"!==n){if(m<(r.stderr&&r.stderr.isTTY?r.stderr.columns:80)){for(;u[0][d]===p[0][d];)d++;d>2&&(f="\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 g=u[u.length-1],y=p[p.length-1];g===y&&(d++<2?l="\n ".concat(g).concat(l):o=g,u.pop(),p.pop(),0!==u.length&&0!==p.length);)g=u[u.length-1],y=p[p.length-1];var b=Math.max(u.length,p.length);if(0===b){var _=c.split("\n");if(_.length>30)for(_[26]="".concat(w,"...").concat(S);_.length>27;)_.pop();return"".concat(E.notIdentical,"\n\n").concat(_.join("\n"),"\n")}d>3&&(l="\n".concat(w,"...").concat(S).concat(l),s=!0),""!==o&&(l="\n ".concat(o).concat(l),o="");var O=0,A=E[n]+"\n".concat(k,"+ actual").concat(S," ").concat(x,"- expected").concat(S),C=" ".concat(w,"...").concat(S," Lines skipped");for(d=0;d1&&d>2&&(P>4?(a+="\n".concat(w,"...").concat(S),s=!0):P>3&&(a+="\n ".concat(p[d-2]),O++),a+="\n ".concat(p[d-1]),O++),i=d,o+="\n".concat(x,"-").concat(S," ").concat(p[d]),O++;else if(p.length1&&d>2&&(P>4?(a+="\n".concat(w,"...").concat(S),s=!0):P>3&&(a+="\n ".concat(u[d-2]),O++),a+="\n ".concat(u[d-1]),O++),i=d,a+="\n".concat(k,"+").concat(S," ").concat(u[d]),O++;else{var T=p[d],I=u[d],R=I!==T&&(!v(I,",")||I.slice(0,-1)!==T);R&&v(T,",")&&T.slice(0,-1)===I&&(R=!1,I+=","),R?(P>1&&d>2&&(P>4?(a+="\n".concat(w,"...").concat(S),s=!0):P>3&&(a+="\n ".concat(u[d-2]),O++),a+="\n ".concat(u[d-1]),O++),i=d,a+="\n".concat(k,"+").concat(S," ").concat(I),o+="\n".concat(x,"-").concat(S," ").concat(T),O+=2):(a+=o,o="",1!==P&&0!==d||(a+="\n ".concat(I),O++))}if(O>20&&d30)for(f[26]="".concat(w,"...").concat(S);f.length>27;)f.pop();t=1===f.length?d.call(this,"".concat(p," ").concat(f[0])):d.call(this,"".concat(p,"\n\n").concat(f.join("\n"),"\n"))}else{var m=j(i),g="",y=E[o];"notDeepEqual"===o||"notEqual"===o?(m="".concat(E[o],"\n\n").concat(m)).length>1024&&(m="".concat(m.slice(0,1021),"...")):(g="".concat(j(l)),m.length>512&&(m="".concat(m.slice(0,509),"...")),g.length>512&&(g="".concat(g.slice(0,509),"...")),"deepEqual"===o||"equal"===o?m="".concat(y,"\n\n").concat(m,"\n\nshould equal\n\n"):g=" ".concat(o," ").concat(g)),t=d.call(this,"".concat(m).concat(g))}return Error.stackTraceLimit=s,t.generatedMessage=!n,Object.defineProperty(u(t),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),t.code="ERR_ASSERTION",t.actual=i,t.expected=l,t.operator=o,Error.captureStackTrace&&Error.captureStackTrace(u(t),a),t.stack,t.name="AssertionError",c(t)}return i=v,(s=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:t,value:function(e,t){return y(this,a(a({},t),{},{customInspect:!1,depth:0}))}}])&&l(i.prototype,s),p&&l(i,p),Object.defineProperty(i,"prototype",{writable:!1}),v}(p(Error),y.custom);e.exports=A},4023:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(96540),o=n(61934),a=n(27143),i=n(30099),l=n(54051),s=n(75313),c=n(74848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(p,{error:t})]})}function p(e){let{error:t}=e;const n=(0,i.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{children:t}=e;return(0,c.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(d,{children:(0,c.jsxs)(g,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(l.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const m=e=>(0,c.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},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},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=u(n);p&&(i=i.concat(p(n)));for(var l=s(t),g=s(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:{}},presets:[["docusaurus-preset-openapi",{api:{path:"openapi.json",routeBasePath:"/api"},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},gtag:{trackingID:"G-XHC7G628ZP",anonymizeIP:!0},googleTagManager:{containerId:"GTM-NK5M4ZT8"},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"]}}]],plugins:[["docusaurus-node-polyfills",{excludeAliases:["console"]}],"docusaurus-plugin-image-zoom",["@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"]},{to:"/get-started-installation",from:["/getting-started-installation","/getting-started-common-installation-issues"]},{to:"/get-started-quickstart",from:"/getting-started-quickstart"},{to:"/tutorials-travel-planning-agent",from:["/starter-projects-dynamic-agent/","/starter-projects-travel-planning-agent"]},{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:"/concepts-objects",from:["/guides-data-message","/configuration-objects"]},{to:"/tutorials-sequential-agent",from:"/starter-projects-sequential-agent"},{to:"/tutorials-blog-writer",from:"/starter-projects-blog-writer"},{to:"/tutorials-memory-chatbot",from:"/starter-projects-memory-chatbot"},{to:"/tutorials-document-qa",from:"/starter-projects-document-qa"},{to:"/components-vector-stores",from:"/components-rag"},{to:"/concepts-api",from:"/workspace-api"},{to:"/components-custom-components",from:"/components/custom"}]}],null],themeConfig:{navbar:{hideOnScroll:!0,logo:{alt:"Langflow",src:"img/langflow-logo-black.svg",srcDark:"img/langflow-logo-white.svg"},items:[{position:"right",href:"https://github.com/langflow-ai/langflow",className:"header-github-link",target:"_blank",rel:null},{position:"right",href:"https://twitter.com/langflow_ai",className:"header-twitter-link",target:"_blank",rel:null},{position:"right",href:"https://discord.gg/EqksyE2EX9",className:"header-discord-link",target:"_blank",rel:null}]},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:!1},versionPersistence:"localStorage"},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:{experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onDuplicateRoutes:"warn",customFields:{},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}}}},5338:(e,t,n)=>{"use strict";var r=n(40961);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},5528:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>d});var r=n(96540),o=n(63065),a=n(86682),i=n(30604),l=n(53115),s=n(26849),c=n(74848);const u=r.createContext(void 0);function p(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,l.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(s)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:s})),[e,n,u,s])}function d(e){let{children:t}=e;const n=p();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},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),u=r.speed,p=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,p)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),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");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){p(document.documentElement,"nprogress-busy"),p(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(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 l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=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 u(e,t){var n=d(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function p(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 f(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)},6188:e=>{"use strict";e.exports=Math.max},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__"),l=Object,s=l.getPrototypeOf;e.exports=i&&"function"==typeof i.get?o([i.get]):"function"==typeof s&&function(e){return s(null==e?e:l(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;rl(s,n))cl(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[i]=n,r=i);else{if(!(cl(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function l(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 s=performance;t.unstable_now=function(){return s.now()}}else{var c=Date,u=c.now();t.unstable_now=function(){return c.now()-u}}var p=[],d=[],f=1,m=null,g=3,h=!1,y=!1,b=!1,v="function"==typeof setTimeout?setTimeout:null,w="function"==typeof clearTimeout?clearTimeout:null,k="undefined"!=typeof setImmediate?setImmediate:null;function x(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(p,t)}t=a(d)}}function S(e){if(b=!1,x(e),!y)if(null!==a(p))y=!0,D(E);else{var t=a(d);null!==t&&L(S,t.startTime-e)}}function E(e,n){y=!1,b&&(b=!1,w(A),A=-1),h=!0;var r=g;try{for(x(n),m=a(p);null!==m&&(!(m.expirationTime>n)||e&&!T());){var o=m.callback;if("function"==typeof o){m.callback=null,g=m.priorityLevel;var l=o(m.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?m.callback=l:m===a(p)&&i(p),x(n)}else i(p);m=a(p)}if(null!==m)var s=!0;else{var c=a(d);null!==c&&L(S,c.startTime-n),s=!1}return s}finally{m=null,g=r,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var _,j=!1,O=null,A=-1,C=5,P=-1;function T(){return!(t.unstable_now()-Pe||125i?(e.sortIndex=r,o(d,e),null===a(p)&&e===a(d)&&(b?(w(A),A=-1):b=!0,L(S,r-i))):(e.sortIndex=l,o(p,e),y||h||(y=!0,D(E))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=g;return function(){var n=g;g=t;try{return e.apply(this,arguments)}finally{g=n}}}},8505:(e,t,n)=>{var r=n(64634);e.exports=m,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=f;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,l=0,s="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var p=n[0],d=n[1],f=n.index;if(s+=e.slice(l,f),l=f+p.length,d)s+=d[1];else{var m=e[l],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=g||c,_=y||b,j=g||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:h||a++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":i(E,j)})}}return l-1?"[^"+c(e)+"]+?":c(t)+"|(?:(?!"+c(t)+")[^"+c(e)+"])+?"}function l(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),o=0;o{"use strict";n.d(t,{G:()=>y,a:()=>h});var r=n(96540),o=n(61934),a=n(26849),i=n(78749),l=n(53115),s=n(74848);const c=r.createContext(void 0),u="theme",p=(0,i.Wf)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,m=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{p.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&p.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&g(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),p.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=p.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[o,i])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(c);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},8722:(e,t,n)=>{var r=n(96763);const o=n(6969),a=n(98380),i=new Set;function l(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(l.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)}))}l.silent=!1,e.exports=l},9136:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(96540),o=n(84974);function a(){return(0,r.useContext)(o.o)}},9303:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(96540);var r=n(18215),o=n(50539),a=n(53115),i=n(56289),l=n(25246);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(74848);function u(e){let{as:t,id:n,...u}=e;const p=(0,l.A)(),{navbar:{hideOnScroll:d}}=(0,a.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});p.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",d?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},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},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)}}},11835:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(40797);function o(){const{siteConfig:{themeConfig:e}}=(0,r.A)();return e}},11861:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function o(e){return Array.from(new Set(e))}n.d(t,{XI:()=>r,sb:()=>o})},12205:(e,t,n)=>{"use strict";var r=n(66743),o=n(11002),a=n(13144);e.exports=function(){return a(r,o,arguments)}},12862:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(96540);var r=n(56289),o=n(29030),a=n(40797),i=n(53115),l=n(39324),s=n(74848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Ay)(t.src),dark:(0,o.Ay)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:u,titleClassName:p,...d}=e,f=(0,o.Ay)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...d,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(c,{logo:l,alt:g,imageClassName:u}),null!=n&&(0,s.jsx)("b",{className:p,children:n})]})}},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)},13722:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},14035:(e,t,n)=>{"use strict";var r,o=n(36556),a=n(49092)(),i=n(9957),l=n(75795);if(a){var s=o("RegExp.prototype.exec"),c={},u=function(){throw c},p={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=u),r=function(e){if(!e||"object"!=typeof e)return!1;var t=l(e,"lastIndex");if(!(t&&i(t,"value")))return!1;try{s(e,p)}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},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"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),f=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,h={};function y(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}y.prototype.isReactComponent={},y.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")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,r){var o,a={},i=null,l=null;if(null!=t)for(o in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,o)&&!E.hasOwnProperty(o)&&(a[o]=t[o]);var s=arguments.length-2;if(1===s)a.children=r;else if(1{"use strict";n.d(t,{A:()=>a});n(96540);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(74848);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},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,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=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(l){for(var s=0;s=a.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],p=n.tokenStack[u],d="string"==typeof c?c:c.content,f=t(r,u),m=d.indexOf(f);if(m>-1){++o;var g=d.substring(0,m),h=new e.Token(r,e.tokenize(p,n.grammar),"language-"+r,p),y=d.substring(m+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof c?l.splice.apply(l,[s,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},20311:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=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,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},21020:(e,t,n)=>{"use strict";var r=n(96540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!s.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:u,props:a,_owner:l.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},21683:(e,t,n)=>{"use strict";n.r(t)},21858:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(96540),o=n(26849),a=n(74848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},22306:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>c});var r=n(96540),o=n(26849),a=n(74848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(l.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(l);if(e===i)throw new o.dV("DocsSidebarProvider");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