A local-first, real-time, edge-to-cloud hybrid database for multi-modal workloads
5.2K
Eight database engines in a single Rust binary. One SQL dialect. Zero network hops between vector search, graph traversal, document storage, columnar analytics, timeseries, key-value, full-text search, and multi-dimensional arrays.
Quickstart · Docs · GitHub · Discord
NodeDB replaces the combination of PostgreSQL + pgvector + Redis + Neo4j + ClickHouse + Elasticsearch with a single process. Graph queries that feed vector search, full-text ranking, and columnar aggregation execute in one engine with shared storage, shared memory, and one planner.
docker run -d \
--name nodedb \
-p 6432:6432 \
-p 6433:6433 \
-p 6480:6480 \
-v nodedb-data:/var/lib/nodedb \
farhansyah/nodedb:latest
Connect with any PostgreSQL client:
psql -h localhost -p 6432
CREATE COLLECTION users;
INSERT INTO users (name, email, age) VALUES ('Alice', '[email protected]', 30);
-- Object literal syntax
INSERT INTO users { name: 'Bob', email: '[email protected]', age: 25 };
SELECT * FROM users WHERE age > 25;
New here? Start with the Quickstart on the official documentation site.
| Property | Value |
|---|---|
| Base image | cgr.dev/chainguard/glibc-dynamic (Wolfi, distroless) |
| User | nonroot (uid/gid 65532) |
| Architectures | linux/amd64, linux/arm64 |
| Approx. size | ~30 MB compressed |
| Vulnerabilities | Daily-rebuilt base, typically 0 high CVEs |
The image ships only glibc, libgcc, ca-certificates, and the nodedb binary. No shell, no package manager, no curl. Healthchecks are handled by the binary's built-in nodedb healthcheck subcommand.
| Tag | Use case |
|---|---|
latest | Latest stable release |
0.1 | Latest 0.1.x release (recommended for pinning) |
0.1.0 | Specific patch version |
beta | Latest beta build |
io_uring, run with elevated capabilities:
docker run --cap-add SYS_NICE --ulimit memlock=-1:-1 ...
| Port | Protocol | Purpose |
|---|---|---|
6432 | pgwire | PostgreSQL clients (psql, drivers) |
6433 | native | NodeDB native MessagePack protocol |
6480 | HTTP | REST API + /health + /metrics |
9090 | WebSocket | CRDT sync from NodeDB-Lite clients |
4317 | gRPC | OTLP traces/metrics receiver |
4318 | HTTP | OTLP traces/metrics receiver |
/var/lib/nodedb # data directory (WAL, segments, snapshots)
Named volumes (recommended) work out of the box — they inherit nonroot ownership from the image:
docker run -v nodedb-data:/var/lib/nodedb ...
Bind mounts require manual ownership setup since the container runs as uid 65532:
sudo chown -R 65532:65532 /path/on/host
docker run -v /path/on/host:/var/lib/nodedb ...
| Variable | Default | Description |
|---|---|---|
NODEDB_HOST | 0.0.0.0 | Bind address |
NODEDB_DATA_DIR | /var/lib/nodedb | Data directory path |
NODEDB_CONFIG | (unset) | Path to a TOML config file |
NODEDB_LOG_FORMAT | text | text or json |
RUST_LOG | warn | Log level (e.g. info, debug) |
NodeDB writes structured logs to stderr. Capture them with the standard Docker tooling:
docker logs -f nodedb # follow
docker logs --tail 100 nodedb # last 100 lines
# JSON output for log aggregators (Loki, Datadog, etc.)
docker run -e NODEDB_LOG_FORMAT=json ... farhansyah/nodedb:latest
The image includes a built-in HEALTHCHECK that probes /health every 10 seconds. Status is visible via docker ps:
docker ps --filter name=nodedb --format 'table {{.Names}}\t{{.Status}}'
To run the probe manually:
docker exec nodedb /usr/local/bin/nodedb healthcheck
For a multi-node Raft cluster, mount a config file specifying peers:
docker run -d \
--name nodedb-1 \
-p 6432:6432 -p 6433:6433 -p 6480:6480 \
-v nodedb-1-data:/var/lib/nodedb \
-v $(pwd)/node1.toml:/etc/nodedb/nodedb.toml:ro \
-e NODEDB_CONFIG=/etc/nodedb/nodedb.toml \
farhansyah/nodedb:latest
Full clustering setup, joining new nodes, TLS bootstrapping, and operator commands (regen-certs, rotate-ca, join-token) are documented at nodedb.dev/docs.
The Docker image is provided for convenience. For maximum performance — especially io_uring throughput, jemalloc arena pinning, and TPC core affinity — run the native binary directly. Container runtime overhead and cgroup limits can interfere with the Thread-per-Core data plane. See the GitHub repo for native install instructions.
| Engine | Replaces | Capability |
|---|---|---|
| Vector | pgvector, Pinecone, Weaviate | HNSW, SQ8/PQ quantization, adaptive bitmap pre-filtering |
| Graph | Neo4j, Amazon Neptune | CSR adjacency, 13 algorithms, Cypher-subset MATCH, GraphRAG |
| Document | MongoDB, CouchDB | Schemaless (CRDT) or Strict (Binary Tuples, O(1) field access) |
| Columnar | ClickHouse, DuckDB | Per-column codecs (ALP, FastLanes, FSST), predicate pushdown |
| Timeseries | TimescaleDB, InfluxDB | ILP ingest, continuous aggregation, PromQL |
| Spatial | PostGIS | R*-tree, geohash, H3, OGC predicates, hybrid spatial-vector |
| Key-Value | Redis, DynamoDB | O(1) lookups, TTL, sorted indexes, SQL-queryable |
| Full-Text Search | Elasticsearch | BMW BM25, 27-language support, CJK bigrams, hybrid vector fusion |
| Array (NDArray) | TileDB, Zarr | Multi-dimensional tiles, Z-order indexing, bitemporal support |
Detailed engine docs at nodedb.dev/docs.
NodeDB speaks six protocols on a single binary: pgwire (PostgreSQL), HTTP/REST, WebSocket, RESP (Redis), ILP (InfluxDB line protocol), and native MessagePack.
v0.1.0 — Public Beta (2026-05-07). All eight engines are feature-complete. Wire protocols (pgwire, HTTP, native, RESP, ILP, WebSocket) are stable — clients written against 0.1.0 will keep working through 1.0.
v1.0.0 — Production-ready (target: 2026-07-07). API/SQL/wire-protocol/on-disk-format stability, performance SLAs, and a third-party security audit.
ndb CLI: github.com/NodeDB-Lab/nodedb-cliNodeDB uses a dual-license model:
nodedb-types, nodedb-vector, nodedb-graph, nodedb-fts, nodedb-spatial, nodedb-codec, nodedb-columnar, nodedb-array, nodedb-sql, nodedb-client, nodedb-query, nodedb-strict) — Apache 2.0.nodedb, nodedb-wal, nodedb-raft, nodedb-cluster, nodedb-bridge, nodedb-mem, nodedb-crdt) — Business Source License 1.1. Free for any use except offering NodeDB as a hosted database service. Converts to Apache 2.0 on 2030-05-01.Content type
Image
Digest
sha256:84b5f3594…
Size
52.8 MB
Last updated
about 2 months ago
docker pull farhansyah/nodedb