cmake -B build -G Ninja
cmake --build build -j$(nproc)
cmake --build build -j$(nproc) && ./build/tests/test_vector_storage
proto/database.proto — gRPC service and message definitionsservice/src/ — Database server implementation
memory_store.hpp/.cpp — In-memory document + vector storagedocument.hpp — Document and CollectionOptions typesdatabase_grpc_impl.cpp — gRPC request handlerspersistence/ — WAL, snapshots, persistence managermigrations/ — Migration runnerclient/ — C++ client library (smartbotic-db-client)tests/ — Integration testsSimilaritySearch RPC. Vectors use _vector document field, stored in parallel float arrays, persisted through WAL (VEC_PUT/VEC_DELETE) and snapshots (v3 format). Collection vector_dimension option is immutable after creation.PatchDocument RPC merges fields into existing documents atomically (server-side, within collection lock). Client patch() method. update() uses automatic optimistic locking with retry. See docs/integration-guide.md for concurrency patterns._views system collection, created via create_view migration op or createView RPC. Writes on view names are rejected.Canonical source for all smartbotic-database Debian packages.
Replaces the old shadowman-database and callerai-storage packages.
# Production (Docker, Debian 13)
./packaging/build.sh # Build 4 .debs
./packaging/build.sh --rebuild-base # Rebuild Docker base image
./packaging/build.sh --sync --suite trixie # Build + publish to repository.smartbotics.ai
# Local development (native, current system)
./packaging/build.sh --local # Build 4 .debs
./packaging/build.sh --local --install # Build + install locally
| Package | Contents | Deployed where |
|---|---|---|
smartbotic-database |
Server binary + systemd + config | Production DB servers |
libsmartbotic-db-client |
Shared .so (runtime) |
All production machines |
libsmartbotic-db-client-dev |
Headers + linker symlink + .proto + cmake config |
Docker build images, dev workstations |
smartbotic-db-cli |
CLI tool | Anywhere (optional) |
After ./packaging/build.sh --local --install, consumer projects can use:
find_package(smartbotic-db-client REQUIRED)
target_link_libraries(myapp PRIVATE smartbotic::db-client)
The submodule fallback still works for projects that haven't switched (BUILD_SHARED_LIBS=OFF).
| Project | Depends on | Min version | Migrations dir |
|---|---|---|---|
| shadowman-cpp | smartbotic-database (>= 1.2.0) |
1.2.0 | /opt/shadowman/share/shadowman/migrations/json |
| callerai | smartbotic-database (>= 1.2.0) |
1.2.0 | /etc/callerai/migrations |
Bump VERSION for API/protocol changes. Deb revision (-N) for packaging-only changes.