Original data, verified
The local export includes IDs, documents, metadata, embeddings and collection configuration. Every copied record needs a verified durable receipt and exact source readback.
Jylus Migrate · Chroma Cloud first
Discover Chroma Cloud collections, review compatibility and storage, then approve a verified record-copy evaluation. Keep your application serving while you test.
0.1.1 · Ready-built Docker image · Linux amd64 · official CloudClient 1.5.9
Preview qualification: official-client protocol tests and a separate real Jylus workspace test passed. Hosted Chroma Cloud acceptance still needs a run on your authorised frozen collection.
No Jylus writes. Inspect collection settings, storage estimates and compatibility gaps.
Use the reviewed assessment hash and explicit execution flags for a record-only evaluation.
Durable receipts, exact record readback and resumable progress. Compare the same questions before considering a switch.
Storing an embedding as JSON does not create a compatible vector index. This preview exports original vectors locally and copies supported text, IDs, metadata and provenance to Jylus. External dense-vector search, Chroma fork behaviour and specialised hybrid search are not claimed compatible; the tool keeps cutover approval blocked.
Start with an assessment
Create your local secret files and migrate.env using the setup guide. Docker pulls the published image automatically when you run the command below. It discovers collections and assesses the first 20; select any collection for its own assessment. No Jylus key is needed for this step.
# Configure local secret files using the guide; do not paste keys here.
mkdir -p work
docker run --rm --platform linux/amd64 --pull missing --read-only --memory=768m --cpus=1 --pids-limit=128 \
--cap-drop=ALL --security-opt=no-new-privileges --tmpfs /tmp:rw,size=128m \
--user "$(id -u):$(id -g)" --env-file ./migrate.env \
--mount "type=bind,src=$PWD/secrets,dst=/run/secrets,readonly" \
--mount "type=bind,src=$PWD/work,dst=/work" \
docker.io/jylus/jylus-migrate:0.1.1@sha256:d6da9960c32ab89474a07328ea6e55f276b9214e999f8b193d99092db8141630 chroma-cloudAfter reviewing one collection's report, add --collection, --execute, the exact --approve hash, --record-storage-only and --frozen-source. Supply a key for a separate Jylus evaluation workspace. An interrupted transfer resumes from the same private work directory with --resume.
The local export includes IDs, documents, metadata, embeddings and collection configuration. Every copied record needs a verified durable receipt and exact source readback.
Use existing query vectors for Chroma and the same original questions for Jylus native text analysis. Inspect results, filters and timings; missing relevance judgments stay unknown.
Explicit approval, bounded batches and resumable checkpoints. The tool never switches traffic, deletes the source, changes your plan or sends Chroma credentials to Jylus.
| Chroma behaviour | What the tool verifies or reports |
|---|---|
| Dense embeddings | Exports the original vectors locally and checks dimensions across the full source. Jylus receives vector provenance/digests, not an equivalent ANN index. Dimension, metric, indexing and query compatibility remain explicit blockers. |
| Text and vector queries | Uses saved Chroma query vectors without calling a model or embedding provider. Jylus receives the same question as text. This compares different retrieval engines; it is not an identical vector query or a shared distance threshold. |
| Filters and original IDs | Maps scalar equality, range and membership filters for explicit evaluation. Unsupported negative, Boolean, document and dotted-key filters are refused. Original IDs remain at payload.chroma.id, text at payload.document.content, metadata at payload.chroma.metadata. |
| Collection forking | An existing frozen fork can be copied as a snapshot. Fork lineage, copy-on-write sharing and subsequent fork operations are not reproduced. |
| Specialised hybrid search | Chroma Search API ranking expressions, sparse fields, fusion and special indexes require separate compatibility work. They are not silently translated. |
| Updates, deletes and cutover | Snapshot evaluation only. No CDC or deletion replay. Missing original text blocks target transfer; URI assets are not fetched. Reports never approve a production switch automatically. |
The assessment samples up to 20 records per collection and estimates export and request bytes. It does not estimate the bill, RAM, replication, backups or index overhead. Full export bytes are measured before transfer.
Records are copied into Jylus history. The tool explicitly queries that history; it does not map Chroma upsert identity onto the latest-state projection. Current-state APIs and ongoing updates require a separately verified application mapping.
Default bounds: 100,000 records and 2 GiB of exported JSON; explicit limits up to 1,000,000 records / 8 GiB. Each source row is capped at 512 KiB. Transfers use at most 100 events and 900,000 encoded bytes per request. Oversized inputs are refused, never silently sampled.
Choose the evaluation workspace's retention and review its storage cap. Plan throughput and concurrency remain enforced. This tool does not activate extra charges. Independent namespace count requires a complete native aggregation, with a scan bound of at most 50,000 records. Partial counts remain explicitly unverified, even though every expected record is checked.
Verified version 0.1.1 image digest:
sha256:d6da9960c32ab89474a07328ea6e55f276b9214e999f8b193d99092db8141630The published image contains the migration client, pinned dependencies, synthetic tests, Apache 2.0 licence material and notices. It contains no proprietary Jylus engine, customer data or operational credentials. The command is pinned to the verified image digest.