SQL in. The right file out. Delivered.

The delivery layer of your data stack.

curl -fsSL https://getdre.com/install.sh | sh

Or pip install dre-cli brew install get-dre/tap/dre

Works alongside dbt · Free and open source

One report, start to finish

The workbook finance asks for every month

Three things: a SQL query, a YAML file that describes the workbook, and one command. Tabs, number formats and the email are declared, not scripted. Formulas and totals have their own example.

  • One tab per query, each with its own columns and formats
  • Real Excel formulas on every row, and totals under the columns
  • Delivered by email, with a templated subject and attachment name

See the full example →

reports/finance_pack/finance_pack.yml
queries:
  - {query: finance_regions, tab_name: By region}
  - {query: finance_channels, tab_name: By channel}
  - {query: finance_products, tab_name: Top products}
output:
  format: xlsx
  columns:
    net: {format: "#,##0.00"}
  destination:
    - {profile: local, path: "out/finance_pack.xlsx"}
    - profile: mail_local
      to: finance@dre-demo.test
      cc: cfo@dre-demo.test
      subject: "Sales {{ period(var('period')).start.date }} to {{ period(var('period')).end.date }}"
      attachment_name: "Sales pack {{ run.date.yyyymmdd }}.xlsx"
terminal
dre run finance_pack
What it supports

Your warehouse, your format, your destination

Support for each source and destination comes as a plugin that DRE installs on demand.

Sources

DuckDBPostgresDatabricks

Formats

Excel (xlsx)csvDelimitedFixed-widthParquet

Destinations

EmailSFTPFTP / FTPSS3Google Cloud StorageAzure BlobDatabricks VolumesSlackLocal files

Templates

Jinja in your SQL and YAML: dates and periods, variables, lookups and macros.

Sets and schedules

Run one report per client, region or store. Name schedules; your orchestrator fires them.

Safe to automate

Secrets stay in environment variables and are masked. Every run writes machine-readable results.

How it works

From project to delivered file

1

A project

Reports are YAML and .sql files in a dbt-shaped project. Plain text, in git.

2

dre run

DRE renders the SQL templates, runs them against your warehouse, and checks the result.

3

A file

Excel workbooks with formulas and totals, fixed-width files, parquet, csv. Exactly as specified.

4

A destination

The file goes where it belongs: an inbox, an SFTP drop, a bucket, a Volume, a Slack channel.

Built for coding agents too

Ask your agent: “help me with dre”

DRE’s agent skills turn Claude Code, Cursor, GitHub Copilot, Gemini CLI or any agent that reads Agent Skills into a guide, from installing DRE to a delivered report.

  • Asks one question at a time, with a recommendation
  • Confirms before anything is delivered
  • Never asks for your passwords or tokens

How the agent skills work →

terminal
# Claude Code
claude plugin marketplace add get-dre/dre
claude plugin install dre@dre

# Other agents
npx skills add get-dre/dre#skills-latest
Works alongside dbt

dbt-shaped projects, not a dbt replacement

If you know dbt, a DRE project will look familiar: ref(), folders with shared config, tags and selectors. Use dbt to build your tables; use DRE to turn them into the files people actually receive.

Licence

Free to use. Open source under GPL-3.0.

Running DRE inside your company, on your own servers, or calling it as a separate program from your own code is free and doesn’t affect your code. If you want to distribute DRE inside a product you sell without the GPL’s obligations, a commercial licence is available.

Licensing FAQ →Ask about a commercial licence

Questions?

Ask in public on GitHub Discussions, or write to hello@getdre.com. Security reports go to security@getdre.com.

Deliver your first report today.