Open Source
Explore the latest AI open-source projects from GitHub and HuggingFace.
Explore the latest AI open-source projects from GitHub and HuggingFace.
OpenLake is an Apache-2.0 distributed storage engine written in Rust on io_uring, built for one job: keeping GPUs fed during LLM inference and training. The repository opened on 27 April 2026 and has since reached roughly 2,309 stars and 420 forks, shipping steadily through v0.6.0 (21 July 2026) with v0.7 work already landing in main. The headline claim on the README is million+ IOPS within 1 ms — cache-like performance while remaining fully persistent and durable.
The expensive part of serving long-context LLMs is prefill. Every time a request arrives with a 128K-token prompt, the model recomputes the KV cache for tokens it may have already processed for a previous request. GPU memory is far too small to hold that cache at any meaningful scale, and conventional object storage is far too slow to serve it back inside a latency budget — so the cache gets thrown away and recomputed.
OpenLake's core proposition is a petabyte-scale KV cache pool co-located on the GPU hosts themselves. Each GPU node contributes its host RAM and NVMe to a shared cluster. The inference engine writes the KV once and reads it back in milliseconds, and a prefix computed on one GPU host can be served to any other node from the shared pool. The project reports a 66× speedup on time to first token for cached 128K-context requests.
The integration path is deliberately minimal — no code changes, just a connector and a config flag:
pip install openlake-vllm
openlaked
export PYTHONHASHSEED=0
vllm serve <model_name> --kv-transfer-config '{"kv_connector":"OpenLakeConnector", ...}'
By default openlaked offloads to the same host. Scaling to a fleet means starting each node with an RDMA config (kv_rdma_0.toml, kv_rdma_1.toml, …) and pointing vLLM workers at the node list in ID order. The README's demonstration runs Gemma4-31B on an H100 at a 256K context window with OpenLake enabled versus disabled.
KV cache offload is the flagship, but the same engine is pitched at the adjacent bottlenecks:
| Workload | What OpenLake provides |
|---|---|
| KV cache offload | Petabyte-scale cache co-located on GPU hosts, cutting prefill cost |
| VectorDB | Fast index building and vector serving |
| Checkpointing | Ultra-fast checkpoint write and restore for RL and ML runs |
| Model training | Small-file I/O and fast random reads to cut GPU idle time |
| Context storage | Massive conversation and memory stores for agentic retrieval |
It also runs as a plain S3-compatible object store. After a cargo build --release, any AWS CLI or S3 client can talk to it on port 9000 — aws --endpoint-url http://127.0.0.1:9000 s3 cp ./checkpoint.safetensors s3://demo/ works with no adaptation.
The design choices are all aimed at shortening and stabilizing the path from storage to GPU memory:
compio runtime per physical core, backed by Linux io_uring. Requests stay on the same core through the hot path, avoiding work stealing and cross-core contention — the discipline that makes the sub-millisecond tail latency claim plausible rather than a best-case average.That last point is what separates OpenLake from a cache: losing a node does not lose the data.
OpenLake is Linux-first by design, and the reason is architectural rather than incidental — io_uring, GPUDirect Storage, and RDMA are Linux interfaces. macOS is supported for development only and explicitly cannot do RDMA; Windows goes through WSL2. Anyone evaluating on a laptop is testing the TCP path, not the one the benchmarks describe.
The headline performance also assumes hardware most teams do not have on hand. The full picture needs NVMe with GPUDirect Storage support and an InfiniBand or RoCE fabric; on commodity TCP networking the numbers will look different, and the README does not publish that comparison. The KV-cache quickstart is a clean pip install, but the object store still requires building from source with a system dependency list (clang, cmake, libhwloc-dev, libudev-dev) and a Rust 1.91+ toolchain — there is no prebuilt binary or container image in the quickstart path.
Maturity is the other consideration: this is a v0.x project three months old with 112 open issues, and recent commits include fixes to fundamentals like RDMA receive-slot reuse. Config formats and CLI surfaces should be expected to move between minor versions.
OpenLake is attacking a genuine and expensive bottleneck — recomputed prefill is one of the largest sources of wasted GPU-seconds in production LLM serving — and it does so with an architecture whose every choice (io_uring, core pinning, GPUDirect, paced RDMA, erasure coding) is coherent with the sub-millisecond target rather than bolted on. The vLLM connector making it a config change rather than a migration is what makes it worth an afternoon of evaluation. Teams running multi-node GPU fleets with long, repetitive prompts and RDMA fabric already in place should benchmark it directly against their current prefix-caching setup. Teams on single nodes, commodity networking, or without the appetite for a v0.x dependency in the storage layer should watch it and revisit at 1.0.