nedb-engine
NEDB v2 — content-addressed DAG storage engine with NQL and HTTP server
This crate ships the nedbd binary — the NEDB v2 DAG HTTP server. Install it, point it at a data directory, and any language can speak to it over HTTP/JSON.
What is NEDB v2?
NEDB v2 replaces the append-only log (AOF) with a content-addressed Merkle DAG:
- Every document version is an immutable, BLAKE2b-hashed object. Nothing is ever overwritten.
- Every write produces a new chain head — a BLAKE2b commitment over the entire database history.
- Time-travel: read any document
AS OF seq Nto see exactly what it contained at that point. - Causal provenance: documents link to their causal parents via
caused_byhashes.TRACE caused_bywalks the full causal graph backward. - TRAVERSE: named graph relations via
__links__.FROM person WHERE _id = "robert" TRAVERSE parent_ofreturns linked nodes. - O(1) warm start: a
MANIFESTfile storesseq+ Merkle head so restarts never re-scan the entire object store. - Instant cold start: the daemon accepts connections immediately; background scan loads objects incrementally.
- AES-256-GCM at rest: optional symmetric encryption with a double-envelope key structure (TMK wraps DEK).
Install
The nedbd binary lands in ~/.cargo/bin/. Make sure that's on your PATH.
To verify:
Usage
nedbd [OPTIONS] [data_dir]
| Argument | Default | Description |
|---|---|---|
data_dir |
./nedb-data |
Directory for database files |
--dag |
off | Use the v2 content-addressed DAG engine |
--doctor |
— | Diagnose environment, print fix commands |
Environment variables
| Variable | Default | Description |
|---|---|---|
NEDBD_HOST |
127.0.0.1 |
Bind address |
NEDBD_PORT |
7070 |
HTTP port |
NEDBD_TOKEN |
— | Bearer token for auth (optional) |
NEDB_TMK |
— | 64-char hex master key for AES-256-GCM encryption at rest |
NEDBD_MEMORY |
— | 1 = pure in-memory mode (no disk I/O) |
NEDBD_DAG |
— | 1 = same as --dag flag |
HTTP API
All endpoints return JSON. Auth: Authorization: Bearer <token> if NEDBD_TOKEN is set.
GET /health
GET /v1/databases
POST /v1/databases {name, init?}
GET /v1/databases/<name>
DELETE /v1/databases/<name>
POST /v1/databases/<name>/put {coll, id, doc, caused_by?}
POST /v1/databases/<name>/query {nql}
POST /v1/databases/<name>/link {frm, rel, to}
POST /v1/databases/<name>/neighbors {node, rel}
GET /v1/databases/<name>/verify
POST /v1/databases/<name>/checkpoint
NQL — NEDB Query Language
-- Basic queries
FROM person LIMIT 10
FROM driver WHERE status = "active"
FROM driver WHERE rating >= 4.5 ORDER BY rating DESC
-- Time-travel
FROM will WHERE _id = "evans_will_2019" AS OF 5
-- Causal trace (walks caused_by links backward)
FROM event WHERE _id = "probate_filing" TRACE caused_by
-- Graph traversal
FROM person WHERE _id = "robert" TRAVERSE parent_of
Example: The Will — causal DAG in action
=
=
return
=
# Robert writes his will
=
=
# Amendment — chains off v1
=
# TRACE proves the amendment links back to the original
=
=
=
# → both versions + Robert's testator record, in causal order
Python companion
The nedb-engine PyPI package ships the same server binary bundled in the wheel, plus:
- Pure-Python AOF engine (
NEDBclass) - Embedded v2 DAG API (
nedb._native.NedbCore) on supported platforms nedbdconsole script
# Use embedded API (Linux/macOS/Windows CPython)
# Use HTTP mode (any platform, including MSYS2/MinGW)
NEDB_URL=http://localhost:7070
# Diagnose
License
BUSL-1.1 — Business Source License. Free for development and evaluation; production use requires a commercial licence from INTERCHAINED, LLC.
Built by INTERCHAINED, LLC × Claude Sonnet 4.6