Configuration Reference

The daemon and CLI are driven by a YAML config validated by Pydantic. The field tables below are generated from the models, so defaults and constraints are always accurate. Validate a file with:

dccd validate --config config.yml

Example

settings:
  data_path: /home/me/data/crypto
  timezone: UTC
  ui_host: 127.0.0.1
  ui_port: 8080
  ui_auth_token: null        # set a token to require Bearer auth on /api/*
  ui_allow_origins: []        # opt-in CORS origins (default: same-origin only)

storage:
  local_path: /home/me/data/crypto
  remotes: []                 # rclone remotes for sync
  sync_interval: 0

alerts:
  webhook_url: null
  max_consecutive_errors: 3

jobs:
  - exchange: binance
    pairs: [BTC/USDT, ETH/USDT]
    data_type: ohlc
    operation: backfill
    span: 60
    trigger_kind: interval
    every: 60
    start: last

  - exchange: binance
    pairs: [BTC/USDT]
    data_type: trades
    operation: stream
    trigger_kind: supervised
    start: last

Schema

pydantic model AppConfig[source]

Top-level config: settings, storage, alerts and the list of jobs.

Fields:
field settings [Optional]
field storage [Optional]
field alerts [Optional]
field jobs [Optional]
pydantic model SettingsConfig[source]

Global settings: data path, timezone, and web-UI bind/auth.

Fields:
field data_path = './data/crypto'
field timezone = 'local'
field ui_host = '127.0.0.1'
field ui_port = 8080
field ui_auth_token = None
field ui_allow_origins [Optional]
pydantic model StorageConfig[source]

Storage settings: local path, rclone remotes, and sync interval.

Fields:
field local_path = ''
field remotes [Optional]
field sync_interval = 3600
pydantic model RemoteConfig[source]

One rclone remote target for sync.

Fields:
field provider = 'rclone'
field remote [Required]
pydantic model AlertConfig[source]

Health-alert settings: webhook URL and error threshold.

Fields:
field webhook_url = None
field max_consecutive_errors = 3
pydantic model JobConfig[source]

YAML job definition — more human-friendly than JobSpec.

Validation enforces: - exchange must be a known exchange name. - data_type='ohlc' requires span to be set. - pairs must be non-empty and use BASE/QUOTE format.

Fields:
field exchange [Required]
field pairs [Required]
field data_type = 'ohlc'
field operation = 'backfill'
field span = None
field trigger_kind = 'interval'
field every = None
field cron = None
field start = 'last'
field depth = None
field snapshot_interval = None