{"id":17487503,"url":"https://github.com/onelevenvy/flock","last_synced_at":"2025-10-23T02:46:22.297Z","repository":{"id":255610712,"uuid":"851957432","full_name":"Onelevenvy/flock","owner":"Onelevenvy","description":"Flock is a low-code platform for rapidly building chatbots, RAG applications, and coordinating multi-agent teams, primarily using LangChain, LangGraph, NextJS, and FastAPI.（Flock 是一个低代码平台，旨在快速构建聊天机器人、RAG 、Muti-Agent应用程序，主要使用 LangChain、LangGraph、NextJS 和 FastAPI。）","archived":false,"fork":false,"pushed_at":"2024-10-30T00:20:49.000Z","size":4343,"stargazers_count":39,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-30T02:49:57.229Z","etag":null,"topics":["agent","chakra-ui","crewai","fastapi","langchain","langgraph","langgraph-gui","llm","muti-agent","nextjs","ollama","openai","openapi","rag","react","react-flow","workflow"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Onelevenvy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-04T01:21:01.000Z","updated_at":"2024-10-30T00:20:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"553e6018-4462-461e-b18d-5b216cced5a2","html_url":"https://github.com/Onelevenvy/flock","commit_stats":{"total_commits":122,"total_committers":3,"mean_commits":"40.666666666666664","dds":"0.20491803278688525","last_synced_commit":"8a6adeafb4309e4c810dbefb696ded0ad84f8ba5"},"previous_names":["onelevenvy/nextagifuture"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Onelevenvy%2Fflock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Onelevenvy%2Fflock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Onelevenvy%2Fflock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Onelevenvy%2Fflock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Onelevenvy","download_url":"https://codeload.github.com/Onelevenvy/flock/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248989636,"owners_count":21194625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","chakra-ui","crewai","fastapi","langchain","langgraph","langgraph-gui","llm","muti-agent","nextjs","ollama","openai","openapi","rag","react","react-flow","workflow"],"created_at":"2024-10-19T03:04:51.090Z","updated_at":"2025-10-23T02:46:22.292Z","avatar_url":"https://github.com/Onelevenvy.png","language":"TypeScript","funding_links":[],"categories":["Chatbots"],"sub_categories":[],"readme":"[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/onelevenvy-flock-badge.png)](https://mseep.ai/app/onelevenvy-flock)\n\n## 📃 Flock (Flexible Low-code Orchestrating Collaborative-agent Kits)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./docs/README_cn.md\"\u003e简体中文\u003c/a\u003e |\n  \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e |\n  \u003ca href=\"#how-to-get-started\"\u003eGetting Started\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e [!NOTE]\n\u003e\n\u003e ### 🎉 What's New 2025/8/2\n\u003e\n\u003e - **New MCP Tolls**: Added support for Streamble HTTP MCP Tools\n\u003e \u003cimg src=\"assets/mcp_tool.png\" alt=\"mcp\" width=\"500\" /\u003e\n\u003e ### 🎉 What's New 2025/5/9\n\u003e\n\u003e - **Agent Node Support**: Added dedicated Agent Node for seamless agent integration in workflows! Key features:\n\u003e   - 🧠 Create autonomous agents that can reason, plan, and execute tasks\n\u003e   - 🔄 Support for multiple agent types and architectures\n\u003e   - 🛠️ Easy configuration of agent tools, and behaviors\n\u003e   - 🔗 Seamless integration with other workflow nodes\n\u003e\n\u003e ### 🎉 What's New 2025/3/10\n\u003e\n\u003e - **MCP Tools Support**: Added MCP Node with support for Model Context Protocol (MCP) tools, enabling seamless integration with MCP servers! Key features:\n\u003e   - 🛠️ Convert MCP tools into LangChain tools for use with LangGraph agents\n\u003e   - 📦 Connect to multiple MCP servers and dynamically load tools from them\n\u003e   - 🔄 Support both stdio and SSE transport modes for flexible communication\n\u003e   - 🔗 Seamless integration with existing LangChain workflows\n\u003e   \u003cimg src=\"assets/mcp.png\" alt=\"mcp\" width=\"500\" /\u003e\n\u003e\n\u003e ### 🎉 What's New 2025/2/25\n\u003e\n\u003e - **Parameter Extractor Node**: Added parameter extraction node that can automatically extract structured information from text and output in JSON format!\n\u003e\n\u003e ### 🎉 What's New 2025/1/21\n\u003e\n\u003e - **Subgraph Node Support**: Added subgraph node that allows you to encapsulate and reuse complete sub-workflows!\n\u003e\n\u003e   - 📦 Modular: Encapsulate complex workflows as standalone subgraph nodes\n\u003e   - 🔄 Reusable: Reuse the same subgraph node across different workflows\n\u003e   - 🎯 Maintainable: Update and maintain sub-workflow logic independently\n\u003e\n\u003e ### 🎉 What's New 2025/1/8\n\u003e\n\u003e - **Human Node**: Added a new human-in-the-loop node supporting key scenarios:\n\u003e   - 🛠️ Tool Call Review: Human review, edit, or approve tool calls requested by the LLM\n\u003e   - ✅ LLM Output Validation: Human review, edit, or approve content generated by the LLM\n\u003e   - 💡 Context Provision: Enable LLM to request human input for clarification or additional details\n\u003e\n\u003e ### 🎉 What's New 2024/12/23\n\u003e\n\u003e - **Multimodal Chat Support**: Added support for multimodal chat (currently only supports image modality, with more modalities coming soon)!  \n\u003e   \u003cimg src=\"assets/gemini.png\" alt=\"multimodal\" width=\"500\" /\u003e\n\n\u003e ### 🎉 What's New 2024/12/18\n\u003e\n\u003e - **If-Else Node**: Added If-Else node to support conditional logic in workflows! The node supports various condition types including Contains, Not contains, Start with, End with, Is, Is not, Is empty, and Is not empty. Multiple conditions can be combined using AND/OR operators for complex conditional logic, allowing you to create sophisticated branching workflows based on your data.\n\n\u003e ### 🎉 What's New 2024/12/7\n\u003e\n\u003e - **Code Execution Node**: Added Python code execution capabilities to workflows! This node allows you to write and execute Python scripts directly within your workflow, supporting variable references and dynamic data transformations. Perfect for arithmetic operations, data processing, text manipulation, and custom logic that goes beyond preset node functionalities.\n\n\u003e ### 🎉 What's New 2024/11/12\n\u003e\n\u003e - **Intent Recognition Node**: New Intent Recognition node that can automatically identify user input intent based on preset categories, supporting multi-classification routing!\n\u003e   \u003cimg src=\"assets/intent.png\" alt=\"intent recognition\" width=\"500\" /\u003e\n\u003e\n\u003e - **CrewAI Node Support**: Now you can leverage CrewAI's powerful multi-agent capabilities in your workflows! Create sophisticated agent teams and orchestrate complex collaborative tasks with ease.\n\u003e   \u003cimg src=\"assets/crewai.jpg\" alt=\"crewai\" width=\"500\"  /\u003e\n\n### Flock is a workflow-based low-code platform for rapidly building chatbots, RAG applications, and coordinating multi-agent teams. Built on LangChain and LangGraph, it provides a flexible, low-code orchestrating solution for collaborative agents, supporting chatbots, RAG applications, agents, and multi-agent systems, with the capability for offline operation.\n\n\u003cvideo src=\"https://private-user-images.githubusercontent.com/49232224/386539219-5dc96133-72f3-4cc3-9f50-096c38bde715.mp4?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzE2NjMzNDQsIm5iZiI6MTczMTY2MzA0NCwicGF0aCI6Ii80OTIzMjIyNC8zODY1MzkyMTktNWRjOTYxMzMtNzJmMy00Y2MzLTlmNTAtMDk2YzM4YmRlNzE1Lm1wND9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDExMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMTE1VDA5MzA0NFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVhOWY1NTc1Mjk5YWU1MjZmNmQyNmY3Mzk0YjY2MGYyMzlmZWQ2MTVkMjExODEwNmY3YmMxYTVmNGRhNzMxZWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.69R3pTktxrl8C6tdduABLiRhkhwdfeVO3vlGGTGK4to\" data-canonical-src=\"https://private-user-images.githubusercontent.com/49232224/386539219-5dc96133-72f3-4cc3-9f50-096c38bde715.mp4?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzE2NjMzNDQsIm5iZiI6MTczMTY2MzA0NCwicGF0aCI6Ii80OTIzMjIyNC8zODY1MzkyMTktNWRjOTYxMzMtNzJmMy00Y2MzLTlmNTAtMDk2YzM4YmRlNzE1Lm1wND9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDExMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMTE1VDA5MzA0NFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVhOWY1NTc1Mjk5YWU1MjZmNmQyNmY3Mzk0YjY2MGYyMzlmZWQ2MTVkMjExODEwNmY3YmMxYTVmNGRhNzMxZWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.69R3pTktxrl8C6tdduABLiRhkhwdfeVO3vlGGTGK4to\" controls=\"controls\" muted=\"muted\" class=\"d-block rounded-bottom-2 border-top width-fit\" style=\"max-height:640px; min-height: 200px\"\u003e\n \u003c/video\u003e\n\n### 🤖️ Overview\n\n \u003cimg src=\"assets/Overview.png\" alt=\"overview\"  /\u003e\n\n### Work Flow\n\n \u003cimg src=\"assets/workflow.png\" alt=\"overview\"  /\u003e\n\n### Node Types and Functions\n\nFlock's workflow system consists of various node types, each serving a specific purpose:\n\n1. Input Node: Processes initial input and converts it into a format the workflow can handle.\n2. LLM Node: Utilizes large language models for text generation and processing.\n3. Retrieval Node: Fetches relevant information from knowledge bases.\n4. Tool Node: Executes specific tasks or operations, extending workflow functionality.\n5. Retrieval Tool Node: Combines retrieval capabilities with tool functionality.\n6. Intent Recognition Node: Automatically identifies user input intent based on preset categories and routes to different processing flows.\n7. Answer Node: Generates final answers or outputs, integrating results from previous nodes.\n8. Subgraph Node: Encapsulates a complete sub-workflow, allowing for modular design.\n9. Start and End Nodes: Mark the beginning and end of the workflow.\n\nFuture planned nodes include:\n\n- File Upload Node\n- Parameter Extraction Node\n\nThese nodes can be combined to create powerful and flexible workflows suitable for various complex business needs and application scenarios.\n\n### Image Tools use\n\n![image](https://github.com/user-attachments/assets/4097b087-0309-4aab-8be9-a06fdc9d4964)\n\n### Knowledge Retrieval\n\n![image](https://github.com/user-attachments/assets/836fac80-ab49-4f6b-973c-25ba173149eb)\n\n### Human in the loop (human approval or let the LLM rethink or ask human for help)\n\n\u003cp\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/ec53f7de-10cb-4001-897a-2695da9cf6bf\" alt=\"image\" style=\"width: 49%; display: inline-block;\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/1c7d383d-e6bf-42b8-94ec-9f0c37be19b8\" alt=\"image\" style=\"width: 49%; display: inline-block;\"\u003e\n\u003c/p\u003e\n\nInspired by the [StreetLamb](https://github.com/StreetLamb) project and its [tribe](https://github.com/StreetLamb/tribe) project , Flock adopts much of the approach and code.\nBuilding on this foundation, it introduces some new features and directions of its own.\n\nSome of the layout in this project references [Lobe-chat](https://github.com/lobehub/lobe-chat), [Dify](https://github.com/langgenius/dify), and [fastgpt](https://github.com/labring/FastGPT).\nThey are all excellent open-source projects, thanks🙇‍.\n\n### 👨‍💻 Development\n\nProject tech stack: LangChain + LangGraph + React + Next.js + Chakra UI + PostgreSQL\n\n### 💡RoadMap\n\n1 APP\n\n- [x] ChatBot\n- [x] SimpleRAG\n- [x] Hierarchical Agent\n- [x] Sequential Agent\n- [x] Work-Flow\n- [x] Intent Recognition Node - Automatically identify user input intent and route to different processing flows\n- [x] CrewAI Integration\n- [ ] More muti-agent ---On Progress\n\n2 Model\n\n- [x] OpenAI\n- [x] ZhipuAI\n- [x] Siliconflow\n- [x] Ollama\n- [x] Qwen\n- [x] Xinference\n- [x] 302.AI\n\n3 Ohters\n\n- [x] Tools Calling\n- [x] I18n\n- [ ] Langchain Templates\n\n### 🏘️Highlights\n\n- Persistent conversations: Save and maintain chat histories, allowing you to continue conversations.\n- Observability: Monitor and track your agents' performance and outputs in real-time using LangSmith to ensure they operate efficiently.\n- Tool Calling: Enable your agents to utilize external tools and APIs.\n- Retrieval Augmented Generation: Enable your agents to reason with your internal knowledge base.\n- Human-In-The-Loop: Enable human approval before tool calling.\n- Open Source Models: Use open-source LLM models such as llama, Qwen and Glm.\n- Multi-Tenancy: Manage and support multiple users and teams.\n\n### How to get started\n\n#### 1. Deploy with Docker Compose\n\n##### 1.1 Method 1: Pull Frontend and Backend Images from Docker Hub\n\n```bash\n# Clone the repository\ngit clone https://github.com/Onelevenvy/flock.git\n\n# Navigate to the docker directory\ncd flock/docker\n\n# Copy the environment configuration file\ncp ../.env.example .env\n\n# Start docker compose\ndocker compose up -d\n\n#  Access Frontend\n# Local environment\nhttp://localhost:4433\n\n# Server environment\nhttp://your_server_ip:4433\n```\n\n#### 1.2 Method 2: Locally Build Frontend and Backend Images\n\n```bash\n# Clone the repository\ngit clone https://github.com/Onelevenvy/flock.git\n\n# Navigate to the docker directory\ncd flock/docker\n\n# Copy the environment configuration file\ncp ../.env.example .env\n\n# First, build the frontend and backend images\ndocker compose -f docker-compose.localbuild.yml build\n# Then start docker compose\ndocker compose -f docker-compose.localbuild.yml up -d\n```\n\n#### 2. Start with Local Source Code\n\n##### 2.1 Preparation\n\n##### 2.1.1 Clone the Code\n\ngit clone https://github.com/Onelevenvy/flock.git\n\n##### 2.1.2 Copy Environment Configuration File\n\n```bash\ncp .env.example .env\n# Modify environment variables in .env file as needed\n```\n\n##### 2.1.3 Generate Secret Keys\n\nSome environment variables in the .env file have default values set to 'changethis'.\nYou must change these to secret keys. To generate a secret key, you can run the following command:\n\n```bash\npython -c \"import secrets; print(secrets.token_urlsafe(32))\"\n```\n\nCopy the output and use it as your password/key. Run the command again to generate another secure key.\n\n##### 2.1.4 Install postgres, qdrant, redis\n\n```bash\ncd docker\ndocker compose --env-file ../.env up -d\n```\n\n#### 2.2 Run Backend\n\n##### 2.2.1 Install Basic Environment\n\nServer startup requires Python 3.12.x. It's recommended to use pyenv for quick Python environment installation.\n\nTo install additional Python versions, use pyenv install:\n\n```bash\npyenv install 3.12\n```\n\nTo switch to the \"3.12\" Python environment, use the following command:\n\n```bash\npyenv global 3.12\n```\n\nFollow these steps:\nNavigate to the \"backend\" directory:\n\n```bash\ncd backend\n```\n\nActivate the environment:\n\n```bash\nuv sync --python 3.12  \n```\n\n##### 2.2.2 Initialize Data\n\n```bash\n# Migrate database\nalembic upgrade head\n```\n\n##### 2.2.3 Run unicorn\n\n```bash\nuvicorn app.main:app --reload --log-level debug\n```\n\n##### 2.2.4 Run celery (not required unless you want to use rag functionality)\n\n```bash\npoetry run celery -A app.core.celery_app.celery_app worker --loglevel=debug\n```\n\n#### 2.3 Run Frontend\n\n##### 2.3.1 Enter web directory and install dependencies\n\n```bash\ncd web\npnpm install\n```\n\n##### 2.3.2 Start web service\n\n```bash\ncd web\npnpm dev\n\n# or pnpm build then pnpm start\n```\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=Onelevenvy/flock\u0026type=Date)](https://star-history.com/#Onelevenvy/flock\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonelevenvy%2Fflock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonelevenvy%2Fflock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonelevenvy%2Fflock/lists"}