v2.0.0 Released

Local-First Embedded
KV + Vector Database

SSD-aware, append-only storage with deathtime-cohort compaction. Built in Rust. Ships as a library. No server required.

v2.0.0 2026-09-26

Breaking: full-text search extracted to edgestore-text, TLA+ formal spec, paged vector scans

TextEngine has been removed from the core crate and replaced by TextIndex in the new edgestore-text crate — BM25 and all NLP dependencies are now opt-in. VectorPage enables cooperative async paged flat scans for large vector collections. A TLA+ formal spec (edgestore.tla) validates WAL, memtable, flush, and crash-recovery invariants with TLC model checking.

Read Changelog

Everything you need, nothing you don't

EdgeStore bundles KV storage, vector search, full-text search, and replication into one compact embedded library.

KV Store

Ordered byte keys, namespaced isolation, range scans, prefix queries. Single-writer with group commit.

TTL & Lazy Expiry

put_with_ttl for time-bound records. Expired cohorts compact with zero live-data relocation.

Transactions

Atomic multi-record batches. Begin, commit, rollback. WAL-backed durability with fsync group commit.

Vector Search

Flat SIMD scan and HNSW approximate search. Cosine, L2, dot product. f32, f16, i8 dtypes.

Full-Text Search

BM25 ranking on a merged inverted index per namespace. Incrementally updated on write. O(1) search read. English tokenization, faceting, typo tolerance (Levenshtein distance ≤ 1).

Replication

Merkle-based delta sync via edgestore-repl. Content-addressed segments (BLAKE3). HTTP + S3 transports. Optional — core works standalone.

Read-Only Replicas

Engine::open_readonly rejects all writes at the API level. ReplicatedEngine in edgestore-repl wires primary + replica in two lines.

Tiered Read Fast Path

AsyncTieredEngine reads hot-window data under a read lock. Concurrent readers never block behind the single writer unless an archived segment must be fetched.

Cost Accounting

_with_stats variants on every read return a QueryStats struct. Agent loops and quota systems know exactly how many bytes and segments each query touched.

Bounded Scans

range_budgeted and prefix_budgeted accept a ScanBudget (max items + max bytes) and stop early. Returns a continuation cursor for safe pagination in constrained environments.

Search Snippets

text.search_with_snippets returns context windows around matched terms. Accurate character-offset tokenization drives highlighting and RAG context extraction.

SSD-First Architecture

EdgeStore uses deathtime-cohort compaction — a technique from VLDB 2026 research — to group records by their predicted invalidation time instead of size tiers.

When a cohort fully expires, compaction reclaims space with zero live-data reads or writes. This drives device write amplification toward 1.0, a 10-30x improvement over level-based LSM trees.

Read how the research shaped EdgeStore
Application Layer (KV / Vector / Text)
Engine — Single Writer + Group Commit
WAL (LZ4) + Memtable (BTreeMap)
Segment Store (ZSTD, xor filters, sparse index)
SSD / NVMe (StorageBackend trait)
Replication + S3 Archive (edgestore-repl, optional)

Installation

Core Library

KV + vector + text. Sync. No server.

cargo add edgestore

Async Wrapper

Thin tokio wrapper for async runtimes.

cargo add edgestore-tokio

Replication + S3

HTTP delta sync + S3 cold archive. Optional.

cargo add edgestore-repl --features s3

Tiered Storage

Local hot cache + transparent S3 read-through when data exceeds local disk.

cargo add edgestore-tier

CLI Tool

Admin commands: put, get, compact, export.

cargo install edgestore-cli