Skip to content

Configuration

dde uses two YAML configuration files: a global config for system-wide defaults and a project config for per-project settings.

Located at ~/.dde/config.yml. This file is not created automatically — create it manually when you need to override defaults. All settings are optional.

# Default output format (text or json)
output: text
# Upstream DNS servers for non-.test queries
dns:
forward:
- 9.9.9.9
- 149.112.112.112
# SSH keys to load (empty = all keys in ~/.ssh/)
ssh:
keys:
- ~/.ssh/id_ed25519
# Default service versions
services:
mariadb:
version: "11.8"
postgres:
version: "18.3"
valkey:
version: "9"

Located at .dde/config.yml in the project root. Created by dde project:init.

name: my-app
services:
- mariadb
- valkey
containers:
web:
shell: zsh

Services can be specified as a simple string (uses the global default version) or with an explicit version:

services:
- mariadb # uses default version
- name: mariadb # pins a specific version
version: "10.6"

Available services: mariadb, postgres, valkey, mailpit.

Per-container settings, keyed by the service name in your docker-compose.yml:

containers:
web:
shell: zsh # override shell for dde project:shell

Settings are resolved with the following priority (highest first):

  1. CLI arguments (--output=json)
  2. Project config (.dde/config.yml)
  3. Global config (~/.dde/config.yml)
  4. Built-in defaults
VariableDefaultDescription
DDE_CONFIG_DIR~/.ddeGlobal configuration directory
DDE_DATA_DIR~/.dde/dataData directory (services, certs)
DDE_UIDCurrent user’s UIDUID for the container user
DDE_GIDCurrent user’s GIDGID for the container user
DDE_SHELLAuto-detected (zsh > bash > sh)Override container shell