~/.duckbrain/<instance>/ (default instance: default): the DuckLake catalog (SQLite, WAL), the lake/ Parquet directory, the bronze envelope tables, and a per-instance state.sql agent surface.
Source picker
Then shows an interactive multi-select (arrow keys, space to toggle) of the sources that need a setup step. Selecting one runs its setup — installing the*crawl binary (Homebrew for most; go install for imsgcrawl) — and prints next steps:
Non-interactive:
--sources slack,imessage skips the picker and runs just those setups; --sources none opts out. The prompt auto-skips when stdin isn’t a TTY, so scripts and buttons stay non-interactive.
Sources with no setup aren’t listed — there’s nothing to do for them:
- Session sources (Claude Code, Codex, OpenClaw) ingest once you’ve used those tools.
- markdown reads the
docs/folder of whatever directory you run duckbrain from. - Apps (Gmail, GitHub, …) connect separately with
duckbrain connect <app>.
Syncing
Syncing turns on by default — init ends by runningsync on: streaming session ingest, a 6h sync schedule, and Claude Code session hooks. Opt out with --no-sync (turn on later with duckbrain sync on).