WARM

Hybrid search, graph indexing, and vector-symbolic memory.

Local, encrypted, provenance-aware memory for AI agents. Search and memory that run inside your app, on your machine. No service calls, no telemetry.Runs inside your app, on your machine. No service calls.

Why it exists

Local first

A library you link into your agent, not a service you call. Search, memory and storage run in your process on your disk, with no network calls and no telemetry.

Encryption in the open engine

AES-256-GCM at rest, keyed by Argon2id, covering the log, index caches and stored text. It is part of the Apache-2.0 engine, not an enterprise add-on.

Provenance you can verify

A signed audit log and COSE, SCITT and C2PA statements over Ed25519 with W3C DID identity record what an agent stored, and when, in formats others can check.

Purge that erases

Delete removes a record from every query at once. Purge rewrites the journal without it and overwrites the old generation with zeros before it returns; a test scans every store file for the deleted text.

From a question to its source

Explore a real quickstart result, then run the same example on your machine.

01 / Ask a question

30 public-domain articles. Eight questions with known answers. No model or account needed to run the Rust example.

Evaluate your own documents →

02 / Inspect the source

Article 10 udhr-10

Everyone is entitled in full equality to a fair and public hearing by an independent and impartial tribunal, in the determination of his rights and obligations and of any criminal charge against him.
HMS top result
udhr-10
SQLite FTS5 top result
udhr-10

Recorded Rust/Node quickstart results, not a live engine or a benchmark. Inspect the expected output.

Benchmarks

Same machine, same queries, every competitor at its tuned operating point. Bars are single-thread queries per second; every number links to a committed results file. Full comparison and method.

Vector search: SIFT-1M against hnswlib

SIFT-1M, recall@10 0.901,000,000 vectors, 10,000 queries. Bars: queries per second.2.46x hnswlib
SIFT-1M, recall@10 0.90, queries per secondWARM 23,294, hnswlib 9,480WARM23,294hnswlib9,480
Data table
SIFT-1M, recall@10 0.90, queries per second
SystemQPS
WARM23,294
hnswlib9,480
Raw results file
SIFT-1M, recall@10 0.951,000,000 vectors, 10,000 queries. Bars: queries per second.2.29x hnswlib
SIFT-1M, recall@10 0.95, queries per secondWARM 17,481, hnswlib 7,630WARM17,481hnswlib7,630
Data table
SIFT-1M, recall@10 0.95, queries per second
SystemQPS
WARM17,481
hnswlib7,630
Raw results file
SIFT-1M, recall@10 0.991,000,000 vectors, 10,000 queries. Bars: queries per second.2.75x hnswlib
SIFT-1M, recall@10 0.99, queries per secondWARM 8,794, hnswlib 3,193WARM8,794hnswlib3,193
Data table
SIFT-1M, recall@10 0.99, queries per second
SystemQPS
WARM8,794
hnswlib3,193
Raw results file

Text search: BEIR against tantivy, Lucene and SQLite FTS5

BEIR SciFact5,183 documents, 809 queries. Bars: queries per second, one thread.2.76x tantivy
BEIR SciFact, queries per second, one threadWARM 17,782, tantivy 6,450, Apache Lucene 2,630, SQLite FTS5 241WARM17,782tantivy6,450Apache Lucene2,630SQLite FTS5241
Data table
BEIR SciFact, queries per second, one thread
SystemQPS
WARM17,782
tantivy6,450
Apache Lucene2,630
SQLite FTS5241
Raw results file
BEIR NFCorpus3,633 documents, 324 queries. Bars: queries per second, one thread.2.65x tantivy
BEIR NFCorpus, queries per second, one threadWARM 38,963, tantivy 14,705, Apache Lucene 4,115, SQLite FTS5 1,416WARM38,963tantivy14,705Apache Lucene4,115SQLite FTS51,416
Data table
BEIR NFCorpus, queries per second, one thread
SystemQPS
WARM38,963
tantivy14,705
Apache Lucene4,115
SQLite FTS51,416
Raw results file
BEIR FiQA57,600 documents, 500 queries. Bars: queries per second, one thread.2.21x tantivy
BEIR FiQA, queries per second, one threadWARM 3,576, tantivy 1,617, Apache Lucene 1,260, SQLite FTS5 26WARM3,576tantivy1,617Apache Lucene1,260SQLite FTS526
Data table
BEIR FiQA, queries per second, one thread
SystemQPS
WARM3,576
tantivy1,617
Apache Lucene1,260
SQLite FTS526
Raw results file
Same answers: nDCG@10 on each dataset
DatasetWARMtantivyApache LuceneSQLite FTS5
BEIR SciFact0.70270.70130.70220.7009
BEIR NFCorpus0.29160.29010.28970.2914
BEIR FiQA0.26540.26430.26570.2678

