Run the setup wizard
From the project root directory (deer-flow/), run:
make setup
This launches an interactive wizard that guides you through choosing an LLM provider, optional web search, and execution/safety preferences such as sandbox mode, bash access, and file-write tools. It generates a minimal config.yaml and writes your keys to .env. Takes about 2 minutes.
The wizard also lets you configure an optional web search provider, or skip it for now.
Jina, Browserless, and InfoQuest web fetches resolve relative links and image sources using the requested page URL (or a usable HTML base URL), so returned Markdown includes complete destinations. Link resolution preserves the surrounding HTML source, including malformed-page formatting.
Run make doctor at any time to verify your setup and get actionable fix hints.
If you are opening a GitHub issue about a local setup or runtime problem, run
make support-bundle. The command prints reporter next steps, writes a
*-issue-summary.md file to paste into the issue, a *-issue-draft.md file
for AI-assisted issue filing, and an optional evidence zip under
.deer-flow/support-bundles/. If an AI assistant files the issue, start from
the draft and replace every REQUIRED placeholder instead of inventing missing
facts. Attach the zip only if a maintainer asks for it, or if the summary
alone is not enough. Maintainers and AI triage tools can start with
triage.json; the bundle includes redacted diagnostics and file manifests
only, and does not include .env, raw conversation messages, or user file
contents.
Advanced / manual configuration: If you prefer to edit config.yaml directly, run make config instead to copy the full template. Optional dependency auto-detection accepts UTF-8 configuration files with or without a byte-order mark (BOM). See config.example.yaml for the complete reference including CLI-backed providers (Codex CLI, Claude Code OAuth), OpenRouter, Responses API, subagent runtime caps such as subagents.max_total_per_run, and more.
Optional per-model pricing must use one currency across all priced models.
DeerFlow disables Console cost estimates when currencies are mixed rather
than presenting an invalid aggregate.
Administrators can also open Settings โ Models to add, edit, test, and
enable/disable shared OpenAI-compatible Chat Completions models without editing
config.yaml. Enter a unique name, base URL, model ID, and optional API key;
saving refreshes the chat model list. Connection testing sends a short streaming
tool-call request and may incur provider charges. It does not save the draft or
verify image support; set image support and token limits from provider documentation.
Official DeepSeek models at https://api.deepseek.com or
https://api.deepseek.com/v1 (default HTTPS port) automatically use DeerFlow's
DeepSeek adapter, preserving reasoning content across tool calls and honoring
output token limits. Chat uses the selected thinking mode; the connection test
temporarily disables thinking because DeepSeek rejects forced tool selection
in thinking mode. The test checks streaming tool connectivity, not every agent
workflow or thinking-mode behavior. Existing saved DeepSeek profiles receive
this adapter without re-entering credentials. DeepSeek-specific settings for
third-party proxies, other native adapters, and advanced reasoning settings
remain YAML-configured.
DeepSeek regression tests run offline with the normal backend suite. To verify
the real provider explicitly, set DEEPSEEK_TEST_API_KEY in your environment
and run from backend/:
DEER_FLOW_RUN_LIVE_TESTS=1 uv run --no-sync pytest tests/test_managed_deepseek_live.py -q
These opt-in tests send short requests to DeepSeek and may incur charges;
they use temporary state, never save credentials to the deployment catalog,
and are skipped in CI. DEEPSEEK_TEST_MODEL optionally selects a different
DeepSeek model ID (default: deepseek-flash). The same tests can be run on
unfixed and fixed revisions; success is always the expected result.
YAML models remain read-only in this page and take precedence on name conflicts.
Managed models are appended after YAML models; edits apply to new configuration
snapshots, while active runs retain their existing snapshot. Disabling a model
removes it from future selection/resolution, so update any custom-agent or scheduled
task definitions that explicitly reference it before disabling it.
Managed models are shared by the deployment, not personal API-key profiles, and
remain subject to the existing model authorization policy.
The encrypted catalog and a generated local encryption key are stored in
$DEER_FLOW_HOME/managed-models/ (default .deer-flow/managed-models/). Persist
and back up the whole directory, restrict filesystem access, and share it
across Gateway workers/replicas that should use the same catalog. The local key
is protected by filesystem permissions; encryption does not protect against
someone who can read both files. Losing the key requires restoring the backup.