Rust-native embedded property graph database — SQLite for graphs.
Store nodes, relationships, and properties in a single local file. Query with Cypher. No server, no setup, no dependencies.
- Embedded — open a path, get a graph database. No daemon, no network.
- Cypher — openCypher TCK 100% pass rate (3 897 / 3 897 scenarios).
- Crash-safe — WAL-based storage with single-writer + snapshot-reader transactions.
- Multi-platform bindings — Rust, Python (PyO3), Node.js (N-API), CLI.
- Vector search — built-in HNSW index for hybrid graph + vector queries.
- Cross-binding parity gate —
examples-testhard-asserts Rust/Node/Python isomorphic behavior.
use nervusdb::Db;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let db = Db::open("/tmp/demo")?;
db.execute("CREATE (n:Person {name: 'Alice'})", None)?;
let rows = db.query("MATCH (n:Person) RETURN n.name", None)?;
println!("{} row(s)", rows.len());
Ok(())
}pip install maturin
maturin develop -m nervusdb-pyo3/Cargo.tomlimport nervusdb
db = nervusdb.open("/tmp/demo-py")
db.execute_write("CREATE (n:Person {name: 'Alice'})")
for row in db.query_stream("MATCH (n:Person) RETURN n.name"):
print(row)
db.close()cargo build --manifest-path nervusdb-node/Cargo.toml --releaseconst { Db } = require("./nervusdb-node");
const db = Db.open("/tmp/demo-node");
db.executeWrite("CREATE (n:Person {name: 'Alice'})");
const rows = db.query("MATCH (n:Person) RETURN n.name");
console.log(rows);
db.close();cargo run -p nervusdb-cli -- v2 write \
--db /tmp/demo \
--cypher "CREATE (a:Person {name: 'Alice'})-[:KNOWS]->(b:Person {name: 'Bob'})"
cargo run -p nervusdb-cli -- v2 query \
--db /tmp/demo \
--cypher "MATCH (a)-[:KNOWS]->(b) RETURN a.name, b.name"Write statements (
CREATE,MERGE,DELETE,SET) must useexecute_write/executeWriteor a write transaction. Callingquery()with a write statement raises an error.
nervusdb — public API crate (Db::open / query / execute)
nervusdb-query — Cypher parser, planner, executor
nervusdb-storage — WAL, page store, segments, compaction
nervusdb-api — GraphStore / GraphSnapshot traits
nervusdb-cli — command-line interface
nervusdb-pyo3 — Python binding (PyO3)
nervusdb-node — Node.js binding (N-API)
Storage layout: <path>.ndb (page store) + <path>.wal (redo log).
Transaction model: single writer + concurrent snapshot readers.
| Suite | Tests | Status |
|---|---|---|
| openCypher TCK | 3 897 / 3 897 | 100% |
| Rust unit + integration | 153 | all green |
| Python (PyO3) | 138 | all green |
| Node.js (N-API) | 109 | all green |
| examples-test parity (Rust + Node + Python) | 601 / 601 | all green |
- User Guide — API reference for all platforms
- Architecture — storage, query pipeline, crate structure
- Cypher Support — full compliance matrix
- Roadmap — current and planned phases
- CLI Reference — command-line usage
- Binding Parity — cross-platform API coverage
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -W warnings
bash scripts/workspace_quick_test.sh
bash scripts/binding_smoke.sh
bash scripts/tests/stability_window_fixture.sh
GITHUB_TOKEN="$(gh auth token)" \
bash scripts/stability_window.sh --mode strict --date 2026-02-16 \
--github-repo LuQing-Studio/nervusdb --github-token-env GITHUB_TOKEN