Where Does DDEV Store Global and Project Config?
DDEV keeps one global .ddev folder in your home directory plus a .ddev folder per project. Locations on all platforms and overrides.
Last updated
DDEV stores configuration in exactly two places. The global ~/.ddev directory tracks your project list and settings that apply everywhere, led by global_config.yaml. Each project carries its own .ddev folder with config.yaml and optional config.*.yaml overrides for team-shared tweaks.
Run ddev version and look for global-ddev-dir to confirm which global folder your install actually uses. Overrides win in a fixed order: DDEV_XDG_CONFIG_HOME first, then ~/.ddev, then ~/.config/ddev on Linux. Never drop a config.yaml directly into the global folder. The source code deletes it on sight.
Where DDEV stores this, by platform
C:\Users\[Username]\.ddev
Global config and project registry. Per-project settings live in each project's own .ddev/config.yaml. Set DDEV_XDG_CONFIG_HOME to relocate the global folder.
~/.ddev
Same role as on Windows. Team overrides belong in the project's config.local.yaml, which stays gitignored. Check ddev version output if you customized the location.
~/.ddev
Prefers ~/.config/ddev when ~/.ddev is absent. On WSL2 the same rules apply inside the Linux home, not the Windows one. Use DDEV_XDG_CONFIG_HOME for anything exotic.
Frequently asked questions
How do I find which global DDEV folder is active?
Run ddev version and grep for global-ddev-dir. That line shows the exact path after all overrides resolve. Remove stale copies in the other standard spots to stop DDEV warning about multiple configs.
Where do per-project DDEV settings live?
In .ddev/config.yaml at the project root, with extra config.*.yaml files merged in alphabetical order. Keep machine-specific tweaks in config.local.yaml so they never get committed.
Notice an outdated path? Let us know.