High-performance storage server on cloud object stores
╔═ lanbuffer ═══════════════════════════════╗
╔════════════╗ ║ ║
║ client(s) ║──API──▶ ║ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━┓ ║
║ ║ ║ ┃ Memory / ┃◀──▶ ┃ Lance ┃ ║
╚════════════╝ ║ ┃ NVMe Cache ┃ ┗━━━━━━━━━━━━━━┛ ║
║ ┗━━━━━━━━━━━━━━━┛ │ ║
║ ┌───────────▼───────┐ ║
║ │ Object Storage │ ║
║ │ (S3) │ ║
║ └───────────────────┘ ║
╚═══════════════════════════════════════════╝
What is LanBuffer?
LanBuffer is a fast, object-storage-first retrieval engine inspired by turbopuffer.
It keeps state in S3-compatible object storage and uses RAM plus NVMe as a compute-side cache, so hot data stays fast while cold data stays cheap.
LanBuffer builds on Lance for vector search, full-text search, and hybrid retrieval, and also exposes FS and KV interfaces for integration.
query -> vector search + full-text search -> hybrid merge -> top-k docs
Multiple protocols, one core
A single core powers multiple interfaces: a LanceDB-compatible Table API for retrieval, plus filesystem (NFS/9P/NBD) and KV APIs.
Pick the interface you need without running separate systems.
┌──────────────────────────────┐
HTTP :7001 ───▶│ Table API (vector / fts) │
HTTP :7002 ───▶│ KV API (CRUD / scan) │
NFS/9P/NBD ───▶│ FS API │
gRPC :7000 ───▶│ Admin (checkpoints, stats) │
└──────────────┬───────────────┘
▼
┌──────────┐
│ LanBuffer │
└────┬─────┘
▼
Cache (RAM + NVMe)
▼
Object Storage (S3)
Built-in encryption, compression, and caching
Transparent at-rest encryption (XChaCha20-Poly1305 with Argon2id-derived keys).
Transparent compression (LZ4 or Zstd).
A hot cache (RAM + NVMe) accelerates frequently accessed blocks and query-time work.
Write: client -> compress -> encrypt -> cache -> object store
Read : object store -> cache (hot) -> decrypt -> decompress -> client
\\-> cache (miss) ------------------------------^
Point-in-time recovery and cloud-native
Named checkpoints let you snapshot and restore to a previous state.
Designed for object storage backends (S3/R2/GCS/Azure) with stateless compute nodes and horizontally scalable capacity.
time --------------------------------------------------------->
t0 write data
t1 checkpoint "before-upgrade" o
t2 write more data
t3 checkpoint "daily" o
restore("before-upgrade") -> state at t1