Skip to main content
DeerFlow uses a dual-configuration approach with YAML for core settings and JSON for extensions. The configuration system supports environment variable resolution, flexible file locations, and hot reloading.

Configuration Files

DeerFlow uses two main configuration files:

config.yaml

Core application settings including models, tools, sandbox, and system behavior

extensions_config.json

Extensions configuration for MCP servers and skills enable/disable states

File Locations

Main Configuration (config.yaml)

DeerFlow resolves config.yaml in the following priority order:
1

Explicit Path Parameter

If you pass a config_path argument when loading configuration programmatically
2

DEER_FLOW_CONFIG_PATH Environment Variable

Set this variable to specify a custom config location:
3

Current Working Directory

Checks for config.yaml in the directory where DeerFlow is run
4

Parent Directory Fallback

If not found in CWD, checks the parent directory
If no config.yaml file is found, DeerFlow will raise a FileNotFoundError

Extensions Configuration (extensions_config.json)

Extensions configuration follows a similar priority order:
1

DEER_FLOW_EXTENSIONS_CONFIG_PATH Environment Variable

2

Current Working Directory

Checks for extensions_config.json in CWD
3

Parent Directory

Falls back to parent directory if not found
4

Backward Compatibility

Also checks for legacy mcp_config.json filename
Extensions configuration is optional. If no file is found, DeerFlow continues with an empty extensions config

Data Directory (DEER_FLOW_HOME)

DeerFlow stores persistent data (memory, threads, agent configurations) in a base directory resolved in this order:
1

DEER_FLOW_HOME Environment Variable

2

Local Development Detection

If running from the backend/ directory, uses .deer-flow/ in that directory
3

Default User Home

Falls back to ~/.deer-flow/

Directory Structure

The data directory (DEER_FLOW_HOME) has the following structure:

Environment Variable Resolution

Both configuration files support environment variable resolution using the $VAR_NAME syntax:
config.yaml
extensions_config.json
If a referenced environment variable is not set, DeerFlow will raise a ValueError during configuration loading

Configuration Loading

Configuration is loaded once at startup and cached as a singleton:

Hot Reloading

You can reload configuration without restarting the application:
Hot reloading is useful during development or when updating API keys without downtime

Configuration Validation

DeerFlow uses Pydantic for configuration validation. Invalid configurations will raise detailed validation errors at startup:

Getting Started

1

Copy Example Configuration

2

Set Environment Variables

Create a .env file or export variables:
3

Customize Configuration

Edit config.yaml to configure models, tools, and sandbox settings
4

Enable Extensions

Edit extensions_config.json to enable/disable MCP servers and skills

Next Steps

Models Configuration

Configure LLM models and providers

Sandbox Modes

Set up local, Docker, or Kubernetes sandboxes

Skills & MCP

Configure skills and MCP servers

Memory Configuration

Set up the memory system