Where we’re not ahead yet

  • Vector index build. SIFT-1M build takes 312.60 vs hnswlib 182.49 seconds, with peak build memory 2,968 vs hnswlib 1,525 MiB.
  • Vector serving memory. Resident memory while serving SIFT-1M is 2,204 vs hnswlib 1,019 MiB.
  • Text cold start. The store is read into memory at open: first answer on FiQA after 0.84 vs tantivy 0.02 seconds.
  • Text ingest and disk. Indexing FiQA takes 2.16 vs SQLite FTS5 1.18 seconds; the index is larger on disk than Lucene's (20.6 vs Apache Lucene 12.2 MiB).

How these were measured

Intel Core Ultra 9 185H (22 threads, 27 GB), Linux x86_64, measured 2026-10-21, under WSL2. Three serve rounds per system with bootstrap intervals; tested range is SIFT-1M (1,000,000 vectors) and three BEIR sets of 3,633 to 57,600 documents, not larger. WARM is timed through its native Rust API; hnswlib through its Python binding, one call per query. Text runs use WARM in BM25 lexical mode.

Durability: Killed mid-write at 200 points, mid-compaction at 200 points and at 50 simulated power losses: 0 committed documents lost; recovery median 13.8 ms after a killed write. 50 torn writes and 50 bit flips: every one detected or harmless, none served silently. Source.

Known limits
  • The older sparse vector path (memorize_vector) is experimental and far behind HNSW libraries: on glove-100, Apple M4: recall@10 0.252 at 33.7 QPS against hnswlib 0.831 at 3,368 QPS (public_glove-100-angular.json). Use the vertex graph index for vector search.
  • Hypervector sketches and term counts are not encryption; anyone holding a plaintext store can test candidate text against it. Use the encrypted store for confidentiality.
  • Deleted bytes can survive in places no file API reaches: SSD wear levelling, snapshots, backups and swap. Pair purge with encryption or full-disk encryption.
  • The MCP server builds from source with the mcp feature. Install writerslogic-warm from npm for native Node.js bindings. The Python SDK is an HTTP client for warm-server, not in-process document search.

How it works

One engine, linked into your process.

  1. Store

    Documents, facts and the embeddings you choose go into one append-only, checksummed log on your disk, encrypted if you turn it on.

  2. Index

    BM25 postings, a vertex-graph vector index and superposed fact vectors are built in the same process. No server, no network call.

  3. Recall

    Hybrid search fuses lexical and vector scores and returns byte offsets into the source; signed provenance records who stored what, and when.

The holographic part is the fact memory: bound facts are superposed into fixed-size vectors and recalled by similarity. Document search is conventional BM25 and cosine.

Use cases

Agent memory

Give an agent durable recall of facts, conversations and decisions that lives in its own process, survives crashes and can be purged on request.

RAG over private documents

Index contracts, notes or code on the machine that already holds them. BM25 and the embeddings you choose, fused, with byte offsets back to the source; nothing is uploaded.

On-device apps

Ship search and memory inside a desktop or edge app through the Rust crate or the C ABI, with encryption at rest and no server to run.

Integrations

