mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dataevaluationupdated 26 Aug 2026

memvid review

Memvid is an embeddable Rust memory store that keeps content, metadata, a write-ahead log, and search indexes inside one `.mv2` file. It is meant to give agents portable lexical, vector, and time-aware recall without running a separate database server.

+9stars / 7d
Verdict

Our Memvid build finished in 105 seconds, but the full test run hit the 900-second cap with 3 lexical tests still running beyond 60 seconds. Try it for single-writer, offline memory where copying one .mv2 file is genuinely useful. Choose a service database for concurrent agents, and do not put irreplaceable memory into this format until backups, verification, recovery, and the slow lexical cases pass on your own workload.

We ran it

Lab card: what happened when we ran memvidScreenshot of memvid (www.memvid.com)
Install✓ · 59s249 packages
Build✓ · 105s
Tests✗ timed out · 900sran, no count parsed
Repo217 files~70,625 lines of source · 9.6 MB · 2 CI workflows · tests dir

Answers from our run

Does memvid build from source?

Dependencies installed in 59 seconds (249 packages), and the build succeeded in 105 seconds. We cloned commit e6bd9f7 into a clean Debian container with 3 CPUs and no project-specific setup.

Do memvid's tests pass?

We could not finish them: the suite was still running after 15 minutes in our container.

Who should not use memvid?

Multi-agent systems that need several processes writing at once: issue 218 says the current design has a single-writer limitation and requires a queue or central writer.

What are the alternatives to memvid?

LanceDB, Qdrant, Chroma. Our Memvid build finished in 105 seconds, but the full test run hit the 900-second cap with 3 lexical tests still running beyond 60 seconds.

Setup3/559-second install and clean build, but full tests timed out
Docs4/5Format, flags, models, build, tests, and examples are documented
Community4/516,448 stars and active issues, though main last pushed July 14
Maturity2/5v2 format is documented, but WAL history and test timeout warrant care

Discussed on

  1. hnShow HN: I compressed 10k PDFs into a 1.4GB video for LLM memory61 points
  2. hnClaude Brain33 points
  3. hnI accidentally built a vector database using video compression15 points
  4. hnMemvid – Video-Based AI Memory9 points
  5. hnShow HN: I accidentally built "SQLite for AI memory" (Memvid)3 points

Who it’s for

Rust developers building offline or single-process agent memory.
Desktop and edge applications that need a portable file rather than a network database.
Teams that value append-only history, checksums, timeline inspection, and file-level backup.
Builders willing to select feature flags and manage local embedding or media models.

Who it’s NOT for

Multi-agent systems that need several processes writing at once: issue 218 says the current design has a single-writer limitation and requires a queue or central writer.
Teams that need a quick, bounded full test run before adoption: our cargo test command timed out after 900 seconds.
Large corpora that may exceed default index limits: issue 240 says the fixed 512 MiB index and time-index caps can block opening files with a few hundred thousand frames.
Buyers expecting a one-file format to remove backup risk: v2.0.140 fixed WAL corruption during sustained growth, so recovery copies and file verification still matter.
Users expecting local vector search with no model setup: the README requires manually downloading ONNX model and tokenizer files.
Services that need built-in clustering, remote replication, access control, and concurrent administration: Memvid is an embedded file library, not a distributed database.

Setup reality

Our sandbox install at commit e6bd9f7 succeeded in 59 seconds, resolving 249 Rust packages. The build passed in 105 seconds. Tests did not finish within the 900-second cap; the final log showed many successful cases and three lex tests still running after 60 seconds, without a final pass count.

Core lexical storage needs Rust 1.85 or newer. Vector, PDF, image, audio, date parsing, parallel ingestion, encryption, and API embeddings are separate feature flags. Local vectors require manually downloaded ONNX model and tokenizer files; OpenAI embeddings require an API key.

The checkout has 217 files and about 70,625 source lines. A single file simplifies copying, but one writer owns mutations. Large indexes, feature-specific models, backups, verification, and recovery tests remain application responsibilities.

One .mv2 file carries data, indexes, and history

Memvid packages content, metadata, checksums, a write-ahead log, data segments, lexical and vector indexes, a time index, and a table of contents into one file. Writes append immutable frames, while commits establish a recoverable state. Applications can search current content, inspect a timeline, or branch from an earlier state. The appeal is operational: an agent's memory can be copied or archived as a file instead of exported from a database service.

The file is still a database, with the failure modes that implies. The format reserves a 4 KB header and an embedded WAL region that can grow from 1 to 64 MB. Indexes and payload offsets must remain consistent across writes and recovery. A backup copied during the wrong moment or a damaged file can affect the whole memory set. Use the verification API, keep versioned copies, and test reopening those copies before calling portability a recovery plan.

Lexical, vector, media, and encryption features are optional

