CyborgDB Migrate requires a running CyborgDB Service instance. See the Python Quickstart or Docker Quickstart to get one running first.
Supported Sources
To install support for all sources at once:
Two Modes of Operation
Interactive TUI
Step-by-step guided wizardLaunch the interactive terminal UI — select your source, enter credentials, configure your destination, and watch the migration in real time.
Headless CLI
Scriptable & CI/CD friendlyRun non-interactively using a TOML config file. Supports resuming interrupted migrations.
Quickstart: Interactive TUI
1
Install cyborgdb-migrate
Install the package with the extra for your source database:
2
Launch the wizard
- Selecting your source database type
- Entering source credentials
- Configuring your CyborgDB destination (host, API key, index name)
- Live progress display with per-batch stats
Quickstart: Headless CLI
1
Install cyborgdb-migrate
2
Create a config file
Create a See example-config.toml for all available options.
migration.toml file. Environment variable interpolation (${VAR}) is supported:3
Run the migration
CLI Reference
How It Works
- Double-buffered pipeline: one thread extracts the next batch while the previous batch’s upsert is in flight, maximising throughput.
- Checkpointing: progress is saved to disk every N batches so interrupted migrations can be resumed with
--resume. - Retry with backoff: upserts retry with exponential backoff (1s → 2s → 4s) before failing a batch.
- Spot-check verification: after migration, a random sample of vectors is fetched back from CyborgDB and compared to the source (within
atol=1e-6) to confirm data integrity. Exit code2indicates migration completed but spot-check failed.
Source-Specific Notes
Pinecone
Pinecone
Set
namespace in [source] to migrate a specific Pinecone namespace. Omit to migrate the default namespace.Milvus
Milvus
Set
namespace in [source] to migrate a specific partition.Weaviate
Weaviate
Ensure your Weaviate instance has the
text2vec module disabled or that raw vectors are accessible, as cyborgdb-migrate reads pre-computed vectors directly.