Configuration
All configuration lives in fdl.toml. Secrets are handled via ${VAR} environment variable expansion.
fdl config
Read and write fdl.toml from the command line:
# Set a value
fdl config targets.default.url 's3://${FDL_S3_BUCKET}'
# Get a value
fdl config targets.default.url
# List all settings
fdl config
fdl.toml
Located at the project root and tracked in Git. Auto-generated by fdl init.
name = "my_dataset"
catalog = "duckdb"
[targets.default]
url = "s3://${FDL_S3_BUCKET}"
public_url = "https://data.example.com"
s3_endpoint = "${FDL_S3_ENDPOINT}"
s3_access_key_id = "${FDL_S3_ACCESS_KEY_ID}"
s3_secret_access_key = "${FDL_S3_SECRET_ACCESS_KEY}"
| Key | Description |
|---|---|
name |
Datasource name |
catalog |
Catalog format (duckdb or sqlite, default: duckdb) |
targets.<name>.url |
Target storage URL or path |
targets.<name>.public_url |
Public base URL for HTTP access |
targets.<name>.s3_endpoint |
S3-compatible endpoint URL |
targets.<name>.s3_access_key_id |
S3 access key |
targets.<name>.s3_secret_access_key |
S3 secret key |
All values support ${VAR} environment variable expansion. Set the actual values via direnv (.envrc), CI secrets, or shell exports.
Targets
All fdl commands require a target name (e.g. fdl push default, fdl sql default "..."). Direct URLs are not accepted:
You can define multiple targets for different environments:
[targets.default]
url = "s3://${FDL_S3_BUCKET}"
public_url = "https://data.example.com"
s3_endpoint = "${FDL_S3_ENDPOINT}"
s3_access_key_id = "${FDL_S3_ACCESS_KEY_ID}"
s3_secret_access_key = "${FDL_S3_SECRET_ACCESS_KEY}"
[targets.local]
url = "~/.local/share/fdl"
public_url = "http://localhost:4001"