nodedb 0.0.0-beta.1

Local-first, real-time, edge-to-cloud hybrid database for multi-modal workloads
Documentation
[package]
name = "nodedb"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
readme.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Local-first, real-time, edge-to-cloud hybrid database for multi-modal workloads"

[[bin]]
name = "nodedb"
path = "src/main.rs"

[lib]
name = "nodedb"
path = "src/lib.rs"

[dependencies]
# Internal foundation crates
nodedb-types = { workspace = true }
nodedb-columnar = { workspace = true }
nodedb-bridge = { workspace = true }
rust_decimal = { workspace = true }
nodedb-cluster = { workspace = true }
nodedb-raft = { workspace = true }
nodedb-wal = { workspace = true }
nodedb-mem = { workspace = true }
nodedb-document = { workspace = true }
nodedb-query = { workspace = true }
nodedb-crdt = { workspace = true }
nodedb-codec = { workspace = true }

# Async runtime (Control Plane)
tokio = { workspace = true }

# Error handling & diagnostics
thiserror = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }

# Serialization & config
serde = { workspace = true }
toml = { workspace = true }
anyhow = { workspace = true }
serde_json = { workspace = true }
redb = { workspace = true }
crc32c = { workspace = true }
rmp-serde = { workspace = true }
rmpv = { workspace = true }
rkyv = { workspace = true }
roaring = { workspace = true }
rust-stemmers = { workspace = true }
unicode-normalization = { workspace = true }
tempfile = { workspace = true }
nexar = { workspace = true }
memmap2 = { workspace = true }

# CRDTs (needed for LoroValue in engine layer)
loro = { workspace = true }

# Feature-gated dependencies
regex = { workspace = true, optional = true }
prost = { workspace = true, optional = true }
snap = { workspace = true, optional = true }
flate2 = { workspace = true, optional = true }
tonic = { workspace = true, optional = true }

# Password hashing & cryptography
argon2 = { workspace = true }
sha2 = { version = "0.10", features = ["oid"] }
md5 = { workspace = true }
hmac = { workspace = true }
base64 = { workspace = true }
getrandom = { workspace = true }
aes-gcm = { workspace = true }

# Cold storage
parquet = { workspace = true }
object_store = { workspace = true }
bytes = { workspace = true }

# TLS & crypto
tokio-rustls = { workspace = true }
rustls-pemfile = { workspace = true }
x509-parser = "0.16"
pem = "3"
rsa = "0.9"
p256 = { workspace = true }
p384 = { workspace = true }
reqwest = { workspace = true }

# PostgreSQL wire protocol
pgwire = { workspace = true }
async-trait = { workspace = true }
futures = { workspace = true }
async-stream = { workspace = true }

# HTTP API
axum = { workspace = true }
axum-server = { workspace = true }

# WebSocket (sync endpoint)
tokio-tungstenite = { workspace = true }

# Compression
zstd = { workspace = true }

# System calls (eventfd for TPC wake)
libc = { workspace = true }

# Query engine (Control Plane SQL/DSL planning)
datafusion = { workspace = true }
datafusion-common = { workspace = true }
datafusion-expr = { workspace = true }
datafusion-physical-plan = { workspace = true }

# Memory allocator
tikv-jemallocator = { workspace = true }
tikv-jemalloc-ctl = { workspace = true }

[dev-dependencies]
tokio = { workspace = true, features = ["test-util"] }
rand = "0.8"
tempfile = "3"
tokio-postgres = { workspace = true }
proptest = "1"

[features]
default = []
promql = ["dep:regex", "dep:prost", "dep:snap"]
otel = ["dep:prost", "dep:flate2", "dep:tonic"]
grafana = []
monitoring = ["promql", "otel", "grafana"]