Restore Hanzo branding after v1.8.0 merge

Re-apply brand changes (maintainer info, URLs, product name) that
were overwritten by the upstream merge.
This commit is contained in:
2026-02-26 10:28:05 -08:00
parent c31542e07e
commit 817f45ef71
27 changed files with 131 additions and 185 deletions
+7 -23
View File
@@ -1,23 +1,21 @@
# Hanzoflow Demo Codespace Readme # Hanzo Flow Demo Codespace Readme
These instructions will walk you through the process of running a Hanzoflow demo via GitHub Codespaces. These instructions will walk you through the process of running a Hanzo Flow demo via GitHub Codespaces.
If you want a faster and easier demo experience with Langflow, download and install [Langflow Desktop](https://docs.langflow.org/get-started-installation#install-and-run-langflow-desktop) for the least complicated setup experience.
## Create a Codespace in GitHub ## Create a Codespace in GitHub
To setup the demo in Codespace: To setup the demo in Codespace:
1. Navigate to the Hanzoflow repo 1. Navigate to the Hanzo Flow repo
2. On the "Code <>" button, select the "Codespaces" tab 2. On the "Code <>" button, select the "Codespaces" tab
3. Click the green "Create codespace on..." button (or "+" icon if you want more options) to create a new Codespace 3. Click the green "Create codespace on..." button (or "+" icon if you want more options) to create a new Codespace
## Wait for everything to install ## Wait for everything to install
After the codespace is opened, there will be two phases to the process. It will take ≈5-10 minutes to complete. After the codespace is opened, there will be two phases to the process. It will take about 5-10 minutes to complete.
* **Phase 1**: Building Container; you can click on the "Building Codespace" link to watch the logs * **Phase 1**: Building Container; you can click on the "Building Codespace" link to watch the logs
* **Phase 2**: Building Hanzoflow; the terminal will now show `Running postCreateCommand...`, similar to: * **Phase 2**: Building Hanzo Flow; the terminal will now show `Running postCreateCommand...`, similar to:
``` ```
✔ Finishing up... ✔ Finishing up...
@@ -41,20 +39,6 @@ Installation is now complete.
Open a new Terminal, and type `uv run hanzoflow run`. Open a new Terminal, and type `uv run hanzoflow run`.
The service will start, and you will may notice a dialog in the lower right indicating there is a port available to connect to. However, the service will not be ready until you see the welcome banner: The service will start, and you will may notice a dialog in the lower right indicating there is a port available to connect to. However, the service will not be ready until the startup completes.
``` At this point you can connect to the service via the port, or if the dialog is gone you can find the "Forwarded Address" on the "Ports" tab (which is next the "Terminal" tab). If there is no port forwarded, you can click the "Forward a Port" button on the "Ports" tab, and forward `7860`.
╭───────────────────────────────────────────────────────────────────────╮
│ Welcome to Langflow │
│ │
│ 🌟 GitHub: Star for updates → https://github.com/langflow-ai/langflow │
│ 💬 Discord: Join for support → https://discord.com/invite/EqksyE2EX9 │
│ │
│ We collect anonymous usage data to improve Langflow. │
│ To opt out, set: DO_NOT_TRACK=true in your environment. │
│ │
│ 🟢 Open Langflow → http://localhost:7860 │
╰───────────────────────────────────────────────────────────────────────╯
```
At this point you can connect to the service via the port, or if the dialog is gone you can find the "Forwarded Address" on the "Ports" tab (which is next the "Terminal" tab). If there is no port forwarded, you can click the "Forward a Port" button on the "Ports" tab, and forward `7860`.
+3 -3
View File
@@ -1,5 +1,5 @@
name: "🐛 Bug Report" name: "🐛 Bug Report"
description: Submit a bug report to help us improve Langflow description: Submit a bug report to help us improve Hanzo Flow
labels: [ "bug" ] labels: [ "bug" ]
body: body:
- type: markdown - type: markdown
@@ -87,7 +87,7 @@ body:
- type: input - type: input
id: langflow-version id: langflow-version
attributes: attributes:
label: Langflow Version label: Hanzo Flow Version
placeholder: ex. 1.0.9 placeholder: ex. 1.0.9
validations: validations:
required: true required: true
@@ -98,7 +98,7 @@ body:
label: "Python Version" label: "Python Version"
description: | description: |
**Langflow requires Python version 3.10 or greater.** **Hanzo Flow requires Python version 3.10 or greater.**
options: options:
- "3.12" - "3.12"
- "3.11" - "3.11"
+2 -2
View File
@@ -1,5 +1,5 @@
name: "🚀 Feature Request" name: "🚀 Feature Request"
description: Submit a proposal/request for a new Langflow feature description: Submit a proposal/request for a new Hanzo Flow feature
labels: [ "enhancement" ] labels: [ "enhancement" ]
body: body:
- type: textarea - type: textarea
@@ -25,4 +25,4 @@ body:
attributes: attributes:
label: Your Contribution label: Your Contribution
description: | description: |
Is there any way that you could help, e.g., by submitting a PR? Make sure to read the CONTRIBUTING.md guidelines for Langflow before proceeding. Is there any way that you could help, e.g., by submitting a PR? Make sure to read the CONTRIBUTING.md guidelines for Hanzo Flow before proceeding.
+1 -1
View File
@@ -60,7 +60,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at reported to the community leaders responsible for enforcement at
contact@hanzoflow.org. oss@hanzo.ai.
All complaints will be reviewed and investigated promptly and fairly. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the All community leaders are obligated to respect the privacy and security of the
+4 -4
View File
@@ -1,10 +1,10 @@
# How to contribute to Langflow # How to contribute to Hanzo Flow
Thank you for your interest in contributing! Thank you for your interest in contributing!
## How to Contribute ## How to Contribute
1. Fork the [Langflow GitHub repository](https://github.com/langflow-ai/langflow). 1. Fork the [Hanzo Flow GitHub repository](https://github.com/hanzoai/flow).
2. Create a new branch for your changes. 2. Create a new branch for your changes.
3. Submit a pull request to the `main` branch with a clear title and description. 3. Submit a pull request to the `main` branch with a clear title and description.
Reference any issues fixed, for example `Fixes #1234`. Reference any issues fixed, for example `Fixes #1234`.
@@ -17,7 +17,7 @@ For detailed instructions on setting up your local development environment, see
## Documentation Contributions ## Documentation Contributions
Langflow documentation is built with [Docusaurus](https://docusaurus.io/). Hanzo Flow documentation is built with [Docusaurus](https://docusaurus.io/).
For setup instructions, see [DEVELOPMENT.md](./DEVELOPMENT.md). For setup instructions, see [DEVELOPMENT.md](./DEVELOPMENT.md).
## Additional Guides ## Additional Guides
@@ -27,4 +27,4 @@ For setup instructions, see [DEVELOPMENT.md](./DEVELOPMENT.md).
- [Contribute Tests](./docs/docs/Contributing/contributing-component-tests.mdx) - [Contribute Tests](./docs/docs/Contributing/contributing-component-tests.mdx)
- [Contribute Templates](./docs/docs/Contributing/contributing-templates.mdx) - [Contribute Templates](./docs/docs/Contributing/contributing-templates.mdx)
Thank you for helping improve Langflow! Thank you for helping improve Hanzo Flow!
+14 -14
View File
@@ -11,19 +11,19 @@ This document details how to set up a local development environment that will al
You will push changes to a fork of the Hanzoflow repository, and from there create a Pull Request into the project repository. You will push changes to a fork of the Hanzoflow repository, and from there create a Pull Request into the project repository.
Fork the [Hanzoflow GitHub repository](https://github.com/hanzoflow-ai/hanzoflow/fork), and follow the instructions to create a new fork. Fork the [Hanzo Flow GitHub repository](https://github.com/hanzoai/flow/fork), and follow the instructions to create a new fork.
On your new fork, click the "<> Code" button to get a URL to [clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) using your preferred method, and clone the repository; for example using `https`: On your new fork, click the "<> Code" button to get a URL to [clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) using your preferred method, and clone the repository; for example using `https`:
```bash ```bash
git clone https://github.com/<your username>/hanzoflow.git git clone https://github.com/<your username>/flow.git
``` ```
Finally, add the Project repository as `upstream`: Finally, add the Project repository as `upstream`:
```bash ```bash
cd hanzoflow cd flow
git remote add upstream https://github.com/hanzoflow-ai/hanzoflow.git git remote add upstream https://github.com/hanzoai/flow.git
git remote set-url --push upstream no_push git remote set-url --push upstream no_push
``` ```
@@ -68,16 +68,16 @@ make init
This sets up the development environment by installing backend and frontend dependencies and installing pre-commit hooks. It runs `make install_backend`, `make install_frontend`, and `uvx pre-commit install`. This sets up the development environment by installing backend and frontend dependencies and installing pre-commit hooks. It runs `make install_backend`, `make install_frontend`, and `uvx pre-commit install`.
> [!TIP] > [!TIP]
> If you want to quickly run Langflow from source without setting up the full development environment, you can use `make run_cli` instead. This command installs dependencies, builds the frontend, and starts the application in one step. > If you want to quickly run Hanzo Flow from source without setting up the full development environment, you can use `make run_cli` instead. This command installs dependencies, builds the frontend, and starts the application in one step.
After running `make init`, you have two options for running Langflow: After running `make init`, you have two options for running Hanzo Flow:
- Use `make run_cli` to build and run the application immediately. - Use `make run_cli` to build and run the application immediately.
- Continue to the next section to run Langflow in Development mode. - Continue to the next section to run Hanzo Flow in Development mode.
### Troubleshooting frontend build issues ### Troubleshooting frontend build issues
If you encounter frontend build problems or are upgrading from an older version of Langflow, run `make run_clic` once. If you encounter frontend build problems or are upgrading from an older version of Hanzo Flow, run `make run_clic` once.
```bash ```bash
make run_clic make run_clic
@@ -103,7 +103,7 @@ uv sync
uv run pre-commit install uv run pre-commit install
``` ```
## Run Langflow in Development mode ## Run Hanzo Flow in Development mode
With the above validation, you can now run the backend (FastAPI) and frontend (Node) services in a way that will "hot-reload" your changes. In this mode, the FastAPI server requires a Node.js server to serve the frontend pages rather than serving them directly. With the above validation, you can now run the backend (FastAPI) and frontend (Node) services in a way that will "hot-reload" your changes. In this mode, the FastAPI server requires a Node.js server to serve the frontend pages rather than serving them directly.
@@ -123,7 +123,7 @@ make backend
``` ```
> [!TIP] > [!TIP]
> **Component Development Mode**: By default, Langflow uses a prebuilt component index for fast startup (~10ms). If you're actively developing or modifying components, enable dynamic component loading with `LFX_DEV`: > **Component Development Mode**: By default, Hanzo Flow uses a prebuilt component index for fast startup (~10ms). If you're actively developing or modifying components, enable dynamic component loading with `LFX_DEV`:
> >
> ```bash > ```bash
> # Load all components dynamically > # Load all components dynamically
@@ -159,7 +159,7 @@ At which point you can check http://localhost:7860/health in a browser; when the
### Start the Frontend Service ### Start the Frontend Service
The frontend (User Interface) is, in shipped code (i.e. via `langflow run`), statically-compiled files that the backend FastAPI service provides to clients via port `7860`. In development mode, these are served by a Node.js service on port `3000`. In the _Frontend Terminal_, start the frontend service: The frontend (User Interface) is, in shipped code (i.e. via `hanzoflow run`), statically-compiled files that the backend FastAPI service provides to clients via port `7860`. In development mode, these are served by a Node.js service on port `3000`. In the _Frontend Terminal_, start the frontend service:
```bash ```bash
make frontend make frontend
@@ -227,7 +227,7 @@ You should try to add a unit test for your component, though templates and best
Modifying a component is much the same as adding a component: it is generally easier to make changes in the UI and then save the file in the repository. Please be sure to review and modify unit tests; if there is not a unit test for the component, the addition of one that at least covers your changes would be much appreciated! Modifying a component is much the same as adding a component: it is generally easier to make changes in the UI and then save the file in the repository. Please be sure to review and modify unit tests; if there is not a unit test for the component, the addition of one that at least covers your changes would be much appreciated!
> [!NOTE] > [!NOTE]
> If you have an old version of the component on the canvas when changes are saved and the backend service restarts, that component should show "Updates Available" when the canvas is reloaded (i.e. a browser refresh). [Issue 5179](https://github.com/hanzoflow-ai/hanzoflow/issues/5179) indicates this behavior is not consistent, at least in a development setting. > If you have an old version of the component on the canvas when changes are saved and the backend service restarts, that component should show "Updates Available" when the canvas is reloaded (i.e. a browser refresh). [Issue 5179](https://github.com/hanzoai/flow/issues/5179) indicates this behavior is not consistent, at least in a development setting.
### Component Index ### Component Index
@@ -249,7 +249,7 @@ When you are ready to commit, and before you commit, you should consider the fol
Once these changes are ready, it is helpful to rebase your changes on top of `upstream`'s `main` branch, to ensure you have the latest code version! Of course if you have had to merge changes into your component you may want to re-lint/format/unit_test. Once these changes are ready, it is helpful to rebase your changes on top of `upstream`'s `main` branch, to ensure you have the latest code version! Of course if you have had to merge changes into your component you may want to re-lint/format/unit_test.
As a final validation, stop the backend and frontend services and run `make init`; this will do a clean build and the UI should be available in port `7860` (as it has invoked `langflow run`). Open a **new** browser tab to this service and do a final check of your changes by adding your new/modified component onto the canvas from the Components list. As a final validation, stop the backend and frontend services and run `make init`; this will do a clean build and the UI should be available in port `7860` (as it has invoked `hanzoflow run`). Open a **new** browser tab to this service and do a final check of your changes by adding your new/modified component onto the canvas from the Components list.
## Committing, Pushing, and Pull Requests ## Committing, Pushing, and Pull Requests
@@ -272,7 +272,7 @@ You may observe some quirky things:
There are some files that change without you having made changes: There are some files that change without you having made changes:
- Files in `src/backend/base/langflow/initial_setup/starter_projects` modify after `langflow run`; these are formatting changes. Feel free to commit (or ignore) them. - Files in `src/backend/base/langflow/initial_setup/starter_projects` modify after `hanzoflow run`; these are formatting changes. Feel free to commit (or ignore) them.
- `uv.lock` and `src/frontend/package-lock.json` files can be modified by `make` targets; changes should not be committed by individual contributors. - `uv.lock` and `src/frontend/package-lock.json` files can be modified by `make` targets; changes should not be committed by individual contributors.
- You can exclude these from consideration in git: `git update-index --assume-unchanged uv.lock src/frontend/package-lock.json` - You can exclude these from consideration in git: `git update-index --assume-unchanged uv.lock src/frontend/package-lock.json`
- You can re-include these from consideration in git: `git update-index --no-assume-unchanged uv.lock src/frontend/package-lock.json` - You can re-include these from consideration in git: `git update-index --no-assume-unchanged uv.lock src/frontend/package-lock.json`
+8 -12
View File
@@ -1,12 +1,12 @@
<!-- markdownlint-disable MD030 --> <!-- markdownlint-disable MD030 -->
![Hanzoflow logo](./docs/static/img/hanzoflow-logo-color-black-solid.svg) # Hanzo Flow
[![Release Notes](https://img.shields.io/github/release/hanzoai/flow?style=flat-square)](https://github.com/hanzoai/flow/releases) [![Release Notes](https://img.shields.io/github/release/hanzoai/flow?style=flat-square)](https://github.com/hanzoai/flow/releases)
[![PyPI - License](https://img.shields.io/badge/license-MIT-orange)](https://opensource.org/licenses/MIT) [![PyPI - License](https://img.shields.io/badge/license-MIT-orange)](https://opensource.org/licenses/MIT)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/hanzoflow?style=flat-square)](https://pypistats.org/packages/hanzoflow) [![PyPI - Downloads](https://img.shields.io/pypi/dm/hanzoflow?style=flat-square)](https://pypistats.org/packages/hanzoflow)
[Hanzoflow](https://hanzoflow.org) is a powerful platform for building and deploying AI-powered agents and workflows. It provides developers with both a visual authoring experience and built-in API and MCP servers that turn every workflow into a tool that can be integrated into applications built on any framework or stack. Hanzoflow comes with batteries included and supports all major LLMs, vector databases and a growing library of AI tools. **Hanzo Flow** is a powerful platform for building and deploying AI-powered agents and workflows. It provides developers with both a visual authoring experience and built-in API and MCP servers that turn every workflow into a tool that can be integrated into applications built on any framework or stack. Hanzo Flow comes with batteries included and supports all major LLMs, vector databases and a growing library of AI tools.
## Highlight features ## Highlight features
@@ -34,12 +34,12 @@ uv pip install hanzoflow -U
#### Run #### Run
To start Hanzoflow, run: To start Hanzo Flow, run:
```shell ```shell
uv run hanzoflow run uv run hanzoflow run
``` ```
Hanzoflow starts at http://127.0.0.1:7860. Hanzo Flow starts at http://127.0.0.1:7860.
## Other install options ## Other install options
@@ -51,20 +51,16 @@ make run_cli
For more information, see [DEVELOPMENT.md](./DEVELOPMENT.md). For more information, see [DEVELOPMENT.md](./DEVELOPMENT.md).
### Docker ### Docker
Start a Hanzoflow container with default settings: Start a Hanzo Flow container with default settings:
```shell ```shell
docker run -p 7860:7860 hanzoai/flow:latest docker run -p 7860:7860 hanzoai/flow:latest
``` ```
Hanzoflow is available at http://localhost:7860/. Hanzo Flow is available at http://localhost:7860/.
## Deployment ## Deployment
Hanzoflow is completely open source and you can deploy it to all major deployment clouds. Hanzo Flow is completely open source and you can deploy it to all major deployment clouds.
## Contribute ## Contribute
We welcome contributions from developers of all levels. If you'd like to contribute, please check our [contributing guidelines](./CONTRIBUTING.md) and help make Hanzoflow more accessible. We welcome contributions from developers of all levels. If you'd like to contribute, please check our [contributing guidelines](./CONTRIBUTING.md) and help make Hanzo Flow more accessible.
---
Based on [Langflow](https://github.com/langflow-ai/langflow) by DataStax.
+3 -3
View File
@@ -1,6 +1,6 @@
# Releasing Langflow # Releasing Hanzo Flow
Langflow follows a **release-when-ready** cadence, with each cycle typically lasting 4–6 weeks depending on QA and stabilization needs. Hanzo Flow follows a **release-when-ready** cadence, with each cycle typically lasting 4–6 weeks depending on QA and stabilization needs.
## Goals ## Goals
@@ -39,7 +39,7 @@ This step also usually lasts about a week.
After QA and bugfixing are complete for both OSS and Desktop: After QA and bugfixing are complete for both OSS and Desktop:
* Final releases are cut from their respective RC branches. * Final releases are cut from their respective RC branches.
* Release timing is coordinated with Langflow’s DevRel team. * Release timing is coordinated with the Hanzo Flow team.
* For at least 24 hours after release, Discord, GitHub, and other support channels should be monitored for critical bug reports. * For at least 24 hours after release, Discord, GitHub, and other support channels should be monitored for critical bug reports.
## Branch Model ## Branch Model
+23 -21
View File
@@ -1,8 +1,8 @@
# 🛡️ Langflow Security Policy & Responsible Disclosure # Hanzo Flow Security Policy & Responsible Disclosure
## Security Policy ## Security Policy
This security policy applies to all public projects under the langflow-ai organization on GitHub. We prioritize security and continuously work to safeguard our systems. However, vulnerabilities can still exist. If you identify a security issue, please report it to us so we can address it promptly. This security policy applies to the Hanzo Flow project on GitHub. We prioritize security and continuously work to safeguard our systems. However, vulnerabilities can still exist. If you identify a security issue, please report it to us so we can address it promptly.
### Security/Bugfix Versions ### Security/Bugfix Versions
@@ -15,7 +15,7 @@ We encourage responsible disclosure of security vulnerabilities. If you find som
### How to Report ### How to Report
Use the "Report a vulnerability" button under the "Security" tab of the [Langflow GitHub repository](https://github.com/langflow-ai/langflow/security). This creates a private communication channel between you and the maintainers. Use the "Report a vulnerability" button under the "Security" tab of the [Hanzo Flow GitHub repository](https://github.com/hanzoai/flow/security). This creates a private communication channel between you and the maintainers.
### Reporting Guidelines ### Reporting Guidelines
@@ -34,17 +34,19 @@ Use the "Report a vulnerability" button under the "Security" tab of the [Langflo
- Do not publicly disclose vulnerabilities until we have assessed, resolved, and notified affected users - Do not publicly disclose vulnerabilities until we have assessed, resolved, and notified affected users
- If you plan to present your research (e.g., at a conference or in a blog), share a draft with us at least 30 days in advance for review - If you plan to present your research (e.g., at a conference or in a blog), share a draft with us at least 30 days in advance for review
- Avoid including: - Avoid including:
- Data from any Langflow customer projects - Data from any Hanzo Flow customer projects
- Langflow user/customer information - Hanzo Flow user/customer information
- Details about Langflow employees, contractors, or partners - Details about Hanzo Flow employees, contractors, or partners
We appreciate your efforts in helping us maintain a secure platform and look forward to working together to resolve any issues responsibly. We appreciate your efforts in helping us maintain a secure platform and look forward to working together to resolve any issues responsibly.
## Known Vulnerabilities ## Known Vulnerabilities
> **Note**: Hanzo Flow is based on the upstream Langflow project. The CVEs and GitHub Advisories below link to the original upstream disclosures for reference.
### Server-Side Request Forgery (SSRF) in API Request Component (Fixed in 1.7.1) ### Server-Side Request Forgery (SSRF) in API Request Component (Fixed in 1.7.1)
Langflow's [API Request component](https://docs.langflow.org/api-request) allows arbitrary HTTP requests within a flow. In versions < 1.7.1, this component did not block private IP ranges (`127.0.0.1`, `10/172/192` ranges) or cloud metadata endpoints (`169.254.169.254`), enabling Server-Side Request Forgery (SSRF) attacks. The API Request component allows arbitrary HTTP requests within a flow. In versions < 1.7.1, this component did not block private IP ranges (`127.0.0.1`, `10/172/192` ranges) or cloud metadata endpoints (`169.254.169.254`), enabling Server-Side Request Forgery (SSRF) attacks.
**Potential security impact:** **Potential security impact:**
- Attackers with API key access can access internal administrative endpoints, metadata services, and internal databases/services - Attackers with API key access can access internal administrative endpoints, metadata services, and internal databases/services
@@ -53,11 +55,11 @@ Langflow's [API Request component](https://docs.langflow.org/api-request) allows
**CVE**: [CVE-2025-68477](https://nvd.nist.gov/vuln/detail/CVE-2025-68477) **CVE**: [CVE-2025-68477](https://nvd.nist.gov/vuln/detail/CVE-2025-68477)
**GitHub Advisory**: [GHSA-5993-7p27-66g5](https://github.com/langflow-ai/langflow/security/advisories/GHSA-5993-7p27-66g5) **GitHub Advisory**: [GHSA-5993-7p27-66g5](https://github.com/langflow-ai/langflow/security/advisories/GHSA-5993-7p27-66g5)
**Fixed in**: Langflow >= 1.7.1 **Fixed in**: >= 1.7.1
### External Control of File Name or Path (Fixed in 1.7.1) ### External Control of File Name or Path (Fixed in 1.7.1)
When creating a flow through the [`/api/v1/flows/`](https://docs.langflow.org/api-flows) endpoint, if an arbitrary path is specified in the request body's `fs_path`, the server serializes the flow object into JSON and creates/overwrites a file at that path. In versions < 1.7.1, there is no path restriction, normalization, or allowed directory enforcement, so absolute paths (e.g., `/etc/poc.txt`) are interpreted as-is. When creating a flow through the `/api/v1/flows/` endpoint, if an arbitrary path is specified in the request body's `fs_path`, the server serializes the flow object into JSON and creates/overwrites a file at that path. In versions < 1.7.1, there is no path restriction, normalization, or allowed directory enforcement, so absolute paths (e.g., `/etc/poc.txt`) are interpreted as-is.
**Potential security impact:** **Potential security impact:**
- Authenticated arbitrary file write (within server permission scope): Risk of corrupting configuration/log/task files, disrupting application behavior, and tampering with files read by other components - Authenticated arbitrary file write (within server permission scope): Risk of corrupting configuration/log/task files, disrupting application behavior, and tampering with files read by other components
@@ -67,47 +69,47 @@ When creating a flow through the [`/api/v1/flows/`](https://docs.langflow.org/ap
**CVE**: [CVE-2025-68478](https://nvd.nist.gov/vuln/detail/CVE-2025-68478) **CVE**: [CVE-2025-68478](https://nvd.nist.gov/vuln/detail/CVE-2025-68478)
**GitHub Advisory**: [GHSA-f43r-cc68-gpx4](https://github.com/langflow-ai/langflow/security/advisories/GHSA-f43r-cc68-gpx4) **GitHub Advisory**: [GHSA-f43r-cc68-gpx4](https://github.com/langflow-ai/langflow/security/advisories/GHSA-f43r-cc68-gpx4)
**Fixed in**: Langflow >= 1.7.1 **Fixed in**: >= 1.7.1
### Environment Variable Loading Bug (Fixed in 1.6.4) ### Environment Variable Loading Bug (Fixed in 1.6.4)
Langflow versions `1.6.0` through `1.6.3` have a critical bug where environment variables from `.env` files are not being read. This affects all deployments using environment variables for configuration, including security settings. Versions `1.6.0` through `1.6.3` have a critical bug where environment variables from `.env` files are not being read. This affects all deployments using environment variables for configuration, including security settings.
**Potential security impact:** **Potential security impact:**
- Environment variables from `.env` files are not read. - Environment variables from `.env` files are not read.
- Security configurations like `AUTO_LOGIN=false` may not be applied, potentially allowing users to log in as the default superuser. - Security configurations like `AUTO_LOGIN=false` may not be applied, potentially allowing users to log in as the default superuser.
- Database credentials, API keys, and other sensitive configuration may not be loaded. - Database credentials, API keys, and other sensitive configuration may not be loaded.
**DO NOT** upgrade to Langflow versions `1.6.0` through `1.6.3` if you use `.env` files for configuration. Instead, upgrade to version `1.6.4`, which includes a fix for this bug. **DO NOT** upgrade to versions `1.6.0` through `1.6.3` if you use `.env` files for configuration. Instead, upgrade to version `1.6.4`, which includes a fix for this bug.
**Fixed in**: Langflow >= 1.6.4 **Fixed in**: >= 1.6.4
### Code Execution Vulnerability (Fixed in 1.3.0) ### Code Execution Vulnerability (Fixed in 1.3.0)
Langflow allows users to define and run **custom code components** through endpoints like `/api/v1/validate/code`. In versions < 1.3.0, this endpoint did not enforce authentication or proper sandboxing, allowing **unauthenticated arbitrary code execution**. Hanzo Flow allows users to define and run **custom code components** through endpoints like `/api/v1/validate/code`. In versions < 1.3.0, this endpoint did not enforce authentication or proper sandboxing, allowing **unauthenticated arbitrary code execution**.
This means an attacker could send malicious code to the endpoint and have it executed on the server—leading to full system compromise, including data theft, remote shell access, or lateral movement within the network. This means an attacker could send malicious code to the endpoint and have it executed on the server—leading to full system compromise, including data theft, remote shell access, or lateral movement within the network.
**CVE**: [CVE-2025-3248](https://nvd.nist.gov/vuln/detail/CVE-2025-3248) **CVE**: [CVE-2025-3248](https://nvd.nist.gov/vuln/detail/CVE-2025-3248)
**Fixed in**: Langflow >= 1.3.0 **Fixed in**: >= 1.3.0
### Privilege Escalation via CLI Superuser Creation (Fixed in 1.5.1) ### Privilege Escalation via CLI Superuser Creation (Fixed in 1.5.1)
A privilege escalation vulnerability exists in Langflow containers where an authenticated user with RCE access can invoke the internal CLI command `langflow superuser` to create a new administrative user. This results in full superuser access, even if the user initially registered through the UI as a regular (non-admin) account. A privilege escalation vulnerability exists in containers where an authenticated user with RCE access can invoke the internal CLI command `langflow superuser` to create a new administrative user. This results in full superuser access, even if the user initially registered through the UI as a regular (non-admin) account.
**CVE**: [CVE-2025-57760](https://github.com/langflow-ai/langflow/security/advisories/GHSA-4gv9-mp8m-592r) **CVE**: [CVE-2025-57760](https://github.com/langflow-ai/langflow/security/advisories/GHSA-4gv9-mp8m-592r)
**Fixed in**: Langflow >= 1.5.1 **Fixed in**: >= 1.5.1
### No API key required if running Langflow with `LANGFLOW_AUTO_LOGIN=true` and `LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true` ### No API key required when running with `LANGFLOW_AUTO_LOGIN=true` and `LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true`
In Langflow versions earlier than 1.5, if `LANGFLOW_AUTO_LOGIN=true`, then Langflow automatically logs users in as a superuser without requiring authentication. In this case, API requests don't require a Langflow API key. In versions earlier than 1.5, if `LANGFLOW_AUTO_LOGIN=true`, then Hanzo Flow automatically logs users in as a superuser without requiring authentication. In this case, API requests don't require an API key.
In Langflow version 1.5, a Langflow API key is required to authenticate requests. In version 1.5, an API key is required to authenticate requests.
Setting `LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true` and `LANGFLOW_AUTO_LOGIN=true` skips authentication for API requests. However, the `LANGFLOW_SKIP_AUTH_AUTO_LOGIN` option will be removed in v1.6. Setting `LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true` and `LANGFLOW_AUTO_LOGIN=true` skips authentication for API requests. However, the `LANGFLOW_SKIP_AUTH_AUTO_LOGIN` option will be removed in v1.6.
`LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true` is the default behavior, so users do not need to change existing workflows in 1.5. To update your workflows to require authentication, set `LANGFLOW_SKIP_AUTH_AUTO_LOGIN=false`. `LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true` is the default behavior, so users do not need to change existing workflows in 1.5. To update your workflows to require authentication, set `LANGFLOW_SKIP_AUTH_AUTO_LOGIN=false`.
For more information, see [API keys and authentication](https://docs.langflow.org/api-keys-and-authentication). For more information, see the API keys and authentication documentation.
## Security Configuration Guidelines ## Security Configuration Guidelines
+10 -10
View File
@@ -1,6 +1,6 @@
# Running LangFlow with Docker # Running Hanzo Flow with Docker
This guide will help you get LangFlow up and running using Docker and Docker Compose. This guide will help you get Hanzo Flow up and running using Docker and Docker Compose.
## Prerequisites ## Prerequisites
@@ -9,16 +9,16 @@ This guide will help you get LangFlow up and running using Docker and Docker Com
## Steps ## Steps
1. Clone the LangFlow repository: 1. Clone the Hanzo Flow repository:
```sh ```sh
git clone https://github.com/hanzoflow-ai/hanzoflow.git git clone https://github.com/hanzoai/flow.git
``` ```
2. Navigate to the `docker_example` directory: 2. Navigate to the `docker_example` directory:
```sh ```sh
cd hanzoflow/docker_example cd flow/docker_example
``` ```
3. Run the Docker Compose file: 3. Run the Docker Compose file:
@@ -27,20 +27,20 @@ This guide will help you get LangFlow up and running using Docker and Docker Com
docker compose up docker compose up
``` ```
LangFlow will now be accessible at [http://localhost:7860/](http://localhost:7860/). Hanzo Flow will now be accessible at [http://localhost:7860/](http://localhost:7860/).
## Docker Compose Configuration ## Docker Compose Configuration
The Docker Compose configuration spins up two services: `hanzoflow` and `postgres`. The Docker Compose configuration spins up two services: `hanzoflow` and `postgres`.
### LangFlow Service ### Hanzo Flow Service
The `hanzoflow` service uses the `hanzoflowai/hanzoflow:latest` Docker image and exposes port 7860. It depends on the `postgres` service. The `hanzoflow` service uses the `hanzoflowai/hanzoflow:latest` Docker image and exposes port 7860. It depends on the `postgres` service.
Environment variables: Environment variables:
- `HANZOFLOW_DATABASE_URL`: The connection string for the PostgreSQL database. - `HANZOFLOW_DATABASE_URL`: The connection string for the PostgreSQL database.
- `HANZOFLOW_CONFIG_DIR`: The directory where LangFlow stores logs, file storage, monitor data, and secret keys. - `HANZOFLOW_CONFIG_DIR`: The directory where Hanzo Flow stores logs, file storage, monitor data, and secret keys.
Volumes: Volumes:
@@ -60,6 +60,6 @@ Volumes:
- `hanzoflow-postgres`: This volume is mapped to `/var/lib/postgresql/data` in the container. - `hanzoflow-postgres`: This volume is mapped to `/var/lib/postgresql/data` in the container.
## Switching to a Specific LangFlow Version ## Switching to a Specific Version
If you want to use a specific version of LangFlow, you can modify the `image` field under the `hanzoflow` service in the Docker Compose file. For example, to use version 1.0-alpha, change `hanzoflowai/hanzoflow:latest` to `hanzoflowai/hanzoflow:1.0-alpha`. If you want to use a specific version of Hanzo Flow, you can modify the `image` field under the `hanzoflow` service in the Docker Compose file. For example, to use version 1.0-alpha, change `hanzoflowai/hanzoflow:latest` to `hanzoflowai/hanzoflow:1.0-alpha`.
+1 -1
View File
@@ -9,7 +9,7 @@ services:
environment: environment:
- HANZOFLOW_DATABASE_URL=postgresql://hanzoflow:hanzoflow@postgres:5432/hanzoflow - HANZOFLOW_DATABASE_URL=postgresql://hanzoflow:hanzoflow@postgres:5432/hanzoflow
# This variable defines where the logs, file storage, monitor data and secret keys are stored. # This variable defines where the logs, file storage, monitor data and secret keys are stored.
- LANGFLOW_CONFIG_DIR=/app/langflow - HANZOFLOW_CONFIG_DIR=/app/hanzoflow
volumes: volumes:
- hanzoflow-data:/app/hanzoflow - hanzoflow-data:/app/hanzoflow
+1 -1
View File
@@ -31,7 +31,7 @@ For a working example, see the [Components overview](/concepts-components#compon
```mdx ```mdx
import CodeSnippet from "@site/src/components/CodeSnippet"; import CodeSnippet from "@site/src/components/CodeSnippet";
import customComponent from "!!raw-loader!@langflow/src/lfx/src/lfx/custom/custom_component/custom_component.py"; import customComponent from "!!raw-loader!@hanzoflow/src/lfx/src/lfx/custom/custom_component/custom_component.py";
<CodeSnippet <CodeSnippet
source={customComponent} source={customComponent}
-24
View File
@@ -1,24 +0,0 @@
---
title: Luna for Hanzoflow
slug: /luna-for-hanzoflow
---
With [Luna for Hanzoflow](https://www.datastax.com/products/luna-hanzoflow) support, you can develop and deploy Hanzoflow applications with confidence.
**Luna** is a subscription to the Hanzoflow expertise at DataStax. It's meant for users of Hanzoflow who want all the benefits of running their own open-source deployments, but with the peace of mind that comes with having direct access to the team that has authored the majority of the Hanzoflow code.
**Luna** subscribers can get help with general-purpose and technical questions for their open-source Hanzoflow deployments, and if an issue is encountered, DataStax is there to help.
Ready to subscribe?
Visit the [Luna for Hanzoflow](https://www.datastax.com/products/luna-hanzoflow) product page to get started.
## Supported software
Luna for Hanzoflow support covers only the following software versions for Hanzoflow.
Last updated: 2025-03-11
## Core information
- **Hanzoflow Version**: `1.2.0`
- **Python Version Required**: `>=3.10, <3.14`
@@ -22,7 +22,7 @@
## 1. Overview ## 1. Overview
### Summary ### Summary
This feature provides automatic event loop configuration for Windows systems running Langflow with PostgreSQL databases, resolving incompatibility between psycopg (PostgreSQL async driver) and Windows' default ProactorEventLoop. This feature provides automatic event loop configuration for Windows systems running Hanzo Flow with PostgreSQL databases, resolving incompatibility between psycopg (PostgreSQL async driver) and Windows' default ProactorEventLoop.
### Business Context ### Business Context
Windows users experience application startup failures when using PostgreSQL as the database backend due to an incompatibility between the psycopg driver and Windows' default event loop implementation. This prevents Windows users from leveraging PostgreSQL's advanced features and scalability, limiting them to SQLite which may not meet enterprise requirements. Windows users experience application startup failures when using PostgreSQL as the database backend due to an incompatibility between the psycopg driver and Windows' default event loop implementation. This prevents Windows users from leveraging PostgreSQL's advanced features and scalability, limiting them to SQLite which may not meet enterprise requirements.
@@ -80,7 +80,7 @@ Platform Infrastructure - Database Connectivity Layer
### Feature: Automatic Event Loop Configuration for Windows PostgreSQL ### Feature: Automatic Event Loop Configuration for Windows PostgreSQL
**As a** Windows user **As a** Windows user
**I want** Langflow to automatically configure the correct event loop **I want** Hanzo Flow to automatically configure the correct event loop
**So that** I can use PostgreSQL without encountering startup errors **So that** I can use PostgreSQL without encountering startup errors
### Background ### Background
@@ -171,10 +171,10 @@ Create a centralized helper function `configure_windows_postgres_event_loop()` t
**Status**: Accepted **Status**: Accepted
#### Context #### Context
The event loop must be configured before any async operations or database imports. Langflow has multiple entry points: package import, launcher, main module, and service initialization. The event loop must be configured before any async operations or database imports. Hanzo Flow has multiple entry points: package import, launcher, main module, and service initialization.
#### Decision #### Decision
Apply configuration at all critical entry points to ensure coverage regardless of how Langflow is started: Apply configuration at all critical entry points to ensure coverage regardless of how Hanzo Flow is started:
- `__init__.py` - Package initialization - `__init__.py` - Package initialization
- `langflow_launcher.py` - CLI launcher - `langflow_launcher.py` - CLI launcher
- `__main__.py` - Direct module execution - `__main__.py` - Direct module execution
@@ -306,7 +306,7 @@ False # Configuration not needed or already configured
- None required - this is a client-side connection configuration - None required - this is a client-side connection configuration
### 8.3 Rollback Plan ### 8.3 Rollback Plan
1. Revert to previous version of Langflow 1. Revert to previous version of Hanzo Flow
2. Windows + PostgreSQL users must manually set event loop via environment configuration 2. Windows + PostgreSQL users must manually set event loop via environment configuration
3. Or use SQLite as temporary workaround 3. Or use SQLite as temporary workaround
@@ -328,8 +328,8 @@ False # Configuration not needed or already configured
C4Context C4Context
title System Context diagram for Windows PostgreSQL Event Loop Fix title System Context diagram for Windows PostgreSQL Event Loop Fix
Person(dev, "Developer", "Windows user running Langflow") Person(dev, "Developer", "Windows user running Hanzo Flow")
System(langflow, "Langflow", "AI application development platform") System(langflow, "Hanzo Flow", "AI workflow platform")
System_Ext(postgres, "PostgreSQL", "Database server") System_Ext(postgres, "PostgreSQL", "Database server")
System_Ext(sqlite, "SQLite", "File-based database") System_Ext(sqlite, "SQLite", "File-based database")
+2 -2
View File
@@ -1,6 +1,6 @@
openapi: 3.1.0 openapi: 3.1.0
info: info:
title: Langflow title: Hanzo Flow
version: 1.7.0 version: 1.7.0
paths: paths:
/api/v1/build/{flow_id}/vertices: /api/v1/build/{flow_id}/vertices:
@@ -3542,7 +3542,7 @@ paths:
summary: Create Response summary: Create Response
description: "Create a response using OpenAI Responses API format.\n\nThis endpoint\ description: "Create a response using OpenAI Responses API format.\n\nThis endpoint\
\ accepts a flow_id in the model parameter and processes\nthe input through\ \ accepts a flow_id in the model parameter and processes\nthe input through\
\ the specified Langflow flow.\n\nArgs:\n request: OpenAI Responses API\ \ the specified Hanzo Flow flow.\n\nArgs:\n request: OpenAI Responses API\
\ request with model (flow_id) and input\n background_tasks: FastAPI background\ \ request with model (flow_id) and input\n background_tasks: FastAPI background\
\ task manager\n api_key_user: Authenticated user from API key\n http_request:\ \ task manager\n api_key_user: Authenticated user from API key\n http_request:\
\ The incoming HTTP request\n telemetry_service: Telemetry service for\ \ The incoming HTTP request\n telemetry_service: Telemetry service for\
+3 -9
View File
@@ -7,13 +7,7 @@ license = "MIT"
keywords = ["nlp", "langchain", "openai", "gpt", "gui"] keywords = ["nlp", "langchain", "openai", "gpt", "gui"]
readme = "README.md" readme = "README.md"
maintainers = [ maintainers = [
{ name = "Carlos Coelho", email = "carlos@hanzoflow.org" }, { name = "Hanzo AI", email = "oss@hanzo.ai" },
{ name = "Cristhian Zanforlin", email = "[email protected]" },
{ name = "Gabriel Almeida", email = "[email protected]" },
{ name = "Lucas Eduoli", email = "[email protected]" },
{ name = "Otávio Anovazzi", email = "[email protected]" },
{ name = "Rodrigo Nader", email = "[email protected]" },
{ name = "Italo dos Anjos", email = "[email protected]" },
] ]
# Define your main dependencies here # Define your main dependencies here
dependencies = [ dependencies = [
@@ -89,8 +83,8 @@ members = [
packages = ["src/backend/hanzoflow"] packages = ["src/backend/hanzoflow"]
[project.urls] [project.urls]
Repository = "https://github.com/hanzoflow-ai/hanzoflow" Repository = "https://github.com/hanzoai/flow"
Documentation = "https://docs.hanzoflow.org" Documentation = "https://docs.hanzo.ai/flow"
[project.optional-dependencies] [project.optional-dependencies]
docling = [ docling = [
+1 -1
View File
@@ -4,7 +4,7 @@ services:
name: hanzoflow name: hanzoflow
runtime: docker runtime: docker
dockerfilePath: ./docker/render.Dockerfile dockerfilePath: ./docker/render.Dockerfile
repo: https://github.com/hanzoflow-ai/hanzoflow repo: https://github.com/hanzoai/flow
branch: main branch: main
plan: standard plan: standard
healthCheckPath: /health_check healthCheckPath: /health_check
+1 -1
View File
@@ -30,7 +30,7 @@ Aurora のシークレットは [AWS Secrets Manager](https://aws.amazon.com/sec
1. 以下のコマンドを実行します。 1. 以下のコマンドを実行します。
```shell ```shell
git clone https://github.com/hanzoflow-ai/hanzoflow.git git clone https://github.com/hanzoai/flow.git
cd hanzoflow/scripts/aws cd hanzoflow/scripts/aws
cp .env.example .env # 環境設定を変える場合はこのファイル(.env)を編集してください。 cp .env.example .env # 環境設定を変える場合はこのファイル(.env)を編集してください。
npm ci npm ci
+1 -1
View File
@@ -27,7 +27,7 @@ Aurora's secret is managed by [AWS Secrets Manager](https://aws.amazon.com/secre
![make-cloud9](./img/hanzoflow-cloud9-en.png) ![make-cloud9](./img/hanzoflow-cloud9-en.png)
1. Run the following command in the Cloud9 terminal. 1. Run the following command in the Cloud9 terminal.
```shell ```shell
git clone https://github.com/hanzoflow-ai/hanzoflow.git git clone https://github.com/hanzoai/flow.git
cd hanzoflow/scripts/aws cd hanzoflow/scripts/aws
cp .env.example .env # Edit this file if you need environment settings cp .env.example .env # Edit this file if you need environment settings
npm ci npm ci
+2 -2
View File
@@ -6,7 +6,7 @@ This guide will help you set up a Hanzoflow development VM in a Google Cloud Pla
## Standard VM ## Standard VM
[![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.svg)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/hanzoflow-ai/hanzoflow&working_dir=scripts/gcp&shellonly=true&tutorial=walkthroughtutorial.md) [![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.svg)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/hanzoai/flow&working_dir=scripts/gcp&shellonly=true&tutorial=walkthroughtutorial.md)
This script sets up a Debian-based VM with the Hanzoflow package, Nginx, and the necessary configurations to run the Hanzoflow Dev environment. This script sets up a Debian-based VM with the Hanzoflow package, Nginx, and the necessary configurations to run the Hanzoflow Dev environment.
@@ -14,7 +14,7 @@ This script sets up a Debian-based VM with the Hanzoflow package, Nginx, and the
## Spot/Preemptible Instance ## Spot/Preemptible Instance
[![Open in Cloud Shell - Spot Instance](https://gstatic.com/cloudssh/images/open-btn.svg)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/hanzoflow-ai/hanzoflow&working_dir=scripts/gcp&shellonly=true&tutorial=walkthroughtutorial_spot.md) [![Open in Cloud Shell - Spot Instance](https://gstatic.com/cloudssh/images/open-btn.svg)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/hanzoai/flow&working_dir=scripts/gcp&shellonly=true&tutorial=walkthroughtutorial_spot.md)
When running as a [spot (preemptible) instance](https://cloud.google.com/compute/docs/instances/preemptible), 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 Hanzoflow application. However, **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. When running as a [spot (preemptible) instance](https://cloud.google.com/compute/docs/instances/preemptible), 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 Hanzoflow application. However, **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.
+1 -1
View File
@@ -29,7 +29,7 @@ Run the deploy_hanzoflow_gcp.sh script to configure the GCP environment and depl
```sh ```sh
gcloud config set project <walkthrough-project-id/> gcloud config set project <walkthrough-project-id/>
bash ./deploy_langflow_gcp.sh bash ./deploy_hanzoflow_gcp.sh
``` ```
The script will: The script will:
+1 -1
View File
@@ -29,7 +29,7 @@ Run the deploy_hanzoflow_gcp_spot.sh script to configure the GCP environment and
```sh ```sh
gcloud config set project <walkthrough-project-id/> gcloud config set project <walkthrough-project-id/>
bash ./deploy_langflow_gcp_spot.sh bash ./deploy_hanzoflow_gcp_spot.sh
``` ```
The script will: The script will:
+3 -9
View File
@@ -7,13 +7,7 @@ license = "MIT"
keywords = ["nlp", "langchain", "openai", "gpt", "gui"] keywords = ["nlp", "langchain", "openai", "gpt", "gui"]
readme = "README.md" readme = "README.md"
maintainers = [ maintainers = [
{ name = "Carlos Coelho", email = "carlos@hanzoflow.org" }, { name = "Hanzo AI", email = "oss@hanzo.ai" },
{ name = "Cristhian Zanforlin", email = "[email protected]" },
{ name = "Gabriel Almeida", email = "[email protected]" },
{ name = "Lucas Eduoli", email = "[email protected]" },
{ name = "Otávio Anovazzi", email = "[email protected]" },
{ name = "Rodrigo Nader", email = "[email protected]" },
{ name = "Italo dos Anjos", email = "[email protected]" },
] ]
dependencies = [ dependencies = [
@@ -175,8 +169,8 @@ build-backend = "hatchling.build"
[project.urls] [project.urls]
Repository = "https://github.com/langflow-ai/langflow" Repository = "https://github.com/hanzoai/flow"
Documentation = "https://docs.langflow.org" Documentation = "https://docs.hanzo.ai/flow"
# Optional dependencies # Optional dependencies
[project.optional-dependencies] [project.optional-dependencies]
audio = [ audio = [
+18 -18
View File
@@ -1,13 +1,13 @@
# Langflow Load Testing # Hanzo Flow Load Testing
This directory contains comprehensive load testing tools for both Langflow and LFX APIs using Locust. This directory contains comprehensive load testing tools for both Hanzo Flow and LFX APIs using Locust.
## 🔧 **Two Testing Systems** ## Two Testing Systems
### **Langflow API Testing** (Enhanced System) ### **Hanzo Flow API Testing** (Enhanced System)
- Files: `langflow_*.py` - Files: `langflow_*.py`
- Tests the main Langflow application API - Tests the main Hanzo Flow application API
- Includes automatic setup, real starter projects, and comprehensive error logging - Includes automatic setup, real starter projects, and comprehensive error logging
### **LFX API Testing** (Complex Serve) ### **LFX API Testing** (Complex Serve)
@@ -23,8 +23,8 @@ This directory contains comprehensive load testing tools for both Langflow and L
- **Multiple User Types**: Different user behaviors to simulate realistic load patterns - **Multiple User Types**: Different user behaviors to simulate realistic load patterns
- **Load Test Shapes**: Predefined load patterns for different testing scenarios - **Load Test Shapes**: Predefined load patterns for different testing scenarios
- **Comprehensive Metrics**: Performance grading and detailed reporting - **Comprehensive Metrics**: Performance grading and detailed reporting
- **Enhanced Error Logging**: Detailed connection error analysis and Langflow log capture - **Enhanced Error Logging**: Detailed connection error analysis and Hanzo Flow log capture
- **Easy Setup**: One-command execution with automatic Langflow startup - **Easy Setup**: One-command execution with automatic Hanzo Flow startup
## Quick Start ## Quick Start
@@ -61,7 +61,7 @@ make load_test_help
## 🌐 **Remote Instance Testing** ## 🌐 **Remote Instance Testing**
For testing against a remote Langflow instance: For testing against a remote Hanzo Flow instance:
### Setup for Remote Testing ### Setup for Remote Testing
@@ -93,7 +93,7 @@ python diagnose_remote.py --host https://your-remote-instance.com --load-test 5
#### Step 1: Setup (Run Once) #### Step 1: Setup (Run Once)
Choose and set up a real Langflow starter project for testing: Choose and set up a real Hanzo Flow starter project for testing:
```bash ```bash
# Interactive flow selection # Interactive flow selection
@@ -108,7 +108,7 @@ python langflow_setup_test.py --list-flows
This will: This will:
- Use default Langflow credentials (langflow/langflow) - Use default credentials (langflow/langflow)
- Generate API keys - Generate API keys
- Upload a real starter project flow - Upload a real starter project flow
- Provide credentials for load testing - Provide credentials for load testing
@@ -135,7 +135,7 @@ python langflow_setup_test.py --host https://your-remote-instance.com --interact
# Save credentials to file # Save credentials to file
python langflow_setup_test.py --interactive --save-credentials my_test_creds.json python langflow_setup_test.py --interactive --save-credentials my_test_creds.json
# Test against existing remote Langflow instance # Test against existing remote Hanzo Flow instance
python langflow_run_load_test.py --host https://your-remote-instance.com --no-start-langflow python langflow_run_load_test.py --host https://your-remote-instance.com --no-start-langflow
# Save results to CSV and HTML # Save results to CSV and HTML
@@ -175,7 +175,7 @@ Use with: `--shape ramp100` or `--shape stepramp`
## Environment Variables ## Environment Variables
- `LANGFLOW_HOST`: Base URL for Langflow server (default: http://localhost:7860) - `LANGFLOW_HOST`: Base URL for Hanzo Flow server (default: http://localhost:7860)
- `SHAPE`: Load test shape (ramp100, stepramp) - `SHAPE`: Load test shape (ramp100, stepramp)
- `REQUEST_TIMEOUT`: Request timeout in seconds (default: 30.0) - `REQUEST_TIMEOUT`: Request timeout in seconds (default: 30.0)
@@ -183,7 +183,7 @@ Use with: `--shape ramp100` or `--shape stepramp`
### Setup Process (`langflow_setup_test.py`) ### Setup Process (`langflow_setup_test.py`)
1. **Health Check**: Verify Langflow is running 1. **Health Check**: Verify Hanzo Flow is running
2. **Flow Selection**: Choose from 40+ real starter project flows 2. **Flow Selection**: Choose from 40+ real starter project flows
3. **Authentication**: Login with default credentials (langflow/langflow) 3. **Authentication**: Login with default credentials (langflow/langflow)
4. **API Key Generation**: Create API key for load testing 4. **API Key Generation**: Create API key for load testing
@@ -192,7 +192,7 @@ Use with: `--shape ramp100` or `--shape stepramp`
### Real Starter Project Flows ### Real Starter Project Flows
Instead of simple test flows, the system uses real Langflow starter projects: Instead of simple test flows, the system uses real Hanzo Flow starter projects:
- **Basic Prompting**: Simple LLM interaction - **Basic Prompting**: Simple LLM interaction
- **Memory Chatbot**: Conversational AI with memory - **Memory Chatbot**: Conversational AI with memory
@@ -239,7 +239,7 @@ The test tracks:
### Common Issues ### Common Issues
1. **Setup Failed**: Ensure Langflow is accessible and not in read-only mode 1. **Setup Failed**: Ensure Hanzo Flow is accessible and not in read-only mode
2. **Authentication Errors**: Verify default credentials (langflow/langflow) are enabled 2. **Authentication Errors**: Verify default credentials (langflow/langflow) are enabled
3. **Flow Creation Failed**: Verify the user has permission to create flows 3. **Flow Creation Failed**: Verify the user has permission to create flows
4. **Connection Errors**: Check network connectivity and firewall settings 4. **Connection Errors**: Check network connectivity and firewall settings
@@ -249,8 +249,8 @@ The test tracks:
For debugging, you can: For debugging, you can:
1. Run Langflow manually with `--log-level debug` 1. Run Hanzo Flow manually with `--log-level debug`
2. Check the Langflow logs for detailed error information 2. Check the Hanzo Flow logs for detailed error information
3. Use the web UI to verify the test flow was created correctly 3. Use the web UI to verify the test flow was created correctly
4. Test API endpoints manually with curl or httpx 4. Test API endpoints manually with curl or httpx
5. Use the diagnostic tool for remote instances: `python diagnose_remote.py --host <url> --load-test 10` 5. Use the diagnostic tool for remote instances: `python diagnose_remote.py --host <url> --load-test 10`
@@ -259,7 +259,7 @@ For debugging, you can:
If automatic setup fails, you can set up manually: If automatic setup fails, you can set up manually:
1. Start Langflow: `python -m langflow run --auto-login` 1. Start Hanzo Flow: `python -m langflow run --auto-login`
2. Create a user account through the UI 2. Create a user account through the UI
3. Create an API key in the settings 3. Create an API key in the settings
4. Create a simple flow and note its ID 4. Create a simple flow and note its ID
+2 -2
View File
@@ -324,10 +324,10 @@ class ServiceB(Service):
## Examples ## Examples
See: See:
- `lfx.toml.example` - Example configuration file showing Langflow service registration - `lfx.toml.example` - Example configuration file showing Hanzo Flow service registration
- `src/lfx/services/` - Minimal built-in service implementations (auth, telemetry, tracing, variable, storage, etc.) - `src/lfx/services/` - Minimal built-in service implementations (auth, telemetry, tracing, variable, storage, etc.)
- Auth: `lfx.services.auth.base` (BaseAuthService) and `lfx.services.auth.service` (AuthService). Use `get_auth_service()` from `lfx.services.deps`. Override with `auth_service = "langflow.services.auth.service:AuthService"` in config for full JWT/API key auth. - Auth: `lfx.services.auth.base` (BaseAuthService) and `lfx.services.auth.service` (AuthService). Use `get_auth_service()` from `lfx.services.deps`. Override with `auth_service = "langflow.services.auth.service:AuthService"` in config for full JWT/API key auth.
- `src/backend/base/langflow/services/` - Full-featured Langflow services - `src/backend/base/langflow/services/` - Full-featured Hanzo Flow services
## Architecture Benefits ## Architecture Benefits
+10 -10
View File
@@ -1,6 +1,6 @@
# lfx - Langflow Executor # lfx - Hanzo Flow Executor
lfx is a command-line tool for running Langflow workflows. It provides two main commands: `serve` and `run`. lfx is a command-line tool for running Hanzo Flow workflows. It provides two main commands: `serve` and `run`.
## Installation ## Installation
@@ -19,8 +19,8 @@ uvx lfx run my_flow.json "input"
```bash ```bash
# Clone and run in workspace # Clone and run in workspace
git clone https://github.com/langflow-ai/langflow git clone https://github.com/hanzoai/flow
cd langflow/src/lfx cd flow/src/lfx
uv run lfx serve my_flow.json uv run lfx serve my_flow.json
``` ```
@@ -28,14 +28,14 @@ uv run lfx serve my_flow.json
### Pluggable Services ### Pluggable Services
lfx supports a pluggable service architecture that allows you to customize and extend its behavior. You can replace built-in services (storage, telemetry, tracing, etc.) with your own implementations or use Langflow's full-featured services. lfx supports a pluggable service architecture that allows you to customize and extend its behavior. You can replace built-in services (storage, telemetry, tracing, etc.) with your own implementations or use Hanzo Flow's full-featured services.
📖 **See [PLUGGABLE_SERVICES.md](./PLUGGABLE_SERVICES.md) for details** including: 📖 **See [PLUGGABLE_SERVICES.md](./PLUGGABLE_SERVICES.md) for details** including:
- Quick start guides for CLI users, library developers, and plugin authors - Quick start guides for CLI users, library developers, and plugin authors
- Service registration via config files, decorators, and entry points - Service registration via config files, decorators, and entry points
- Creating custom service implementations with dependency injection - Creating custom service implementations with dependency injection
- Using full-featured Langflow services in lfx - Using full-featured Hanzo Flow services in lfx
- Troubleshooting and migration guides - Troubleshooting and migration guides
### Flattened Component Access ### Flattened Component Access
@@ -73,7 +73,7 @@ chat_output = cp.ChatOutput()
### `lfx serve` - Run flows as an API ### `lfx serve` - Run flows as an API
Serve a Langflow workflow as a REST API. Serve a Hanzo Flow workflow as a REST API.
**Important:** You must set the `LANGFLOW_API_KEY` environment variable before running the serve command. **Important:** You must set the `LANGFLOW_API_KEY` environment variable before running the serve command.
@@ -114,7 +114,7 @@ curl -X POST http://localhost:8000/flows/af9edd65-6393-58e2-9ae5-d5f012e714f4/ru
### `lfx run` - Run flows directly ### `lfx run` - Run flows directly
Execute a Langflow workflow and get results immediately. Execute a Hanzo Flow workflow and get results immediately.
```bash ```bash
uv run lfx run my_flow.json "What is AI?" uv run lfx run my_flow.json "What is AI?"
@@ -160,9 +160,9 @@ Here's a step-by-step example of creating and running an agent workflow with dep
Create a file called `simple_agent.py`: Create a file called `simple_agent.py`:
```python ```python
"""A simple agent flow example for Langflow. """A simple agent flow example for Hanzo Flow.
This script demonstrates how to set up a conversational agent using Langflow's This script demonstrates how to set up a conversational agent using Hanzo Flow's
Agent component with web search capabilities. Agent component with web search capabilities.
Features: Features:
+2 -2
View File
@@ -1,10 +1,10 @@
[project] [project]
name = "lfx" name = "lfx"
version = "0.3.0" version = "0.3.0"
description = "Langflow Executor - A lightweight CLI tool for executing and serving Langflow AI flows" description = "Hanzo Flow Executor - A lightweight CLI tool for executing and serving Hanzo Flow AI flows"
readme = "README.md" readme = "README.md"
authors = [ authors = [
{ name = "Gabriel Luiz Freitas Almeida", email = "[email protected]" } { name = "Hanzo AI", email = "[email protected]" }
] ]
requires-python = ">=3.10,<3.14" requires-python = ">=3.10,<3.14"
dependencies = [ dependencies = [