Skip to content

Configuration

Configure your project with fyrnheim.yaml at the project root:

entities_dir: entities
data_dir: data
output_dir: generated
backend: duckdb
backend_config:
db_path: my_project.duckdb
# Push results to a separate output backend after fyr run
output_backend: clickhouse
output_config:
host: localhost
port: "8123"
database: default
user: default
password: ""
OptionDescriptionDefault
entities_dirDirectory containing entity Python filesentities
data_dirDirectory containing local data files (parquet, CSV)data
output_dirDirectory where generated transform code is writtengenerated
backendTransformation backend (duckdb, bigquery)duckdb
backend_configBackend-specific configuration (see below){}
output_backendOptional output backend for pushing resultsnone
output_configOutput backend-specific configuration{}

DuckDB:

backend: duckdb
backend_config:
db_path: my_project.duckdb

BigQuery:

backend: bigquery
backend_config:
project: my-gcp-project
dataset: analytics

All settings can be overridden via CLI flags. For example:

Terminal window
fyr run --backend bigquery

This runs on BigQuery regardless of what fyrnheim.yaml says.

Use fyr --help to see all available CLI options:

Terminal window
fyr --help
fyr generate --help
fyr run --help

A typical production pattern:

  1. Extract raw data with DLT (or any EL tool) into parquet files or a warehouse
  2. Transform with Fyrnheim: fyr run --backend bigquery (or duckdb for local)
  3. Push results to an output backend for serving (ClickHouse, Postgres, etc.)

Configure the output backend in fyrnheim.yaml:

backend: duckdb # transform backend
output_backend: clickhouse # push dim/analytics tables here after run
output_config:
host: ch.example.com
port: "8123"
database: analytics

This separation lets you develop locally on DuckDB while pushing production results to a fast query engine.