ferrovec
An in-browser vector store built as a Rust-to-WebAssembly HNSW engine that persists to the browser's private file system and stays consistent across tabs.
Most in-browser vector libraries keep an in-memory index that disappears on reload and can diverge once a second tab opens. ferrovec instead stores its HNSW graph on disk in the browser's Origin Private File System and uses a single-writer leader election over Web Locks and BroadcastChannel so multiple open tabs share one consistent store instead of silently diverging, rehydrating automatically when the store is reopened.
It supports incremental upsert-style inserts, tombstoned removals, and in-place compaction, so adding one vector does not require rebuilding the whole index. The core is a hand-rolled HNSW implementation in Rust with only serde and postcard as dependencies, compiling to roughly 33KB gzipped with a deterministic pseudo-random generator, no threads, and no unsafe code outside one audited kernel, plus a SIMD-accelerated distance path with a scalar fallback.
The npm package adds transformers.js auto-embedding and a three-line JavaScript API on top of the Rust and WebAssembly core, which is also published separately to Rust's crates.io registry.