# SQL in. The right file out. Delivered.

> The delivery layer of your data stack: SQL in, the right file out, delivered. Open source, and it works alongside dbt.

The delivery layer of your data stack.

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

```
# Claude Code
claude plugin marketplace add get-dre/dre
claude plugin install dre@dre
# Other agents
npx skills add get-dre/dre#skills-latest
```

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

[Read the docs →](https://getdre.com/docs/)[See what it builds](#use-cases)

Works alongside [dbt](#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 →](https://getdre.com/use-cases/monthly-finance-pack/)

reports/finance\_pack/finance\_pack.yml

```yaml
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

```bash
dre run finance_pack
```

Use cases

## Recognise your own job

Each one shows the YAML and SQL that produce the result.

[

1

### Monthly finance pack

A multi-sheet Excel workbook with money formats, built from your SQL and emailed on the 1st.

See how →

](https://getdre.com/use-cases/monthly-finance-pack/)[

2

### A file for a bank or regulator

Fixed-width or delimited files to the exact layout the other side asks for, dropped on SFTP.

See how →

](https://getdre.com/use-cases/file-for-a-bank/)[

3

### Extracts to S3, GCS or Azure Blob

Parquet or csv extracts, written where downstream systems pick them up.

See how →

](https://getdre.com/use-cases/extracts-to-object-storage/)[

4

### One report per store or region

Sets run the same report once per client, each with its own file and recipient.

See how →

](https://getdre.com/use-cases/one-report-per-store-or-region/)[

5

### DRE as a Databricks job

Install DRE from a wheel in a serverless job and write the report to a Volume.

See how →

](https://getdre.com/use-cases/databricks-job/)[

6

### A report built by a coding agent

From “help me with dre” to a delivered file, with an agent as the guide.

See how →

](https://getdre.com/use-cases/built-by-a-coding-agent/)[

7

### See every upcoming run

dre schedule ls lists when every schedule fires, with DST worked out, and the exact command for each run.

See how →

](https://getdre.com/use-cases/see-every-upcoming-run/)

More examples

## The details people ask about

Short recipes for delivery, scheduling and Excel templates.

[

### Save to a Databricks Volume or workspace

Write the file to a Unity Catalog Volume or a workspace folder, from your laptop or inside a job.

See how →

](https://getdre.com/use-cases/databricks-volume-and-workspace/)[

### Run by schedule name

Name a timing once and share it; your orchestrator runs dre run --schedule, and a rerun renders the same SQL.

See how →

](https://getdre.com/use-cases/run-by-schedule-name/)[

### Deliver to many destinations in one run

One workbook: local copy, SFTP, S3, GCS, Azure Blob and an email, in order, in a single run.

See how →

](https://getdre.com/use-cases/deliver-to-many-destinations/)[

### Fill a branded Excel template

Design the workbook in Excel; DRE fills the cells and tables and keeps your styling.

See how →

](https://getdre.com/use-cases/fill-an-excel-template/)[

### Totals, row formulas and column formulas

Real Excel formulas under and beside your data: totals for columns, a formula on every row, a formula over whole columns.

See how →

](https://getdre.com/use-cases/totals-and-formulas/)[

### Post the report to Slack

The workbook lands in a Slack channel, or one person’s DM, with your message and a preview.

See how →

](https://getdre.com/use-cases/post-to-slack/)

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 →](https://getdre.com/agents/)

terminal

```bash
# 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 →](https://getdre.com/licensing/)[Ask about a commercial licence](mailto:licensing@getdre.com)

### Questions?

Ask in public on [GitHub Discussions](https://github.com/get-dre/dre/discussions), or write to [hello@getdre.com](mailto:hello@getdre.com). Security reports go to [security@getdre.com](mailto:security@getdre.com).

## Deliver your first report today.

[Read the docs →](https://getdre.com/docs/)[View on GitHub](https://github.com/get-dre/dre)
