Home / Learn / What is KuzuDB
KuzuDB successor · 7 min read

What is KuzuDB?

KuzuDB was DuckDB for graphs before the term existed: an embedded, columnar, Cypher-queryable graph database born from university research — with 10+ enterprise users, VLDB publications, and then an Apple acquisition that froze it.

The origin: research → product

Kuzu (KuzuDB) grew out of graph data-management research at the University of Waterloo. The core insight, published at CIDR/VLDB 2023 (Jin et al. — read the paper), was that analytical graph workloads benefit enormously from columnar storage + vectorized (batch) execution — the same ideas that made DuckDB dominant for tables. A second VLDB paper followed in 2025: NaviX — a native vector index for graph DBMSs with robust predicate-agnostic search (Sehgal & Salihoglu), proposing a disk-based HNSW index with adaptive prefiltering so filtered kNN search stays fast at any selectivity.

📚 Two VLDB papers — and NaviX finished in LadybugDB

  1. Kuzu architecture (CIDR/VLDB 2023, Jin et al.): columnar + vectorized execution for property graphs — the "DuckDB for graphs" blueprint.
  2. NaviX (VLDB 2025, Sehgal & Salihoglu — arXiv:2506.23397): native HNSW vector index with predicate-agnostic prefiltering for filtered vector search inside the graph engine.

NaviX was only partially implemented when Kuzu was archived — the paper outlived the code. LadybugDB completed the NaviX implementation this year, shipping the native vector index the research promised: filtered kNN that evaluates the selection sub-query first and adapts its heuristic per vector, robust across selectivities. The lineage is now complete — architecture and vector search, paper to production.

📦 Embedded

In-process library (C++, Python, Node, Rust). No server to operate — pip install kuzu and go.

📊 Columnar

Compressed columns, morsel-driven parallelism. Scans & aggregations fly.

🔍 Cypher

openCypher dialect. MATCH (a)-[e]->(b) with explain & profiling.

Why developers loved it

# Kuzu (and LadybugDB) — Python in 3 lines
import kuzu
db = kuzu.Database("./mydb")
conn = kuzu.Connection(db)
conn.execute("MATCH (a:Person)-[:KNOWS]->(b) RETURN a.name, b.name LIMIT 10")

What happened: the Apple acquisition

KuzuDB's team was acquired by Apple. Open-source commits stopped, issues went unanswered, and the roadmap froze. For the 10+ enterprise teams running Kuzu in production — especially agentic AI in legal, medical, and finance — that meant security risk + migration urgency: no patches, no features, no support.

LadybugDB: the active KuzuDB successor

LadybugDB carries the same philosophy forward — embedded + columnar + Cypher + MIT — with active development and an AI-agent-first surface area:

KuzuDB (frozen)LadybugDB (active)
LicenseMITMIT, forever
EngineEmbedded, columnar, CypherEmbedded, columnar, Cypher ✓
MaintenanceHalted (Apple acquisition)Active development + releases
Agent surfaceSDKs onlySDKs + OpenAPI + MCP server
SupportNoneCommunity + enterprise contracts

Migration is one command on each side: EXPORT DATABASE in Kuzu, IMPORT DATABASE in LadybugDB — no CSV round-trip. Migration guide →

On Kuzu? Move to its maintained successor.

LadybugDB installs in one command. MIT open source, Cypher-compatible.