Our story
Why we built ferrovec
We started with a frustration, not a product.
For years the promise was that WebAssembly would let Rust reshape the frontend — and for years, it didn't happen. So we ran the numbers across a hundred sources, and the verdict surprised us. Rust wasn't losing on speed; on raw DOM benchmarks it was already beating React. It was losing on everything human — hiring, tooling, the daily developer loop, an ecosystem a fraction the size.
But buried in that research was a pattern we couldn't unsee. Every WebAssembly app that did win — Figma, Photoshop on the web, the spreadsheet engines, the video tools — shared one shape: a Rust or C++ engine on the inside, a plain JavaScript API on the outside. None of them ever asked a web developer to learn a new language. They made the language invisible.
The goal was never to replace React. It was to find the one job WebAssembly does ten times better — and hide it behind an API a JavaScript developer already knows.
We found that job in the sudden, explosive need for AI features in ordinary web apps. Embeddings. Semantic search. “Chat with your notes.” The kind of thing that today means shipping your users' private data to someone else's server. We asked what it would take to do it entirely on-device — no server, no API key, nothing leaving the tab — and hit a wall. The embedding models were there. But the piece that stores and searches those vectors, fast, at scale, and remembers them between sessions — that piece didn't exist. The libraries that tried were abandoned, or brute-force, or made you rebuild the entire index just to add a single item.
So we built it. ferrovec is the missing piece: a real nearest-neighbor engine in Rust, small enough to ship to a browser, that saves to disk and never forgets. Private by default, because the data never moves. Offline by default, because there's no server to call. Invisible by default — because you write three lines of JavaScript and never once think about the Rust underneath.
That's why we're here. Not to win a language war — but to give every web developer a piece of infrastructure that should have existed already, and to prove that the engine-inside, API-outside pattern is how Rust actually wins the web.
crates.io →