The base crate can be extended through Cargo features. lex adds Tantivy BM25 search, vec adds HNSW vectors and local ONNX text embeddings, and other flags cover PDF extraction, CLIP image embeddings, Whisper transcription, temporal parsing, parallel segments, encrypted capsules, and text cleanup. This keeps a basic build from inheriting every media dependency, while letting one file hold several retrieval modes.

Local vector search is not automatic after adding the feature. The README instructs users to download an ONNX model and tokenizer manually. Its listed text models range from about 120 MB to 1.3 GB and use 384 to 1,024 dimensions. OpenAI embeddings are another feature and require an API key. Memvid can bind a file to a model name to prevent accidental mixing, which is important because indexes built with one embedding space cannot be queried meaningfully with another.

What happened when we ran it

Our sandbox resolved 249 Rust packages in 59 seconds at commit e6bd9f7. The build completed successfully in 105 seconds. The checkout itself contained 217 files, about 70,625 lines of source, and 9.6 MB. Those results came from an unprivileged Rust container with 3 CPUs, 12 GB of RAM, and no secrets.

The test command did not finish within our 900-second cap. The final log showed many named tests ending in ok, but no final count was produced before termination. Three lexical-feature cases had each been running for more than 60 seconds: persistence and search, single-scope operation, and operation through a mutex wrapper. The log does not show whether they were deadlocked, merely slow, or waiting on another condition.

Our run therefore proves that the measured commit installs and builds in the stated container. It does not prove the complete suite passes, and the timeout is especially relevant because all three visible stragglers concern the lexical path. Before adoption, run those cases individually with the exact features, filesystem, corpus size, and release profile intended for deployment. Do not convert the 900-second timeout into a search-latency number; it is a test-completion finding only.

v2.0.140 repaired WAL corruption during growth

The latest release, v2.0.140 from May 27, 2026, fixed a serious storage bug. Sustained put-and-commit work that expanded the embedded WAL could leave a cached payload offset pointing into the newly grown WAL region. Index rebuilding could then overwrite live WAL data, producing checksum mismatches and, in some reports, sparse-file growth beyond the expected end. The fix advances the cached offset with the moved regions and adds a regression case.

The same release fixed temporary Tantivy directories that were left behind after index rebuilds, particularly on Windows. These are credible maintenance fixes with clear causes. They also place the single-file promise in context: avoiding sidecars does not make file-layout code simple. A production team should pin v2.0.140 or newer, preserve older recoverable copies during upgrades, and include repeated WAL growth in its own storage test.

One writer is the clearest architecture limit

Issue 218 describes a multi-agent application where the main session, subagents, and background consolidation all need to write the same memory. The current answer is effectively a central writer or queue. Multiple readers are easier; concurrent mutation is the problem. If the application already needs a durable write service to serialize access, much of the zero-infrastructure advantage disappears and a client-server database becomes more competitive.

Large files have another boundary. Issue 240 says the default maximum sizes for the serialized index and time index are each 512 MiB. The reporter found that a file with a few hundred thousand frames could exceed the cap and fail during open before any query ran. A pull request proposes compile-time tiers up to 4 GiB, which also raise the allocation bound for every file that build opens. Capacity planning belongs in format selection, not after the first oversized capsule.

The README's latency claims need workload reproduction

Memvid's README advertises a 0.025 ms median and 0.075 ms 99th-percentile latency, plus large accuracy and throughput gains. It links those claims to a LoCoMo evaluation using 10 long conversations and an LLM judge. Those figures are project-published benchmarks, not results from our sandbox. Hardware, enabled indexes, corpus shape, cache state, query mix, and comparison systems all matter before applying them to an agent.

The useful decision is narrower. Our 59-second install and 105-second build make the Rust library accessible to evaluate, while the 900-second test timeout prevents a clean quality signal. Memvid is interesting for an offline desktop tool or one agent process that benefits from file transfer and time travel. Shared agents, very large corpora, or high-stakes records should start with concurrency, recovery, and capacity tests, then compare a service database using the same documents and queries.

Alternatives

ProjectWhat it isPick it when
LanceDB gh↗An embedded multimodal database built on the Lance columnar format.pick this instead when table-like data, vector workloads, and a wider data-engine surface matter more than one memory capsule.
Qdrant gh↗A Rust vector search engine commonly run as a service with filtering and distributed options.pick this instead when concurrent clients, network access, and service operations are requirements.
Chroma gh↗An AI-oriented retrieval database with local and client-server usage paths.pick this instead when a familiar Python retrieval API and shared service model matter more than file portability.
USearchA compact similarity-search library with bindings for several languages.pick this instead when the main job is a small embedded vector index rather than versioned agent memory.

What people are saying

  1. [github-trending] memvid/memvid

Sources

  1. Memvid repository
  2. Memvid v2.0.140 release
  3. Memvid MV2 file format
  4. Concurrent writer request
  5. Index size limit request
  6. Index size tier proposal

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →