> ## Documentation Index
> Fetch the complete documentation index at: https://docs.duckbrain.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# ingest

> Pull a source archive into the lake — append-only, idempotent

```bash theme={null}
duckbrain ingest <source> [flags]
```

Every adapter maps raw records into the same **bronze envelope**: deterministic `record_id`, `content_hash` dedup (re-runs are always safe), `occurred_at` event time, full raw payload preserved as VARIANT, plus `observer`/`classification`/`platform_source` provenance.

| Source                                                     | Syntax                                   | Status    |
| ---------------------------------------------------------- | ---------------------------------------- | --------- |
| Slack                                                      | `duckbrain ingest slacrawl [--db path]`  | Available |
| Claude Code sessions                                       | `duckbrain ingest sessions [--glob g]`   | Available |
| Markdown                                                   | `duckbrain ingest markdown --root <dir>` | Available |
| iMessage, WhatsApp, Notion, Granola, Photos, GitHub, Gmail | —                                        | Planned   |

See the **Ingest Sources** section for per-source setup. After ingesting, run `duckbrain embed && duckbrain index` to make new rows searchable.


## Related topics

- [Markdown & Notes](/sources/markdown.md)
- [Granola](/sources/granola.md)
- [Notion](/sources/notion.md)
- [Slack](/sources/slack.md)
- [Gmail & Calendar](/sources/gmail.md)
