What it guarantees
- Read-only on the source. It never deletes or mutates Turbopuffer data, and your Turbopuffer key is never sent to Conare.
- Resumable. Pages by ascending id, atomically upserts destination batches, and writes a secret-free checkpoint after each acknowledged page — interrupt it and re-run, it continues where it stopped.
- Verifying. Compacts the destination and verifies the row count when the copy completes.
- Fail-closed. The importer supports one dense vector column per namespace; multi-vector, sparse-vector, and late-interaction namespaces fail with an explicit error instead of silently dropping data.
Options
After migrating
Queries port naturally: the/v2 query shim accepts the Turbopuffer read shape (rank_by, filters, top_k, include_attributes) as-is, and the native /v1/search filter DSL uses the same [property, op, value] operators you already write.