OrchidDB ink crest

OrchidDB

An embedded graph query engine written in Rust

Cypher·Gremlin·SPARQL

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.

CypherGremlinSPARQL
Shared graph plan Graph IR → SQL IR
DuckDB SQL executionDataFusion Remaining execution stages
Iceberg Data LakeMapped tables · via DuckDB

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.

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

Data lake Apache Iceberg Iceberg tables · Parquet files
Databases
DuckDB
Tables · views · SQL sources

Exposed as tables or views through DuckDB

OrchidDB Graph mapping

accounts
Account nodes
transfers
TRANSFERRED_TO relationships
Account Alice has a TRANSFERRED_TO relationship to Account Bob. AliceBob TRANSFERRED_TO AccountAccount Columns become properties.

Graph queries

CypherGremlinSPARQL
MATCH (a:Account)
  -[:TRANSFERRED_TO]->
  (b:Account)
RETURN a.name, b.name
AliceBob
Explore the connections in your data.
Define your first mapping →

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.

RustNative applications
PythonNotebooks and data tools
JavaScript / TypeScriptNode.js applications
JavaJVM applications
ElixirBEAM applications · ADBC
C++Native applications · Arrow C
Your applicationServices · notebooks · data tools OrchidDB clientMap · compile SQL Your engineExecute · return Arrow
Explore clients and examples →

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.

Download macOS ARM64 → · Build from source →

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.

Source and examples → · Documentation →

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.

Source and examples → · Documentation →

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.

Source and examples → · Documentation →

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.

Source and examples → · Documentation →

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.

Source and examples → · Documentation →

C++

Download the C++17 headers, CMake package, and compiled library.

Download C++ · macOS ARM64 · 0.1.0 ↓

SHA-256 checksums

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.

Source and examples → · Documentation →

Full installation guide →

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.