Framework adapters live in the repository and install from source until they are published.

  • Python integrations

    LangChain, LangGraph, LlamaIndex, Haystack, DSPy, OpenAI Agents, Pydantic AI, smolagents, LiteLLM, CrewAI, AutoGen, AG2, Semantic Kernel, Mem0 and Letta, one extra per framework

  • JavaScript integrations

    LangChain.js, LlamaIndex.TS, Mastra, OpenAI Agents SDK and the Vercel AI SDK

Quickstart

Store a document and find it again. The complete quickstart adds encryption and filters.

shell: install
# Cargo.toml: Apache-2.0 release
cargo add warm-rust
cargo add serde_json anyhow
src/main.rs
use writerslogic_warm::{DocumentInput, WarmCore, SearchOptions};

fn main() -> anyhow::Result<()> {
    // 4,096-dimension store in ./memory; nothing leaves this machine.
    let hms = WarmCore::new(4096, Some("./memory".into()), None)?;
    hms.memorize_document(DocumentInput {
        id: "backups".into(),
        text: "Restore deleted documents from verified backups.".into(),
        source_uri: Some("operations.md".into()),
        version: Some("1".into()),
        metadata: Some(serde_json::json!({ "project": "alpha" })),
        chunk_words: None, overlap_words: None, store_text: None,
        embeddings: None, title_weight: None,
    })?;
    let hits = hms.search_documents("restore backups", &SearchOptions::default())?;
    println!("{} {:?}", hits[0].document_id, hits[0].source_uri);
    Ok(())
}

Node.js: writerslogic-warm 0.6.4 includes native binaries for supported platforms. Go, Java and .NET: the C ABI bindings in bindings/.

Troubleshoot imports, authentication, dimensions and locked stores.

Compare

How Mem0, Zep, Chroma and Qdrant document the same properties, checked 2026-10-21.

Comparison with Mem0, Zep, Chroma and Qdrant
PropertyWARMMem0ZepChromaQdrant
Runs inside your app, no serviceYes: Yes: Rust library, Node module, C ABIPartly: Open-source library; Mem0 Platform is hostedNo: Hosted; Community Edition no longer maintained (April 2025)Partly: In-process from Python; JS and Rust use a serverPartly: Server or Cloud; the Python client has a local mode (exact scan)
Encryption at rest in the open-source productYes: Built in (opt-in)Not documented: Not documentedPartly: Customer keys are an Enterprise add-onNot documented: Not documented for open sourcePartly: Self-hosted: customer configuration
Signed provenance of stored recordsYes: COSE, SCITT, C2PA over Ed25519Not documented: Not documentedNot documented: Not documentedNot documented: Not documentedNot documented: Not documented
Deleted text erased from diskYes: Purge rewrites the journal and zeroes old generations before returningNot documented: Not documentedPartly: Removed in the background; overwrite not documentedNot documented: Not documentedPartly: Marked deleted, cleaned up later by an optimizer

✓ Yes · ◐ Partly · ✕ No · – Not documented. Hover or use a screen reader for each vendor’s wording. Sources: Mem0 open source, Mem0 Platform, Zep open-source strategy, Zep bring your own key, Chroma clients, Qdrant security, Qdrant optimizer.

Open source and plans

Your memory stays on your machines. Cloud keeps your machines in step: encrypted sync across your laptops, desktops and team, a backup you can restore anywhere, and independent verification of the provenance and deletion records your stores sign. We never hold your keys, never see your documents and never run your searches. WARM Cloud runs its sync, backup and verification on Cloudflare.

  • Community

    Available now

    Free

    The open-source engine and server on your own machines.

    • Rust library, Python SDK, C ABI with Go, Java and .NET
    • Hybrid search, fact memory, crash-safe log
    • Optional encryption at rest and signed provenance
    • Support through GitHub
    Get started on GitHub
  • Cloud

    In development

    Usage-based

    Sync, backup and verification for the memory you keep locally. Pay for encrypted storage, sync operations and verifications, each with a free monthly allowance.

    • End-to-end encrypted sync (AES-256-GCM, keys only on your devices); concurrent edits converge and conflicts are reported
    • Encrypted backup of each store's full history; restore any device with your sync key
    • Tamper-evident history: reordered, altered or spliced changes are detected on your device
    • Provenance and deletion-record verification with receipts you can check offline
    • Signed audit export; business-hours email support
    Join the waitlist
  • Team

    In development

    Monthly plan

    Encrypted sync and verification shared across a team, with usage included each month.

    • Everything in Cloud, with included monthly usage and a larger storage quota
    • Scoped API keys with rotation and instant revocation
    • SSO through your identity provider (OIDC) and a signed, exportable audit log
    • Shared support channel and uptime commitment
    Join the waitlist
  • Enterprise

    Talk to us

    Talk to us

    Your keys, your infrastructure, compliance reporting.

    • Annual agreement with custom quotas
    • Bring your own key (KMS / HSM)
    • Transparency log and verification you can run yourself
    • Compliance reports and audit retention
    • Named support contact
    Join the waitlist
