Usage

Pass exactly one source: positional text, --text, --url, or --file. URLs are fetched and converted to text; files are read from disk.

The point: the agent owns extraction

ingest is designed to be called by your AI agent, not typed by hand. The agent has already read the content and knows who’s in it, what was decided, and what happens next — so it passes that structure along instead of making the backend re-derive it.
The backend writes the article, its chunks, a source record, a source summary with its embedding, and the structured memories — with zero re-extraction.

Flags

--question and --answer pair up positionally. Pass the same number of each, in the same order, or they’ll be mismatched.

Route it into the right store

Before ingesting, check what compartments already exist:
If the content fits one — same client, same project, same theme — pass --store <slug>. Creating a new store for content that belongs in an existing one fragments your memory and breaks the channel-to-store routing you set up.

Context stores

How stores work, and how to auto-route content into them by source.

Delete an ingest

This is a hard delete — it cascades to the article’s chunks, summaries, and memories. There’s no undo.

Bulk sources

For meetings, vaults, and media, use the connectors instead of scripting ingest in a loop — they handle incremental sync, dedupe, and per-source metadata.

Connectors

Granola meetings, Obsidian vaults, and audio / video / image files.