# croft.json

> croft docs config

Project settings, read without running any code. Unknown keys are errors (with a did-you-mean).

```text
KEY                    TYPE            DEFAULT              MEANING
database               string          "warehouse.duckdb"   the DuckDB file, relative to the project folder (absolute after relocation)
timezone               string          (required)           IANA zone for schedules, ::DATE and JSON timestamps, e.g. "America/Los_Angeles"; changing it rebuilds every transform
readCopy               boolean         false                keep warehouse.read.duckdb, a copy for GUIs and notebooks, refreshed after runs
notify.desktop         boolean         true                 desktop notification when a scheduled run fails
notify.webhook         string | null   null                 http(s) URL that receives the failure envelope of a scheduled run
concurrency            integer         4                    extractions that run at the same time in one run (1-64)
serve.port             integer         7447                 read server port
serve.host             string          "127.0.0.1"          read server address; anything but loopback must sit behind HTTPS
serve.queryTimeoutMs   integer         30000                deadline for one query over HTTP
serve.maxConcurrent    integer         4                    queries running in DuckDB at once; the rest queue
serve.maxBytes         integer         67108864             largest result in bytes; bigger results fail with QUERY_TOO_MANY_ROWS
serve.maxRows          integer         100000               most rows one answer carries, whatever limit asks; more fail with QUERY_TOO_MANY_ROWS
serve.allowOrigins     string[]        []                   browser origins allowed to call the read server, e.g. "http://localhost:3000"
stateDir               string          ".croft"             state folder; croft sets it when it moves state off a synced folder
```

Example:

```text
{"$schema": "./node_modules/@zabaca/croft/croft.schema.json", "database": "warehouse.duckdb",
 "timezone": "America/Los_Angeles"}
```

When the project sits in a synced folder (iCloud ~/Documents or ~/Desktop, Dropbox, OneDrive, network
drives, WSL /mnt/<drive>), croft moves the database and .croft/ to ~/.local/share/croft/<project>-<hash>/
and records the new paths in database and stateDir. Asset files stay in the project folder.

The same page is in the CLI: `croft docs config`.

Source: https://croft.zabaca.com/docs/reference/config/