What WARM Cloud adds to the open-source engine
FeatureOpen sourceCloud (in development)
Engine, search and fact memoryOn your machineStill on your machine
Where plaintext livesOnly on your devicesOnly on your devices; the server stores ciphertext
Encryption at rest and signed provenanceIncluded (opt-in features)Included
End-to-end encrypted sync and backup across devicesNot includedIncluded
Tamper-evident, hash-chained change historyLocal journalChecked on every device
Provenance and deletion-record verification, transparency logVerify locallyHosted verification, your own append-only log, offline-verifiable receipts
Scoped API keys, signed audit export, SSO (OIDC)Not includedAudit export in Cloud; all three in Team and Enterprise
SupportGitHub issues and discussionsEmail, shared channel or named contact by tier

Current WARM releases are Apache-2.0. Historical releases under the former names retain their original license terms.

Questions

Does it send my data anywhere?

No. The engine makes no network calls and sends no telemetry. Embeddings are either supplied by you or computed by local models from weights you provide; it never downloads a model.

How is this different from Mem0, Zep, Chroma or Qdrant?

WARM is a library you embed, not a service you call, and it puts encryption at rest, signed provenance and a text-erasing purge in the open-source engine itself. Vector search runs on a vertex graph index; on SIFT-1M it served 2.29x the queries per second of hnswlib at recall 0.95 on the same machine (benchmarks section).

What does WARM stand for?

WARM stands for WritersLogic Adaptive Retention & Memory. The fact memory uses holographic reduced representations: many bound facts are superposed into one fixed-size vector, so every part carries a little of the whole and damage degrades recall gradually. Document search is conventional BM25 and cosine and does not claim that property.

Is it really deleted when I delete it?

Delete removes a record from every query at once; its journal frame stays until compaction or purge. Purge rewrites the journal and overwrites the old generation with zeros before it returns. Copies outside the store's files, such as backups, snapshots and SSD wear levelling, are out of any library's reach; encrypt the store when those matter. Signed deletion certificates are research, not yet in the shipped API.

Which license applies?

Current WARM releases are Apache-2.0. Historical releases under the former names retain their original license terms.

Which languages can I use?

Rust natively; MCP for editors and agents; native Node.js bindings on npm; a Python HTTP client for warm-server; and a C ABI with Go, Java and .NET bindings.

What does the Cloud do if the engine runs locally?

WARM Cloud is sync, backup and verification, not a hosted engine. Your documents, embeddings, memory index, queries and sync key never leave your devices. Every change is sealed on your device before upload, so the service holds only sealed bytes and the metadata needed to order them (change counts, sizes, times, device and key identifiers) plus your account and billing details. For verification it keeps hashes, the signer's public identity and the claim time, never the statement's contents. It is in development: join the waitlist and we will write when the beta opens. Prices are published at launch.

Part of the WritersLogic provenance platform

WARM is part of the WritersLogic provenance platform: the same signed-statement substrate (COSE and SCITT over Ed25519, W3C DID identity) runs through every product.

  • WritersProof: Records how a document is written and seals that process into signed evidence anyone can verify
  • Draftbridge: Coming soon

WritersLogic Adaptive Retention & Memory is made by WritersLogic, Inc.