A next-generation visual flow builder designed to address Langflow's architectural limitations through modern software engineering practices. Built with FastAPI and Porto architecture for scalability, maintainability, and performance.
- π¨ Visual Flow Editor - Drag-and-drop interface for building AI workflows
- β‘ High Performance - Async/await throughout with parallel node execution
- ποΈ Porto Architecture - Modular, testable, and maintainable codebase
- π Extensible Nodes - Plugin-based system for custom node types
- π Real-time Compilation - Visual flows compiled to executable Python code
- π Execution Monitoring - Track flow runs with detailed metrics
- π Type Safety - Full Pydantic validation and SQLAlchemy models
- π³ Docker Ready - Complete containerized deployment
- Python 3.11+
- Docker & Docker Compose (recommended)
git clone https://github.com/yourusername/flower.git
cd flower
./run.shgit clone https://github.com/yourusername/flower.git
cd flower
pip install -r requirements.txt
uvicorn main:app --reloadAccess the application:
- Frontend: http://localhost:3022
- API Documentation: http://localhost:8022/docs
- Backend: http://localhost:8022
- Email: admin@flower.com
- Password: admin123
Flower uses the Porto Architecture pattern for clean, scalable code organization:
app/
βββ Containers/ # Business modules
β βββ Flow/ # Flow management
β βββ Node/ # Node system
β βββ Execution/ # Flow execution
β βββ User/ # Authentication
βββ Ship/ # Framework layer
βββ Engine/ # Core application
βββ Parents/ # Base classes
βββ Middlewares/ # HTTP middlewares
# Compile visual flow to Python code
POST /api/compiler/compile
{
"flow_definition": {
"nodes": [...],
"connections": [...]
}
}
# Execute flow with inputs
POST /api/compiler/execute
{
"flow_definition": {...},
"inputs": {"text": "hello world"}
}# List available node types
GET /api/nodes/types
# Get node information
GET /api/nodes/types/TextProcessorNode
# Validate node configuration
POST /api/nodes/validate# Get execution details
GET /api/executions/{execution_id}
# List recent executions
GET /api/executions/from app.Containers.Node.Engine.BaseNode import BaseNode, NodeMetadata, NodePort, DataType
class MyCustomNode(BaseNode):
@property
def metadata(self) -> NodeMetadata:
return NodeMetadata(
name="My Custom Node",
description="Does something amazing",
category="Custom"
)
@property
def input_ports(self) -> List[NodePort]:
return [NodePort(name="input", data_type=DataType.TEXT)]
@property
def output_ports(self) -> List[NodePort]:
return [NodePort(name="output", data_type=DataType.TEXT)]
async def _execute_logic(self, context: ExecutionContext) -> Dict[str, Any]:
input_text = context.inputs.get("input", "")
# Your custom logic here
return {"output": f"Processed: {input_text}"}
# Register the node
from app.Containers.Node.Engine.BaseNode import node_registry
node_registry.register(MyCustomNode)# Run all tests
pytest
# Test the flow system
python test_flow_system.py
# Test API endpoints
python test_api_endpoints.pyWe welcome contributions! Please see our Contributing Guide for details.
- π Report Bugs - Found an issue? Let us know!
- π‘ Feature Requests - Have ideas? We'd love to hear them!
- π§ Code Contributions - Submit PRs for bug fixes or new features
- π Documentation - Help improve our docs
- π¨ Node Library - Create new node types for the community
- π§ͺ Testing - Add tests to improve coverage
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following our coding standards
- Add tests for new functionality
- Ensure all tests pass:
pytest - Submit a pull request
- π¨ Visual Editor Frontend - React/Vue.js canvas editor
- π€ LLM Nodes - OpenAI, Anthropic, local LLM integrations
- π Connectors - Database, API, file system integrations
- π Monitoring - Enhanced execution analytics
- π Security - Authentication and authorization improvements
- Flow compiler and execution engine
- Node system and registry
- REST API endpoints
- Basic node library
- Canvas-based flow editor
- Real-time collaboration
- Flow templates and sharing
- LLM integration nodes
- Advanced monitoring and analytics
- Plugin marketplace
- Enterprise features
| Feature | Flower | Langflow |
|---|---|---|
| Architecture | Porto (modular) | Monolithic |
| Performance | Async/parallel | Synchronous |
| Type Safety | Full Pydantic | Limited |
| Testing | Built-in framework | Manual |
| Extensibility | Plugin system | Hardcoded |
| Code Quality | Clean separation | Tightly coupled |
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Langflow's vision of visual AI workflows
- Built with modern Python ecosystem tools
- Community-driven development approach
- π Documentation: docs.flower.dev
- π¬ Discord: Join our community
- π Issues: GitHub Issues
- π§ Email: support@flower.dev
β Star this repo if you find it useful!
Made with β€οΈ by the Flower community