
About the Project
OrchidDB is an embedded graph query engine written in Rust. Map your existing tables to nodes, relationships, and properties, then query them with Cypher, Gremlin, or SPARQL.
Graph queries, your choice of storage
Graph queries do not have to dictate how you store your data. Tables can represent nodes, edges, and properties while letting you choose schemas, indexes, and storage layouts that suit your workload. The challenge is supporting graph query semantics your SQL engine may not provide, such as traversal state, path tracking, and barriers.
OrchidDB decomposes graph queries into efficient SQL, then supplies the missing operations through its managed runtime and Apache Arrow data structures designed for zero-copy sharing. You get the best of both worlds: data organized for your workload, your database’s SQL optimizer, and the additional machinery needed for graph computation.
Three languages. Verified results.
We test OrchidDB against upstream Cypher, Gremlin, and SPARQL suites and publish the results, scope, and exclusions. All included tests pass.
openCypher TCK 2024.3 100%Gremlin1,511 / 1,511 tests
TinkerPop 3.7.4 Gherkin · OLTP 100%SPARQL974 / 974 in-scope tests
W3C SPARQL 1.0 / 1.1
SPARQL passes all 974 tests in scope, excluding protocol, serialization, entailment, and federation tests.
Explore the conformance results and methodology →How to Use OrchidDB
Define a graph over the data you already own, then use it in your application.
Create a graph
Connect your data lake or database, map tables to nodes and relationships, and query those relationships with Cypher, Gremlin, or SPARQL.
Your existing data
Postgres
Exposed as tables or views through DuckDB
OrchidDB Graph mapping
accounts- Account nodes
transfers- TRANSFERRED_TO relationships
Graph queries
MATCH (a:Account)
-[:TRANSFERRED_TO]->
(b:Account)
RETURN a.name, b.name
Works with your stack
Use Rust, Python, JavaScript/TypeScript, Java, Elixir, or C++. Map your tables, compile a graph query, and read Arrow batches from a connection you control.
Install OrchidDB
OrchidDB 0.1.0 is available. Packaged native binaries currently target macOS ARM64; source builds are available for other platforms.
Command line
Install the CLI with bundled DuckDB and default Iceberg support.
curl -fsSL https://install.orchiddb.com | bash
The first query installs the official Iceberg extension if needed. Run the mapped-table example in the quickstart.
Source and examples → · Documentation →
Version 0.1.0 · macOS ARM64 (Apple Silicon). Installs to ~/.local/bin with checksum verification. No Rust build or separate DuckDB installation required.
Rust
Add the compiler-only Rust client to your application.
cargo add orchiddb-client@0.1.0 --no-default-features
Your SqlSession returns native Arrow record batches. The driver stays in your application.
Python
Install the Python client from PyPI.
python -m pip install "orchiddb[arrow]==0.1.0"
The wheel includes the compiler for macOS 26+ on Apple Silicon. Supply your own database connection.
JavaScript / TypeScript
Install the typed Node.js client from npm.
npm install @orchiddb/client@0.1.0
Node.js 20+. The package includes the macOS ARM64 compiler. Supply your own engine and consume Arrow results.
Java
Add these dependencies to your Maven project (Java 17+).
<dependency>
<groupId>com.orchiddb</groupId>
<artifactId>orchiddb-java</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>com.orchiddb</groupId>
<artifactId>orchiddb-java</artifactId>
<version>0.1.0</version>
<classifier>macos-aarch64</classifier>
<scope>runtime</scope>
</dependency>
Maven downloads the compiler JAR. Call NativeSqlCompiler.load() to load it automatically—no manual binary download, library path, or Rust build. Version 0.1.0 supports macOS ARM64 JVMs only. Add your own JDBC driver.
Elixir
Add the Hex dependency to mix.exs, then run mix deps.get.
{:orchiddb, "~> 0.1.0"}
Set ORCHIDDB_NATIVE_LIBRARY to the matching compiler, then run mix run examples/compile.exs. Optional ADBC execution exposes an Arrow C Stream.
C++
Download the C++17 headers, CMake package, and compiled library.
Download C++ · macOS ARM64 · 0.1.0 ↓
find_package(OrchidDB CONFIG REQUIRED)
target_link_libraries(your_app PRIVATE OrchidDB::orchiddb)
Extract the archive and add its directory to CMAKE_PREFIX_PATH. Set ORCHIDDB_NATIVE_LIBRARY to the included lib/liborchiddb_compiler.dylib. No Rust compiler build required.
How to Participate
Explore the code, try a query, and share what you find. GitHub is the place to report problems, discuss ideas, and propose changes. The community page explains how to get involved and lists the channels planned for the project.
