v0.7.0 — Bulk Ingest
Bulk Ingest from Local Storage
Ingest dozens or hundreds of files at once from a local directory — no MCP wire overhead, no running server required.
New features
BulkIngestorclass — scan source directory, SHA-256 content dedup via manifest, copy toraw/, batch compile withasyncio.Semaphoreconcurrency control, single reindex at end (cortex/compiler/bulk.py)cortex-bulk-ingestCLI —--source,--concurrency,--force,--dry-run(scripts/bulk_ingest.py)- One-click shell script —
./scripts/bulk_ingest.sh /path/to/papersloads.env, prints summary, runs the full pipeline POST /api/v1/bulk-ingestREST endpoint — programmatic bulk ingest without MCP (cortex/api/routes.py)- Docker
INGEST_DIRvolume mount — mount a local directory as/ingestin the container
Deduplication
Files are matched by SHA-256 content hash (not filename) via .cortex/ingest-manifest.json. Same content under a different name is skipped. --force bypasses the check.
Tests
31 new tests covering scan, hash, manifest, copy, compile batch, CLI parsing, REST endpoint, and Docker compose validation. Full suite: 286 passed.