Configuration¶
Databox has one authoritative runtime-config surface:
packages/databox/databox/config/settings.py.
The DataboxSettings Pydantic object owns every runtime knob. Other runtime
code imports it rather than redeclaring values.
Primary surface¶
| Setting | Env var | Source | Notes |
|---|---|---|---|
| Polaris URL | DATABOX_POLARIS_URL |
settings.polaris_url |
Local REST catalog; default http://127.0.0.1:8181 |
| Polaris client ID | DATABOX_POLARIS_CLIENT_ID |
settings.polaris_client_id |
Secret; local catalog principal |
| Polaris client secret | DATABOX_POLARIS_CLIENT_SECRET |
settings.polaris_client_secret |
Secret |
| Iceberg catalog | DATABOX_ICEBERG_CATALOG |
settings.iceberg_catalog |
Default databox_lake |
| Warehouse prefix | DATABOX_ICEBERG_WAREHOUSE_PREFIX |
settings.iceberg_warehouse_prefix |
Default warehouse; protected integration uses run/source-isolated prefixes |
| S3 bucket | DATABOX_AWS_S3_BUCKET |
settings.aws_s3_bucket |
Iceberg warehouse bucket |
| AWS writer key | DATABOX_AWS_ACCESS_KEY_ID |
settings.aws_access_key_id |
Secret; scoped S3 writer |
| AWS writer secret | DATABOX_AWS_SECRET_ACCESS_KEY |
settings.aws_secret_access_key |
Secret |
| AWS session token | DATABOX_AWS_SESSION_TOKEN |
settings.aws_session_token |
Empty for the accepted local long-lived runtime key; required and forwarded when using temporary OIDC/STS credentials, including pgBackRest |
| AWS region | DATABOX_AWS_REGION |
settings.aws_region |
Default us-west-1 |
| Log level | LOG_LEVEL |
settings.log_level |
Default INFO |
| Smoke mode | DATABOX_SMOKE |
settings.smoke |
Limits source rows for verification |
| eBird window | DATABOX_EBIRD_DAYS_BACK |
settings.ebird_days_back |
Default 30; provider range 1–30 |
| GBIF record cap | DATABOX_GBIF_MAX_RECORDS |
settings.gbif_max_records |
Default 1,000; allowed range 1–10,000 |
| GBIF release slice | DATABOX_GBIF_PUBLIC_RELEASE |
settings.gbif_public_release |
Default false; retained producer input behavior |
| NOAA window | DATABOX_NOAA_DAYS_BACK |
settings.noaa_days_back |
Default 30 |
| USGS window | DATABOX_USGS_DAYS_BACK |
settings.usgs_days_back |
Default 30 |
| OpenLineage URL | OPENLINEAGE_URL |
settings.openlineage_url |
Optional; disabled when unset |
| OpenLineage namespace | OPENLINEAGE_NAMESPACE |
settings.openlineage_namespace |
Default databox |
| OpenLineage API key | OPENLINEAGE_API_KEY |
settings.openlineage_api_key |
Optional secret |
Derived values¶
| Derived value | Expression |
|---|---|
settings.gateway |
Always local |
settings.database_path |
data/databox.duckdb |
settings.pyiceberg_catalog() |
Authenticated Polaris REST catalog |
settings.raw_dataset_name(name) |
Source-specific raw_<name> Iceberg namespace |
settings.soda_datasource_yaml |
DuckDB datasource using database_path |
settings.sqlmesh_config() |
One local DuckDB gateway plus separate local SQLMesh state DB |
Where it is read¶
- SQLMesh —
transforms/main/config.pyreturnssettings.sqlmesh_config(). - Dagster dlt assets — source jobs write dlt-managed Iceberg tables in S3 and commit their catalog metadata through Polaris.
- Dagster resources — orchestration reads Polaris/S3 configuration, the local modeled-data path, dlt data directory, source windows, and Soda datasource.
- Data dictionary —
scripts/platform/generate_docs.pyuses the local gateway.
Out-of-surface configuration¶
Per-source API tokens are read at request time in the source packages so dlt
and pytest environment overrides work cleanly. DATABOX_ENV_FILE can select a
different dotenv path; tests use it to prove credential-empty graph
construction. Build metadata and tool settings remain in pyproject.toml.
For the local primary Iceberg warehouse, Databox accepts the Git-ignored .env
access key and secret for databox-lake-user; this credential shape has no
session token. .env must remain mode 0600 on the FileVault-protected host.
The same bounded runtime identity protects PostgreSQL through pgBackRest's
separate S3 repository. CI likewise reuses its temporary OIDC warehouse-role
credential, including its session token. The MFA-protected catalog-backup role
remains a human recovery identity and is never injected into routine services.
SQLMesh state¶
SQLMesh state lives in data/sqlmesh_state.duckdb, separate from
data/databox.duckdb. The data connection loads the h3 extension while the
state connection does not; separating them avoids incompatible concurrent
DuckDB connection configuration. task db:reset removes both local database
files.