| --- |
| title: DeerFlow GPT-5.1 |
| emoji: "π¦" |
| colorFrom: green |
| colorTo: blue |
| sdk: docker |
| app_port: 7860 |
| pinned: false |
| --- |
| |
| # π¦ DeerFlow - 2.0 |
|
|
| <a href="https://trendshift.io/repositories/14699" target="_blank"><img src="https://trendshift.io/api/badge/repositories/14699" alt="bytedance%2Fdeer-flow | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> |
| > On February 28th, 2026, DeerFlow claimed the π #1 spot on GitHub Trending following the launch of version 2. Thanks a million to our incredible community β you made this happen! πͺπ₯ |
|
|
| DeerFlow (**D**eep **E**xploration and **E**fficient **R**esearch **Flow**) is an open-source **super agent harness** that orchestrates **sub-agents**, **memory**, and **sandboxes** to do almost anything β powered by **extensible skills**. |
|
|
| https://github.com/user-attachments/assets/a8bcadc4-e040-4cf2-8fda-dd768b999c18 |
|
|
| > [!NOTE] |
| > **DeerFlow 2.0 is a ground-up rewrite.** It shares no code with v1. If you're looking for the original Deep Research framework, it's maintained on the [`1.x` branch](https://github.com/bytedance/deer-flow/tree/main-1.x) β contributions there are still welcome. Active development has moved to 2.0. |
|
|
| ## Official Website |
|
|
| Learn more and see **real demos** on our official website. |
|
|
| **[deerflow.tech](https://deerflow.tech/)** |
|
|
| --- |
|
|
| ## Table of Contents |
|
|
| - [π¦ DeerFlow - 2.0](#-deerflow---20) |
| - [Offiical Website](#offiical-website) |
| - [Table of Contents](#table-of-contents) |
| - [Quick Start](#quick-start) |
| - [Configuration](#configuration) |
| - [Running the Application](#running-the-application) |
| - [Option 1: Docker (Recommended)](#option-1-docker-recommended) |
| - [Option 2: Local Development](#option-2-local-development) |
| - [Advanced](#advanced) |
| - [Sandbox Mode](#sandbox-mode) |
| - [MCP Server](#mcp-server) |
| - [From Deep Research to Super Agent Harness](#from-deep-research-to-super-agent-harness) |
| - [Core Features](#core-features) |
| - [Skills \& Tools](#skills--tools) |
| - [Sub-Agents](#sub-agents) |
| - [Sandbox \& File System](#sandbox--file-system) |
| - [Context Engineering](#context-engineering) |
| - [Long-Term Memory](#long-term-memory) |
| - [Recommended Models](#recommended-models) |
| - [Documentation](#documentation) |
| - [Contributing](#contributing) |
| - [License](#license) |
| - [Acknowledgments](#acknowledgments) |
| - [Key Contributors](#key-contributors) |
| - [Star History](#star-history) |
|
|
| ## Quick Start |
|
|
| ### Configuration |
|
|
| 1. **Clone the DeerFlow repository** |
|
|
| ```bash |
| git clone https://github.com/bytedance/deer-flow.git |
| cd deer-flow |
| ``` |
|
|
| 2. **Generate local configuration files** |
|
|
| From the project root directory (`deer-flow/`), run: |
|
|
| ```bash |
| make config |
| ``` |
|
|
| This command creates local configuration files based on the provided example templates. |
|
|
| 3. **Configure your preferred model(s)** |
|
|
| Edit `config.yaml` and define at least one model: |
|
|
| ```yaml |
| models: |
| - name: gpt-4 # Internal identifier |
| display_name: GPT-4 # Human-readable name |
| use: langchain_openai:ChatOpenAI # LangChain class path |
| model: gpt-4 # Model identifier for API |
| api_key: $OPENAI_API_KEY # API key (recommended: use env var) |
| max_tokens: 4096 # Maximum tokens per request |
| temperature: 0.7 # Sampling temperature |
| ``` |
|
|
| |
| 4. **Set API keys for your configured model(s)** |
|
|
| Choose one of the following methods: |
|
|
| - Option A: Edit the `.env` file in the project root (Recommended) |
|
|
|
|
| ```bash |
| # Optional but recommended: improves web_search quality |
| TAVILY_API_KEY=your-tavily-api-key |
| OPENAI_API_KEY=your-openai-api-key |
| # Add other provider keys as needed |
| ``` |
|
|
| - Option B: Export environment variables in your shell |
|
|
| ```bash |
| export OPENAI_API_KEY=your-openai-api-key |
| ``` |
|
|
| - Option C: Edit `config.yaml` directly (Not recommended for production) |
|
|
| ```yaml |
| models: |
| - name: gpt-4 |
| api_key: your-actual-api-key-here # Replace placeholder |
| ``` |
|
|
| ### Running the Application |
|
|
| #### Option 1: Docker (Recommended) |
|
|
| The fastest way to get started with a consistent environment: |
|
|
| 1. **Initialize and start**: |
| ```bash |
| make docker-init # Pull sandbox image (Only once or when image updates) |
| make docker-start # Start services (auto-detects sandbox mode from config.yaml) |
| ``` |
|
|
| `make docker-start` now starts `provisioner` only when `config.yaml` uses provisioner mode (`sandbox.use: src.community.aio_sandbox:AioSandboxProvider` with `provisioner_url`). |
|
|
| 2. **Access**: http://localhost:2026 |
|
|
| See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed Docker development guide. |
|
|
| #### Option 2: Local Development |
|
|
| If you prefer running services locally: |
|
|
| 1. **Check prerequisites**: |
| ```bash |
| make check # Verifies Node.js 22+, pnpm, uv, nginx |
| ``` |
|
|
| 2. **(Optional) Pre-pull sandbox image**: |
| ```bash |
| # Recommended if using Docker/Container-based sandbox |
| make setup-sandbox |
| ``` |
|
|
| 3. **Start services**: |
| ```bash |
| make dev |
| ``` |
|
|
| 4. **Access**: http://localhost:2026 |
|
|
| ### Advanced |
| #### Sandbox Mode |
|
|
| DeerFlow supports multiple sandbox execution modes: |
| - **Local Execution** (runs sandbox code directly on the host machine) |
| - **Docker Execution** (runs sandbox code in isolated Docker containers) |
| - **Docker Execution with Kubernetes** (runs sandbox code in Kubernetes pods via provisioner service) |
|
|
| For Docker development, service startup follows `config.yaml` sandbox mode. In Local/Docker modes, `provisioner` is not started. |
|
|
| See the [Sandbox Configuration Guide](backend/docs/CONFIGURATION.md#sandbox) to configure your preferred mode. |
|
|
| #### MCP Server |
|
|
| DeerFlow supports configurable MCP servers and skills to extend its capabilities. |
| For HTTP/SSE MCP servers, OAuth token flows are supported (`client_credentials`, `refresh_token`). |
| See the [MCP Server Guide](backend/docs/MCP_SERVER.md) for detailed instructions. |
| For dynamic websites, DeerFlow also supports the `agent_browser` tool (based on `vercel-labs/agent-browser` CLI). |
|
|
| #### Agent Browser (vercel-labs/agent-browser) |
|
|
| - Tool name: `agent_browser` |
| - Default behavior: use installed `agent-browser`; fallback to `npx -y agent-browser@latest` |
| - Recommended one-time setup: |
| ```bash |
| npm i -g agent-browser |
| agent-browser install |
| # Linux servers may need: |
| # agent-browser install --with-deps |
| ``` |
|
|
| #### Persistent Storage (Space / External DB) |
|
|
| By default, local `langgraph dev` state is in-memory and will be lost after restart. |
|
|
| This Space startup now supports persistent state with: |
| - `DEER_FLOW_HOME` (defaults to `/data/deer-flow`): stores thread files, artifacts, and memory |
| - `DEER_FLOW_EXTENSIONS_CONFIG_PATH`: stores MCP/skills enable-state JSON |
| - LangGraph checkpointer: |
| - `LANGGRAPH_CHECKPOINT_POSTGRES_URI` (recommended external DB, PostgreSQL) |
| - fallback: `LANGGRAPH_CHECKPOINT_SQLITE_PATH` (SQLite file, defaults to `${DEER_FLOW_HOME}/checkpoints.sqlite`) |
|
|
| If you enable HF persistent storage, `/data` survives restarts, so memory/skills/thread artifacts and SQLite checkpoints persist. |
|
|
| ## From Deep Research to Super Agent Harness |
|
|
| DeerFlow started as a Deep Research framework β and the community ran with it. Since launch, developers have pushed it far beyond research: building data pipelines, generating slide decks, spinning up dashboards, automating content workflows. Things we never anticipated. |
|
|
| That told us something important: DeerFlow wasn't just a research tool. It was a **harness** β a runtime that gives agents the infrastructure to actually get work done. |
|
|
| So we rebuilt it from scratch. |
|
|
| DeerFlow 2.0 is no longer a framework you wire together. It's a super agent harness β batteries included, fully extensible. Built on LangGraph and LangChain, it ships with everything an agent needs out of the box: a filesystem, memory, skills, sandboxed execution, and the ability to plan and spawn sub-agents for complex, multi-step tasks. |
|
|
| Use it as-is. Or tear it apart and make it yours. |
|
|
| ## Core Features |
|
|
| ### Skills & Tools |
|
|
| Skills are what make DeerFlow do *almost anything*. |
|
|
| A standard Agent Skill is a structured capability module β a Markdown file that defines a workflow, best practices, and references to supporting resources. DeerFlow ships with built-in skills for research, report generation, slide creation, web pages, image and video generation, and more. But the real power is extensibility: add your own skills, replace the built-in ones, or combine them into compound workflows. |
|
|
| Skills are loaded progressively β only when the task needs them, not all at once. This keeps the context window lean and makes DeerFlow work well even with token-sensitive models. |
|
|
| Tools follow the same philosophy. DeerFlow comes with a core toolset β web search, web fetch, file operations, bash execution β and supports custom tools via MCP servers and Python functions. Swap anything. Add anything. |
|
|
| ``` |
| # Paths inside the sandbox container |
| /mnt/skills/public |
| βββ research/SKILL.md |
| βββ report-generation/SKILL.md |
| βββ slide-creation/SKILL.md |
| βββ web-page/SKILL.md |
| βββ image-generation/SKILL.md |
| |
| /mnt/skills/custom |
| βββ your-custom-skill/SKILL.md β yours |
| ``` |
|
|
| ### Sub-Agents |
|
|
| Complex tasks rarely fit in a single pass. DeerFlow decomposes them. |
|
|
| The lead agent can spawn sub-agents on the fly β each with its own scoped context, tools, and termination conditions. Sub-agents run in parallel when possible, report back structured results, and the lead agent synthesizes everything into a coherent output. |
|
|
| This is how DeerFlow handles tasks that take minutes to hours: a research task might fan out into a dozen sub-agents, each exploring a different angle, then converge into a single report β or a website β or a slide deck with generated visuals. One harness, many hands. |
|
|
| ### Sandbox & File System |
|
|
| DeerFlow doesn't just *talk* about doing things. It has its own computer. |
|
|
| Each task runs inside an isolated Docker container with a full filesystem β skills, workspace, uploads, outputs. The agent reads, writes, and edits files. It executes bash commands and codes. It views images. All sandboxed, all auditable, zero contamination between sessions. |
|
|
| This is the difference between a chatbot with tool access and an agent with an actual execution environment. |
|
|
| ``` |
| # Paths inside the sandbox container |
| /mnt/user-data/ |
| βββ uploads/ β your files |
| βββ workspace/ β agents' working directory |
| βββ outputs/ β final deliverables |
| ``` |
|
|
| ### Context Engineering |
|
|
| **Isolated Sub-Agent Context**: Each sub-agent runs in its own isolated context. This means that the sub-agent will not be able to see the context of the main agent or other sub-agents. This is important to ensure that the sub-agent is able to focus on the task at hand and not be distracted by the context of the main agent or other sub-agents. |
|
|
| **Summarization**: Within a session, DeerFlow manages context aggressively β summarizing completed sub-tasks, offloading intermediate results to the filesystem, compressing what's no longer immediately relevant. This lets it stay sharp across long, multi-step tasks without blowing the context window. |
|
|
| ### Long-Term Memory |
|
|
| Most agents forget everything the moment a conversation ends. DeerFlow remembers. |
|
|
| Across sessions, DeerFlow builds a persistent memory of your profile, preferences, and accumulated knowledge. The more you use it, the better it knows you β your writing style, your technical stack, your recurring workflows. Memory is stored locally and stays under your control. |
|
|
| ## Recommended Models |
|
|
| DeerFlow is model-agnostic β it works with any LLM that implements the OpenAI-compatible API. That said, it performs best with models that support: |
|
|
| - **Long context windows** (100k+ tokens) for deep research and multi-step tasks |
| - **Reasoning capabilities** for adaptive planning and complex decomposition |
| - **Multimodal inputs** for image understanding and video comprehension |
| - **Strong tool-use** for reliable function calling and structured outputs |
|
|
| ## Embedded Python Client |
|
|
| DeerFlow can be used as an embedded Python library without running the full HTTP services. The `DeerFlowClient` provides direct in-process access to all agent and Gateway capabilities, returning the same response schemas as the HTTP Gateway API: |
|
|
| ```python |
| from src.client import DeerFlowClient |
| |
| client = DeerFlowClient() |
| |
| # Chat |
| response = client.chat("Analyze this paper for me", thread_id="my-thread") |
| |
| # Streaming (LangGraph SSE protocol: values, messages-tuple, end) |
| for event in client.stream("hello"): |
| if event.type == "messages-tuple" and event.data.get("type") == "ai": |
| print(event.data["content"]) |
| |
| # Configuration & management β returns Gateway-aligned dicts |
| models = client.list_models() # {"models": [...]} |
| skills = client.list_skills() # {"skills": [...]} |
| client.update_skill("web-search", enabled=True) |
| client.upload_files("thread-1", ["./report.pdf"]) # {"success": True, "files": [...]} |
| ``` |
|
|
| All dict-returning methods are validated against Gateway Pydantic response models in CI (`TestGatewayConformance`), ensuring the embedded client stays in sync with the HTTP API schemas. See `backend/src/client.py` for full API documentation. |
|
|
| ## Documentation |
|
|
| - [Contributing Guide](CONTRIBUTING.md) - Development environment setup and workflow |
| - [Configuration Guide](backend/docs/CONFIGURATION.md) - Setup and configuration instructions |
| - [Architecture Overview](backend/CLAUDE.md) - Technical architecture details |
| - [Backend Architecture](backend/README.md) - Backend architecture and API reference |
|
|
| ## Contributing |
|
|
| We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, workflow, and guidelines. |
|
|
| Regression coverage includes Docker sandbox mode detection and provisioner kubeconfig-path handling tests in `backend/tests/`. |
|
|
| ## License |
|
|
| This project is open source and available under the [MIT License](./LICENSE). |
|
|
| ## Acknowledgments |
|
|
| DeerFlow is built upon the incredible work of the open-source community. We are deeply grateful to all the projects and contributors whose efforts have made DeerFlow possible. Truly, we stand on the shoulders of giants. |
|
|
| We would like to extend our sincere appreciation to the following projects for their invaluable contributions: |
|
|
| - **[LangChain](https://github.com/langchain-ai/langchain)**: Their exceptional framework powers our LLM interactions and chains, enabling seamless integration and functionality. |
| - **[LangGraph](https://github.com/langchain-ai/langgraph)**: Their innovative approach to multi-agent orchestration has been instrumental in enabling DeerFlow's sophisticated workflows. |
|
|
| These projects exemplify the transformative power of open-source collaboration, and we are proud to build upon their foundations. |
|
|
| ### Key Contributors |
|
|
| A heartfelt thank you goes out to the core authors of `DeerFlow`, whose vision, passion, and dedication have brought this project to life: |
|
|
| - **[Daniel Walnut](https://github.com/hetaoBackend/)** |
| - **[Henry Li](https://github.com/magiccube/)** |
|
|
| Your unwavering commitment and expertise have been the driving force behind DeerFlow's success. We are honored to have you at the helm of this journey. |
|
|
| ## Star History |
|
|
| [](https://star-history.com/#bytedance/deer-flow&Date) |
|
|