Repository navigation
Conversation
Laurianti
force-pushed
the
engines
branch
2 times, most recently
from
October 25, 2026 04:32
70743a5 to
25696c7
Compare
ambergrove
approved these changes
Oct 25, 2026
… the engines ChromaDotNet.Local.ChromaDB and ChromaDotNet.Local.VecturaDB Each engine package describes its server to the base with assembly metadata: the version, the release of the executables, for each platform the file, its name in the release and its SHA-256 hash, and the longest data path on Windows, 206 characters for Chroma and 200 for VecturaDB. ChromaLocalOptions.Engine chooses between two engines; Engine and EngineVersion of the server say its engine and the version of its package, and ChromaVersion is obsolete. Without an engine, the warning CDNL001 at the build and an error at the start. With ChromaDotNetLocalChromaDBDownload the executables of the runtime packages are not in the output. The guard is in the base: the start finds it, as the executables, next to the application, next to the assembly of the base, as in a plugin or a module of PowerShell, and in the directories of the native libraries, as in a single file that extracts them. The executables are named chromadb, vecturadb and chromadotnet-local-guard, so that the packages of 1.5.9.1-preview.5 can stay in an application. There the SDK takes the ChromaDotNet.Local.dll of the base over the one of ChromaDotNet.Local.Core, which has the same version: the base is among the packages it prefers in a conflict. The tests run with the two engines, and check the Search API and the fork of collections of VecturaDB against what Chroma Cloud does. build/guard-hosts-test.sh checks the guard in a single file, in a plugin and in a module of PowerShell.
…9.1-preview.5 - package-modes.sh: ChromaDotNet.Local.ChromaDB, also published for one platform, with ChromaDotNetLocalChromaDBDownload, ChromaDotNet.Local.VecturaDB, the base alone, and with aot each engine published with NativeAOT. - download-tests.sh chromadb|vecturadb: the download at the first start, from a mirror and from the GitHub release; the mirror of serve_release.py also serves files that are not gzip. - migration-tests.sh: from the packages of 1.5.9.1-preview.5 on nuget.org to the new ones. - client-suite.sh against each engine; against VecturaDB without the three tests that expect a server without the Search API, the sparse vectors and the fork. nonroot-test.sh, linux-tests.sh and nuget-check.sh with the two engines; nonroot-test.sh stops when a publish fails, and checks that the message names the engine and the guard.
…ith its hash Where a publish for one platform puts the executable, a file of that name can be another one: the apphost of an application named chromadb or vecturadb, as chroma in 1.5.9.1-preview.5, or of a project it references. The start ran it as the server. Now such a file is taken only with the SHA-256 hash of the engine package. package-modes.sh checks an application named vecturadb, and one named chromadb without an apphost, published for one platform, which starts the engine next to it.
The pack checks the hashes of VecturaDB against the digests of its release and takes its notices. On the five runners: the tests with the two engines, the package modes and NativeAOT, the migration from 1.5.9.1-preview.5, the download of each engine, and the suite of the client against each engine; on Linux also the container published as root and the guard in a single file, a plugin and a module of PowerShell. A tag publishes the packages of its line: v* the base, chromadb-v* ChromaDotNet.Local.ChromaDB and its runtime packages with the executables in the release, vecturadb-v* ChromaDotNet.Local.VecturaDB; an engine only once the base it depends on is released as it is in the tree.
ambergrove
approved these changes
Oct 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes
ChromaDotNet.Local becomes the base without an engine, and each engine is a package of its own, with its line of versions and tags:
ChromaLocalOptions.Enginechooses between two engines;EngineandEngineVersionof the server;ChromaVersionis obsolete. Without an engine, the warning CDNL001 at the build and an error at the start.ChromaDotNetLocalChromaDBDownloadtakes the executables of ChromaDB out of the output. The guard is in the base, and the start finds it, as the executables, also in a single file with its native libraries inside and in a plugin, like a module of PowerShell. New file names: chromadb, vecturadb, chromadotnet-local-guard. Next to ChromaDotNet.Local.Core of 1.5.9.1-preview.5, whose ChromaDotNet.Local.dll has the same version, the SDK takes the one of the base, a package it prefers in a conflict.Measured on Windows 11
Measured on Linux x64, in a container: without a guard, the server outlives the application killed with SIGKILL. With
build/guard-hosts-test.sh, in an application, a single file with its native libraries inside, a plugin of a host in another directory and a binary module of PowerShell, the guard is the parent of the server, which ends with the application.Runs on Windows 11, .NET 10
build/package-modes.sh aotbuild/migration-tests.shbuild/download-tests.sh chromadbandvecturadbbuild/client-suite.sh, ChromaDBbuild/client-suite.sh, VecturaDBbuild/nonroot-test.sh x64,build/guard-hosts-test.sh x64The data of the tests of the Search of VecturaDB is that of the comparison with Chroma Cloud, with one change: the 300 records that the searches do not find are on distinct vectors. When 300 records share one vector, the HNSW index of a single node, in Chroma 1.5.9 as in VecturaDB, misses the records near the query in about two collections out of five.
Not in this PR: the tags, the packages on NuGet, the deprecation of ChromaDotNet.Local.Core and of the ChromaDotNet.Local.Runtime packages.