DocumentsLanceDB's Space
SDK and Multi-Language Architecture
SDK and Multi-Language Architecture
Type
Topic
Status
Published
Created
Jul 7, 2026
Updated
Jul 7, 2026
Created by
Dosu Bot
Updated by
Dosu Bot

SDK and Multi-Language Architecture#

Overview#

LanceDB is a multimodal vector database built on the Lance columnar format. Its architecture centers on a Rust core library that is exposed to application developers through language-specific SDK wrappers.

Supported interfaces :

InterfacePackage / Endpoint
Python SDKpip install lancedb
TypeScript/Node.js SDKnpm install @lancedb/lancedb
Rust SDKlancedb crate on crates.io
Java SDKMaven — cloud/enterprise REST client
REST APIhttps://docs.lancedb.com/api-reference/rest

Architecture: Rust Core + Language Bindings#

The core library lives at rust/lancedb/. The Python and TypeScript SDKs are native-binding wrappers compiled against it — they are not pure-language reimplementations.

  • Python SDK uses pyo3 to generate Rust↔Python bindings. Rust binding source lives at python/src/; the Python package source at python/lancedb/.
  • TypeScript/Node.js SDK uses napi-rs for Rust↔Node.js bindings. Rust binding source lives at nodejs/src/; the TypeScript package source at nodejs/lancedb/.
  • Cargo workspace at the repository root ties rust/lancedb, nodejs, and python together as a single Rust workspace.

Both the Python and TypeScript SDKs require Cargo and protoc to build from source because they compile Rust as part of their build step.

Java SDK: REST Client, Not a Native Binding#

The Java SDK is architecturally distinct from the Python and TypeScript SDKs. It is a pure REST client — it does not embed or compile the Rust library. Instead it communicates with a remote LanceDB Cloud or Enterprise deployment over HTTP.

The entry point is LanceDbNamespaceClientBuilder, which assembles HTTP headers (x-lancedb-database, x-api-key) and connects to the cloud endpoint https://<db>.<region>.api.lancedb.com.

Current limitations:

  • Only supports LanceDB Cloud and Enterprise (remote) modes. Local/embedded database mode is not yet available.
  • An open issue tracks adding local database support to the Java SDK, with intent to establish a reusable pattern for future language bindings.

The Java project is a standalone Maven project (java/) and is not part of the Cargo workspace.

Platform Support and Unsupported Environments#

Node.js SDK prebuilt binaries#

Because the TypeScript SDK embeds compiled Rust, platform support is constrained by available prebuilt native libraries. Supported platforms for @lancedb/lancedb :

  • Linux — x86_64 and aarch64 (glibc and musl)
  • macOS — Intel (x86_64) and Apple Silicon (M1/M2/ARM)
  • Windows — x86_64 and aarch64

Users on unlisted platforms must build from source.

Mobile and cross-platform frameworks#

Mobile (iOS, Android), Flutter, and React Native are not supported. The Rust core and its FFI wrappers are designed for server-side and desktop environments. There is no mobile build target, and no official integration for cross-platform frameworks like Flutter or React Native.

For environments where native bindings are unavailable, the REST API is the only viable integration path: it has no runtime compilation requirement and works wherever HTTP is available.

Repository Layout Quick Reference#

PathContents
rust/lancedb/Rust core library — the source of truth for all behavior
python/Python SDK (pyo3 bindings + Python package)
nodejs/TypeScript/Node.js SDK (napi-rs bindings + TS package)
java/Java REST client for Cloud/Enterprise
node/Deprecated legacy TypeScript package
docs/Documentation source

Contributing guides per SDK: Python · TypeScript · General