DeerFlow bridges the gap between large language models and functional tools, including web search, web crawling, and Python execution. Built on a modular multi-agent architecture using LangGraph, the system automates complex research and code analysis through a streamlined, high-performance workflow.
DeerFlow provides broad model support via litellm, making it compatible with various providers and open-source models like Qwen. It features an OpenAI-compatible API and employs a tiered LLM system to match task complexity with the appropriate model.
Tools and MCP integration
Human-in-the-loop
tiptap, offering an experience similar to Notion. Users can use AI to polish, shorten, or expand specific sections of the report.Content creation
Beyond reports, DeerFlow can generate podcast scripts and synthesize audio. It also supports the creation of customized PowerPoint decks derived from templates.
DeerFlow is built with a Python backend and a Node.js web frontend. The following tools are recommended to streamline the installation process:
uv: Manages Python environments and dependencies automatically, eliminating manual setup.nvm: Manages multiple Node.js versions.pnpm: Handles Node dependency installation and management.System requirements:
Installation steps:
Clone the repository:
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
Install dependencies:
uv sync
Configure the .env file. Add your API keys for Tavily, Brave Search, and other services. Volcengine TTS credentials should be added here if needed:
cp .env.example .env
Configure conf.yaml for LLM models and API keys:
cp conf.yaml.example conf.yaml
Install marp for PowerPoint generation:
brew install marp-cli
(Optional) Install web UI dependencies:
cd deer-flow/web
pnpm install
Refer to the Configuration Guide for comprehensive details. Ensure all settings are updated before launching the application.
The fastest way to initiate DeerFlow is through the console interface:
uv run main.py
For a more robust experience, use the web UI. Ensure the web dependencies are installed first.
On macOS/Linux, start both the backend and frontend in development mode:
./bootstrap.sh -d
On Windows:
bootstrap.bat -d
Navigate to http://localhost:3000 to access the web interface.
Configure the SEARCH_API variable in your .env file. Available options include:
TAVILY_API_KEY after signing up at app.tavily.com/home.BRAVE_SEARCH_API_KEY at brave.com/search/api/.Example .env configuration:
# Options: tavily, duckduckgo, brave_search, arxiv
SEARCH_API=tavily
DeerFlow utilizes a modular multi-agent architecture with LangGraph providing the foundation for its state-based workflows. System components communicate through a structured messaging protocol.
The workflow components:
Coordinator: This is the entry point for the workflow lifecycle. It initiates research processes based on user input and hands tasks to the Planner. It serves as the primary interface between the user and the system.
Planner: This component decomposes high-level goals into structured execution plans. It evaluates whether sufficient context has been gathered or if further research is required. It manages the overall research flow and determines the optimal time to generate the final report.
Research Team: A collective of specialized agents. Researchers utilize web search, crawlers, and MCP services to collect data. The coding agent uses Python REPL tools for code analysis and execution. Each agent operates within LangGraph and has access to a specific suite of tools.
Report Generator: In the final stage, this component compiles findings from the Research Team. it processes and organizes the gathered information to output a comprehensive, structured report.
DeerFlow integrates Text-to-Speech (TTS) capabilities via the Volcengine API, allowing users to generate high-quality audio from research reports. Parameters such as speed, volume, and pitch are fully customizable.
To use the TTS feature, call the /api/tts endpoint:
curl --location 'http://localhost:8000/api/tts' \
--header 'Content-Type: application/json' \
--data '{ "text": "This is a test of the text-to-speech functionality.", "speed_ratio": 1.0, "volume_ratio": 1.0, "pitch_ratio": 1.0 }' \
--output speech.mp3
Dayflow Mac App Review: Turn Screen Time Into an AI Timeline
Tiny Qwen: A Clean PyTorch Implementation of Qwen3 and Qwen2.5-VL
HackGPT Enterprise Review: AI-Native Pentesting for Security Teams
Halo Docker Compose Deployment Guide – Requirements & Setup
NeuralAgent: An Open-Source AI Agent for Native Desktop Automation
ChatGPT-on-WeChat Setup Guide: Run GPT-4o, Claude & More on WeChat
Xiaozhi Client: MCP Server Aggregator for Cursor and XiaoZhi AI
Slidev: Markdown-Based Presentations for Developers
Anyi VPN Review: Free 365-Day Trial with No Data Caps or Ads
Deploying AI Manus: Docker Compose Setup & Development Guide
sherpa-onnx: Offline Speech Recognition, TTS, and VAD Without the Cloud
How to Add Missing Games to Shendeng VPN’s Library