Metadata-Version: 2.4
Name: cyborgdb-migrate
Version: 0.1.1
Summary: TUI wizard and CLI for migrating vector data into CyborgDB
Author: Cyborg Inc.
License-Expression: MIT
Project-URL: Homepage, https://github.com/cyborginc/cyborgdb-migrate
Project-URL: Repository, https://github.com/cyborginc/cyborgdb-migrate
Project-URL: Issues, https://github.com/cyborginc/cyborgdb-migrate/issues
Keywords: vector-database,migration,cyborgdb,pinecone,qdrant,weaviate,chromadb,milvus,embeddings,tui
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Database
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: textual>=0.86.0
Requires-Dist: cyborgdb<1.0.0,>=0.15.0
Requires-Dist: numpy>=1.21.0
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
Provides-Extra: pinecone
Requires-Dist: pinecone; extra == "pinecone"
Provides-Extra: qdrant
Requires-Dist: qdrant-client; extra == "qdrant"
Provides-Extra: weaviate
Requires-Dist: weaviate-client; extra == "weaviate"
Provides-Extra: chromadb
Requires-Dist: chromadb; extra == "chromadb"
Provides-Extra: milvus
Requires-Dist: pymilvus; extra == "milvus"
Provides-Extra: syntax
Requires-Dist: tree-sitter; extra == "syntax"
Requires-Dist: tree-sitter-python; extra == "syntax"
Provides-Extra: all
Requires-Dist: pinecone; extra == "all"
Requires-Dist: qdrant-client; extra == "all"
Requires-Dist: weaviate-client; extra == "all"
Requires-Dist: chromadb; extra == "all"
Requires-Dist: pymilvus; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: textual-dev; extra == "dev"
Dynamic: license-file

# cyborgdb-migrate

![PyPI - Version](https://img.shields.io/pypi/v/cyborgdb-migrate)
![PyPI - License](https://img.shields.io/pypi/l/cyborgdb-migrate)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cyborgdb-migrate)

A TUI wizard and CLI for migrating vector data from popular vector databases into [CyborgDB](https://docs.cyborg.co) — the encrypted vector database.

Supports **Pinecone**, **Qdrant**, **Weaviate**, **ChromaDB**, and **Milvus** as sources, with encrypted-at-rest indexes, checkpoint & resume, and post-migration verification built in.

## Key Features

- **Interactive TUI** — step-by-step wizard powered for migration
- **Headless CLI** — non-interactive mode for scripts and CI/CD pipelines
- **Checkpoint & resume** — automatically saves progress; resume interrupted migrations
- **Spot-check verification** — post-migration vector and metadata integrity checks
- **Double-buffered I/O** — overlaps extraction and upsert for maximum throughput

## Getting Started

To get started in minutes, check out the [CyborgDB Quickstart Guide](https://docs.cyborg.co/quickstart).

### Installation

```bash
pip install cyborgdb-migrate
```

Install with support for your source database:

```bash
# Individual sources
pip install "cyborgdb-migrate[pinecone]"
pip install "cyborgdb-migrate[qdrant]"
pip install "cyborgdb-migrate[weaviate]"
pip install "cyborgdb-migrate[chromadb]"
pip install "cyborgdb-migrate[milvus]"

# All sources at once
pip install "cyborgdb-migrate[all]"
```

### Usage

#### Interactive (TUI)

```bash
cyborgdb-migrate
```

The wizard walks you through selecting a source, entering credentials, connecting to CyborgDB, and running the migration with live progress.

#### Headless (CLI)

Create a TOML config file (see [`example-config.toml`](https://github.com/cyborginc/cyborgdb-migrate/blob/main/example-config.toml)):

```toml
[source]
type = "pinecone"
api_key = "${PINECONE_API_KEY}"
index = "my-index"

[destination]
host = "http://localhost:8000"
api_key = "${CYBORGDB_API_KEY}"
create_index = true
index_name = "my-cyborgdb-index"
index_type = "ivfflat"

[options]
batch_size = 200
checkpoint_every = 10
```

```bash
cyborgdb-migrate --config migration.toml
```

Resume an interrupted migration:

```bash
cyborgdb-migrate --config migration.toml --resume
```

## Supported Sources

| Source | Extras | Notes |
|--------|--------|-------|
| [Pinecone](https://www.pinecone.io/) | `pinecone` | Supports namespaces |
| [Qdrant](https://qdrant.tech/) | `qdrant` | Scroll-based pagination |
| [Weaviate](https://weaviate.io/) | `weaviate` | Supports named vectors |
| [ChromaDB](https://www.trychroma.com/) | `chromadb` | Local and remote modes |
| [Milvus](https://milvus.io/) | `milvus` | Supports partitions, content field heuristic |

## Configuration Reference

For full configuration details, CLI options, and exit codes, see the [Configuration Guide](https://github.com/cyborginc/cyborgdb-migrate/blob/main/docs/configuration.md).

## Documentation

For more information on CyborgDB, see the [Cyborg Docs](https://docs.cyborg.co).

## License

The CyborgDB Migration Tool is licensed under the [MIT License](LICENSE).
