mirror of
https://github.com/hanzoai/flow.git
synced 2026-10-17 01:29:18 +00:00
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:
+6
-22
@@ -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.
|
||||
|
||||
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.
|
||||
These instructions will walk you through the process of running a Hanzo Flow demo via GitHub Codespaces.
|
||||
|
||||
## Create a Codespace in GitHub
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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 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...
|
||||
@@ -41,20 +39,6 @@ Installation is now complete.
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
╭───────────────────────────────────────────────────────────────────────╮
|
||||
│ 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 │
|
||||
╰───────────────────────────────────────────────────────────────────────╯
|
||||
```
|
||||
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`.
|
||||
@@ -1,5 +1,5 @@
|
||||
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" ]
|
||||
body:
|
||||
- type: markdown
|
||||
@@ -87,7 +87,7 @@ body:
|
||||
- type: input
|
||||
id: langflow-version
|
||||
attributes:
|
||||
label: Langflow Version
|
||||
label: Hanzo Flow Version
|
||||
placeholder: ex. 1.0.9
|
||||
validations:
|
||||
required: true
|
||||
@@ -98,7 +98,7 @@ body:
|
||||
label: "Python Version"
|
||||
description: |
|
||||
|
||||
**Langflow requires Python version 3.10 or greater.**
|
||||
**Hanzo Flow requires Python version 3.10 or greater.**
|
||||
options:
|
||||
- "3.12"
|
||||
- "3.11"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
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" ]
|
||||
body:
|
||||
- type: textarea
|
||||
@@ -25,4 +25,4 @@ body:
|
||||
attributes:
|
||||
label: Your Contribution
|
||||
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
@@ -60,7 +60,7 @@ representative at an online or offline event.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
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 community leaders are obligated to respect the privacy and security of the
|
||||
|
||||
+4
-4
@@ -1,10 +1,10 @@
|
||||
# How to contribute to Langflow
|
||||
# How to contribute to Hanzo Flow
|
||||
|
||||
Thank you for your interest in contributing!
|
||||
|
||||
## 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.
|
||||
3. Submit a pull request to the `main` branch with a clear title and description.
|
||||
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
|
||||
|
||||
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).
|
||||
|
||||
## Additional Guides
|
||||
@@ -27,4 +27,4 @@ For setup instructions, see [DEVELOPMENT.md](./DEVELOPMENT.md).
|
||||
- [Contribute Tests](./docs/docs/Contributing/contributing-component-tests.mdx)
|
||||
- [Contribute Templates](./docs/docs/Contributing/contributing-templates.mdx)
|
||||
|
||||
Thank you for helping improve Langflow!
|
||||
Thank you for helping improve Hanzo Flow!
|
||||
+14
-14
@@ -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.
|
||||
|
||||
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`:
|
||||
|
||||
```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`:
|
||||
|
||||
```bash
|
||||
cd hanzoflow
|
||||
git remote add upstream https://github.com/hanzoflow-ai/hanzoflow.git
|
||||
cd flow
|
||||
git remote add upstream https://github.com/hanzoai/flow.git
|
||||
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`.
|
||||
|
||||
> [!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.
|
||||
- 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
|
||||
|
||||
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
|
||||
make run_clic
|
||||
@@ -103,7 +103,7 @@ uv sync
|
||||
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.
|
||||
|
||||
@@ -123,7 +123,7 @@ make backend
|
||||
```
|
||||
|
||||
> [!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
|
||||
> # 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
|
||||
|
||||
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
|
||||
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!
|
||||
|
||||
> [!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
|
||||
|
||||
@@ -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.
|
||||
|
||||
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
|
||||
|
||||
@@ -272,7 +272,7 @@ You may observe some quirky things:
|
||||
|
||||
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.
|
||||
- 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`
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<!-- markdownlint-disable MD030 -->
|
||||
|
||||

|
||||
# Hanzo Flow
|
||||
|
||||
[](https://github.com/hanzoai/flow/releases)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](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
|
||||
|
||||
@@ -34,12 +34,12 @@ uv pip install hanzoflow -U
|
||||
|
||||
#### Run
|
||||
|
||||
To start Hanzoflow, run:
|
||||
To start Hanzo Flow, run:
|
||||
```shell
|
||||
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
|
||||
|
||||
@@ -51,20 +51,16 @@ make run_cli
|
||||
For more information, see [DEVELOPMENT.md](./DEVELOPMENT.md).
|
||||
|
||||
### Docker
|
||||
Start a Hanzoflow container with default settings:
|
||||
Start a Hanzo Flow container with default settings:
|
||||
```shell
|
||||
docker run -p 7860:7860 hanzoai/flow:latest
|
||||
```
|
||||
Hanzoflow is available at http://localhost:7860/.
|
||||
Hanzo Flow is available at http://localhost:7860/.
|
||||
|
||||
## 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
|
||||
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
Based on [Langflow](https://github.com/langflow-ai/langflow) by DataStax.
|
||||
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.
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
@@ -39,7 +39,7 @@ This step also usually lasts about a week.
|
||||
After QA and bugfixing are complete for both OSS and Desktop:
|
||||
|
||||
* 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.
|
||||
|
||||
## Branch Model
|
||||
|
||||
+23
-21
@@ -1,8 +1,8 @@
|
||||
# 🛡️ Langflow Security Policy & Responsible Disclosure
|
||||
# Hanzo Flow Security Policy & Responsible Disclosure
|
||||
|
||||
## 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
|
||||
|
||||
@@ -15,7 +15,7 @@ We encourage responsible disclosure of security vulnerabilities. If you find som
|
||||
|
||||
### 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
|
||||
|
||||
@@ -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
|
||||
- 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:
|
||||
- Data from any Langflow customer projects
|
||||
- Langflow user/customer information
|
||||
- Details about Langflow employees, contractors, or partners
|
||||
- Data from any Hanzo Flow customer projects
|
||||
- Hanzo Flow user/customer information
|
||||
- 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.
|
||||
|
||||
## 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)
|
||||
|
||||
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:**
|
||||
- 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)
|
||||
**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)
|
||||
|
||||
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:**
|
||||
- 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)
|
||||
**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)
|
||||
|
||||
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:**
|
||||
- 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.
|
||||
- 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)
|
||||
|
||||
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.
|
||||
|
||||
**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)
|
||||
|
||||
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)
|
||||
**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.
|
||||
|
||||
`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
|
||||
|
||||
|
||||
+10
-10
@@ -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
|
||||
|
||||
@@ -9,16 +9,16 @@ This guide will help you get LangFlow up and running using Docker and Docker Com
|
||||
|
||||
## Steps
|
||||
|
||||
1. Clone the LangFlow repository:
|
||||
1. Clone the Hanzo Flow repository:
|
||||
|
||||
```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:
|
||||
|
||||
```sh
|
||||
cd hanzoflow/docker_example
|
||||
cd flow/docker_example
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
Environment variables:
|
||||
|
||||
- `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:
|
||||
|
||||
@@ -60,6 +60,6 @@ Volumes:
|
||||
|
||||
- `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`.
|
||||
|
||||
@@ -9,7 +9,7 @@ services:
|
||||
environment:
|
||||
- HANZOFLOW_DATABASE_URL=postgresql://hanzoflow:hanzoflow@postgres:5432/hanzoflow
|
||||
# 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:
|
||||
- hanzoflow-data:/app/hanzoflow
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ For a working example, see the [Components overview](/concepts-components#compon
|
||||
|
||||
```mdx
|
||||
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
|
||||
source={customComponent}
|
||||
|
||||
@@ -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
|
||||
|
||||
### 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
|
||||
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
|
||||
|
||||
**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
|
||||
|
||||
### Background
|
||||
@@ -171,10 +171,10 @@ Create a centralized helper function `configure_windows_postgres_event_loop()` t
|
||||
**Status**: Accepted
|
||||
|
||||
#### 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
|
||||
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
|
||||
- `langflow_launcher.py` - CLI launcher
|
||||
- `__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
|
||||
|
||||
### 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
|
||||
3. Or use SQLite as temporary workaround
|
||||
|
||||
@@ -328,8 +328,8 @@ False # Configuration not needed or already configured
|
||||
C4Context
|
||||
title System Context diagram for Windows PostgreSQL Event Loop Fix
|
||||
|
||||
Person(dev, "Developer", "Windows user running Langflow")
|
||||
System(langflow, "Langflow", "AI application development platform")
|
||||
Person(dev, "Developer", "Windows user running Hanzo Flow")
|
||||
System(langflow, "Hanzo Flow", "AI workflow platform")
|
||||
System_Ext(postgres, "PostgreSQL", "Database server")
|
||||
System_Ext(sqlite, "SQLite", "File-based database")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
openapi: 3.1.0
|
||||
info:
|
||||
title: Langflow
|
||||
title: Hanzo Flow
|
||||
version: 1.7.0
|
||||
paths:
|
||||
/api/v1/build/{flow_id}/vertices:
|
||||
@@ -3542,7 +3542,7 @@ paths:
|
||||
summary: Create Response
|
||||
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\
|
||||
\ 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\
|
||||
\ task manager\n api_key_user: Authenticated user from API key\n http_request:\
|
||||
\ The incoming HTTP request\n telemetry_service: Telemetry service for\
|
||||
|
||||
+3
-9
@@ -7,13 +7,7 @@ license = "MIT"
|
||||
keywords = ["nlp", "langchain", "openai", "gpt", "gui"]
|
||||
readme = "README.md"
|
||||
maintainers = [
|
||||
{ name = "Carlos Coelho", email = "carlos@hanzoflow.org" },
|
||||
{ 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]" },
|
||||
{ name = "Hanzo AI", email = "oss@hanzo.ai" },
|
||||
]
|
||||
# Define your main dependencies here
|
||||
dependencies = [
|
||||
@@ -89,8 +83,8 @@ members = [
|
||||
packages = ["src/backend/hanzoflow"]
|
||||
|
||||
[project.urls]
|
||||
Repository = "https://github.com/hanzoflow-ai/hanzoflow"
|
||||
Documentation = "https://docs.hanzoflow.org"
|
||||
Repository = "https://github.com/hanzoai/flow"
|
||||
Documentation = "https://docs.hanzo.ai/flow"
|
||||
|
||||
[project.optional-dependencies]
|
||||
docling = [
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ services:
|
||||
name: hanzoflow
|
||||
runtime: docker
|
||||
dockerfilePath: ./docker/render.Dockerfile
|
||||
repo: https://github.com/hanzoflow-ai/hanzoflow
|
||||
repo: https://github.com/hanzoai/flow
|
||||
branch: main
|
||||
plan: standard
|
||||
healthCheckPath: /health_check
|
||||
|
||||
@@ -30,7 +30,7 @@ Aurora のシークレットは [AWS Secrets Manager](https://aws.amazon.com/sec
|
||||
|
||||
1. 以下のコマンドを実行します。
|
||||
```shell
|
||||
git clone https://github.com/hanzoflow-ai/hanzoflow.git
|
||||
git clone https://github.com/hanzoai/flow.git
|
||||
cd hanzoflow/scripts/aws
|
||||
cp .env.example .env # 環境設定を変える場合はこのファイル(.env)を編集してください。
|
||||
npm ci
|
||||
|
||||
@@ -27,7 +27,7 @@ Aurora's secret is managed by [AWS Secrets Manager](https://aws.amazon.com/secre
|
||||

|
||||
1. Run the following command in the Cloud9 terminal.
|
||||
```shell
|
||||
git clone https://github.com/hanzoflow-ai/hanzoflow.git
|
||||
git clone https://github.com/hanzoai/flow.git
|
||||
cd hanzoflow/scripts/aws
|
||||
cp .env.example .env # Edit this file if you need environment settings
|
||||
npm ci
|
||||
|
||||
@@ -6,7 +6,7 @@ This guide will help you set up a Hanzoflow development VM in a Google Cloud Pla
|
||||
|
||||
## Standard VM
|
||||
|
||||
[](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/hanzoflow-ai/hanzoflow&working_dir=scripts/gcp&shellonly=true&tutorial=walkthroughtutorial.md)
|
||||
[](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.
|
||||
|
||||
@@ -14,7 +14,7 @@ This script sets up a Debian-based VM with the Hanzoflow package, Nginx, and the
|
||||
|
||||
## Spot/Preemptible Instance
|
||||
|
||||
[](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)
|
||||
[](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.
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ Run the deploy_hanzoflow_gcp.sh script to configure the GCP environment and depl
|
||||
|
||||
```sh
|
||||
gcloud config set project <walkthrough-project-id/>
|
||||
bash ./deploy_langflow_gcp.sh
|
||||
bash ./deploy_hanzoflow_gcp.sh
|
||||
```
|
||||
|
||||
The script will:
|
||||
|
||||
@@ -29,7 +29,7 @@ Run the deploy_hanzoflow_gcp_spot.sh script to configure the GCP environment and
|
||||
|
||||
```sh
|
||||
gcloud config set project <walkthrough-project-id/>
|
||||
bash ./deploy_langflow_gcp_spot.sh
|
||||
bash ./deploy_hanzoflow_gcp_spot.sh
|
||||
```
|
||||
|
||||
The script will:
|
||||
|
||||
@@ -7,13 +7,7 @@ license = "MIT"
|
||||
keywords = ["nlp", "langchain", "openai", "gpt", "gui"]
|
||||
readme = "README.md"
|
||||
maintainers = [
|
||||
{ name = "Carlos Coelho", email = "carlos@hanzoflow.org" },
|
||||
{ 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]" },
|
||||
{ name = "Hanzo AI", email = "oss@hanzo.ai" },
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
@@ -175,8 +169,8 @@ build-backend = "hatchling.build"
|
||||
|
||||
|
||||
[project.urls]
|
||||
Repository = "https://github.com/langflow-ai/langflow"
|
||||
Documentation = "https://docs.langflow.org"
|
||||
Repository = "https://github.com/hanzoai/flow"
|
||||
Documentation = "https://docs.hanzo.ai/flow"
|
||||
# Optional dependencies
|
||||
[project.optional-dependencies]
|
||||
audio = [
|
||||
|
||||
@@ -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`
|
||||
- Tests the main Langflow application API
|
||||
- Tests the main Hanzo Flow application API
|
||||
- Includes automatic setup, real starter projects, and comprehensive error logging
|
||||
|
||||
### **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
|
||||
- **Load Test Shapes**: Predefined load patterns for different testing scenarios
|
||||
- **Comprehensive Metrics**: Performance grading and detailed reporting
|
||||
- **Enhanced Error Logging**: Detailed connection error analysis and Langflow log capture
|
||||
- **Easy Setup**: One-command execution with automatic Langflow startup
|
||||
- **Enhanced Error Logging**: Detailed connection error analysis and Hanzo Flow log capture
|
||||
- **Easy Setup**: One-command execution with automatic Hanzo Flow startup
|
||||
|
||||
## Quick Start
|
||||
|
||||
@@ -61,7 +61,7 @@ make load_test_help
|
||||
|
||||
## 🌐 **Remote Instance Testing**
|
||||
|
||||
For testing against a remote Langflow instance:
|
||||
For testing against a remote Hanzo Flow instance:
|
||||
|
||||
### 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)
|
||||
|
||||
Choose and set up a real Langflow starter project for testing:
|
||||
Choose and set up a real Hanzo Flow starter project for testing:
|
||||
|
||||
```bash
|
||||
# Interactive flow selection
|
||||
@@ -108,7 +108,7 @@ python langflow_setup_test.py --list-flows
|
||||
|
||||
This will:
|
||||
|
||||
- Use default Langflow credentials (langflow/langflow)
|
||||
- Use default credentials (langflow/langflow)
|
||||
- Generate API keys
|
||||
- Upload a real starter project flow
|
||||
- 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
|
||||
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
|
||||
|
||||
# Save results to CSV and HTML
|
||||
@@ -175,7 +175,7 @@ Use with: `--shape ramp100` or `--shape stepramp`
|
||||
|
||||
## 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)
|
||||
- `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`)
|
||||
|
||||
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
|
||||
3. **Authentication**: Login with default credentials (langflow/langflow)
|
||||
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
|
||||
|
||||
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
|
||||
- **Memory Chatbot**: Conversational AI with memory
|
||||
@@ -239,7 +239,7 @@ The test tracks:
|
||||
|
||||
### 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
|
||||
3. **Flow Creation Failed**: Verify the user has permission to create flows
|
||||
4. **Connection Errors**: Check network connectivity and firewall settings
|
||||
@@ -249,8 +249,8 @@ The test tracks:
|
||||
|
||||
For debugging, you can:
|
||||
|
||||
1. Run Langflow manually with `--log-level debug`
|
||||
2. Check the Langflow logs for detailed error information
|
||||
1. Run Hanzo Flow manually with `--log-level debug`
|
||||
2. Check the Hanzo Flow logs for detailed error information
|
||||
3. Use the web UI to verify the test flow was created correctly
|
||||
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`
|
||||
@@ -259,7 +259,7 @@ For debugging, you can:
|
||||
|
||||
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
|
||||
3. Create an API key in the settings
|
||||
4. Create a simple flow and note its ID
|
||||
|
||||
@@ -324,10 +324,10 @@ class ServiceB(Service):
|
||||
## Examples
|
||||
|
||||
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.)
|
||||
- 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
|
||||
|
||||
|
||||
+10
-10
@@ -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
|
||||
|
||||
@@ -19,8 +19,8 @@ uvx lfx run my_flow.json "input"
|
||||
|
||||
```bash
|
||||
# Clone and run in workspace
|
||||
git clone https://github.com/langflow-ai/langflow
|
||||
cd langflow/src/lfx
|
||||
git clone https://github.com/hanzoai/flow
|
||||
cd flow/src/lfx
|
||||
uv run lfx serve my_flow.json
|
||||
```
|
||||
|
||||
@@ -28,14 +28,14 @@ uv run lfx serve my_flow.json
|
||||
|
||||
### 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:
|
||||
|
||||
- Quick start guides for CLI users, library developers, and plugin authors
|
||||
- Service registration via config files, decorators, and entry points
|
||||
- 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
|
||||
|
||||
### Flattened Component Access
|
||||
@@ -73,7 +73,7 @@ chat_output = cp.ChatOutput()
|
||||
|
||||
### `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.
|
||||
|
||||
@@ -114,7 +114,7 @@ curl -X POST http://localhost:8000/flows/af9edd65-6393-58e2-9ae5-d5f012e714f4/ru
|
||||
|
||||
### `lfx run` - Run flows directly
|
||||
|
||||
Execute a Langflow workflow and get results immediately.
|
||||
Execute a Hanzo Flow workflow and get results immediately.
|
||||
|
||||
```bash
|
||||
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`:
|
||||
|
||||
```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.
|
||||
|
||||
Features:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[project]
|
||||
name = "lfx"
|
||||
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"
|
||||
authors = [
|
||||
{ name = "Gabriel Luiz Freitas Almeida", email = "[email protected]" }
|
||||
{ name = "Hanzo AI", email = "[email protected]" }
|
||||
]
|
||||
requires-python = ">=3.10,<3.14"
|
||||
dependencies = [
|
||||
|
||||
Reference in New Issue
Block a user