WARM
Memory serverOfficial Writerslogic project
Created by Writerslogic
Published in writerslogic/warm. Publisher page
27 GitHub stars
What it is
WritersLogic Adaptive Retention & Memory (WARM): local document search (BM25 + embedding cosine) and vector-symbolic associative memory.
AutoGineer overview, from the brain’s own files
WARM (WritersLogic Adaptive Retention & Memory) is a local-first memory engine designed to provide AI agents and applications with persistent storage and retrieval. It combines traditional document search—using stemmed BM25 and vector-based cosine similarity—with a vector-symbolic layer for associative memory and multi-hop queries. The system is built in Rust and can be deployed as an embedded library, an HTTP server, or an MCP server, allowing it to integrate with various agent hosts and development environments. It emphasizes local control, offering optional encryption and provenance features while avoiding external service calls or telemetry.
How it works
Memory model: Hybrid
AutoGineer overview, from the brain’s own files
The system stores text, vectors, and facts in a local directory. It uses a hybrid approach where document search combines chunking and BM25 with vector embeddings. The vector-symbolic layer utilizes sparse hypervectors to support associative memory, triples, and multi-hop queries. It provides an API for memory management including remember, recall, and forget operations, with support for source provenance and atomic storage updates.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 37 |
| assets | attachments | 10 |
| docs | docs | 1850 |
| examples | examples | 47 |
| scripts | scripts | 77 |
| src | source-code | 327 |
| tests | tests | 362 |
| benches | folder | 7 |
| benchmarks | folder | 2898 |
| bindings | folder | 273 |
| deploy | folder | 18 |
| figures | folder | 6 |
| fuzz | folder | 54 |
| integrations | folder | 225 |
| interop | folder | 3 |
| notebooks | folder | 3 |
| npm | folder | 1 |
| proptest-regressions | folder | 1 |
| schemas | folder | 9 |
The agent reads
- query_batch evidence: README.md
- get_document evidence: README.md
- list_documents evidence: README.md
- get_document_info evidence: README.md
- list_document_info evidence: README.md
Requirements
Runtimes: Node.js, Python >=3.9, Rust
Databases: SQLite
API keys (by name): WARM_API_KEY
Works with: Gemini CLI
Set it up
This brain runs code automatically: 1 hook (claude-code), 1 script. Review benchmarks/results/sbg_positions_development/setup.sh, integrations/editors/claude-code/plugin/hooks/hooks.json before opening the folder in Claude Code. No step below turns a hook on for you.
benchmarks/results/sbg_positions_development/setup.sh:sh benchmarks/results/sbg_positions_development/setup.shintegrations/editors/claude-code/plugin/hooks/hooks.json:node
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/writerslogic/warm/blob/e176d5572dd86bf2233bcb120e3a485dc109ea3a/README.md#get-started
- Not scanned by AutoGineerThe author’s README also describes installing it as the npm package writerslogic-warm. Read its install section: AutoGineer did not scan that path. https://github.com/writerslogic/warm/blob/e176d5572dd86bf2233bcb120e3a485dc109ea3a/README.md#get-started
Created by Writerslogic. Published in writerslogic/warm. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Integrating memory into an AI agent via the MCP server.
- Building local-first applications that require embedded search and storage.
- Providing a multi-tenant memory service via the HTTP server.
- Using the Rust library for in-process memory management.
- “Remember that the project deadline is Friday.”
- The agent stores the fact with associated metadata, making it available for future retrieval.
- “Recall information about the project deadline.”
- The agent retrieves the stored fact using hybrid search and provides the information with source provenance.
Documentation by Writerslogic
<img src="https://raw.githubusercontent.com/writerslogic/warm/main/assets/crystal-halo/crystal-detailed-static.png" alt="WARM logo" width="96" align="left">
WARM
Local memory for AI agents and applications.
WARM (WritersLogic Adaptive Retention & Memory) gives agents persistent memory, full-text and vector search, and source provenance in one embeddable Rust engine. Use it inside your application, through HTTP, or from an MCP client, with storage on infrastructure you control.
Image: CI Image: MSRV 1.89 Image: OpenSSF Scorecard Image: OpenSSF Best Practices Image: License: Apache-2.0 Image: WARM MCP server: quality and maintenance score on Glama
Website · Docs · Get started · Standards and provenance · Evaluation · Capabilities · Limits · Contribute
<br clear="left">
What it is
WARM is a Rust library that stores text, vectors and facts in a directory on your machine and finds them again. It ships with optional Node.js, C, WASM and UniFFI bindings, an HTTP server with portable JavaScript and Python clients, and an MCP server. The embedded engine makes no service calls or telemetry requests. HTTP clients connect to the server you configure; model stages are opt-in.
| Capability | What you get |
|---|---|
| Document search | Chunking, stemmed BM25 over blocked postings, Boolean and phrase queries, hybrid fusion with embeddings you supply, metadata filters, byte offsets |
| Vector index | Graph index with a memory-mapped vertex file, an updatable delta for inserts and deletes, optional query-aware routing trained on sample queries |
| Memory API | remember, recall, forget and explain with time validity and supersession; conversation memory with source provenance |
| Storage | Atomic replace and delete, crash-safe journal and checkpoints, verified compaction, one writer per store |
| Security | Optional AES-256-GCM storage encryption with documented coverage and limits, signed audit log, COSE/SCITT provenance |
| Vector-symbolic layer | Sparse hypervectors with bind, bundle and permute, triples with multi-hop queries, Hopfield cleanup |
Who it's for
| You are building | What you get |
|---|---|
| An agent or assistant that needs memory | A memory API with forgetting that removes facts from the store, and an MCP server for editors and agent hosts |
| A local-first or offline app | Embedded search and storage in one directory, with no server process and optional encryption |
| A service that needs vector or text search | warm-server over HTTP with tenants and scoped keys, or the library in-process |
Get started
For an editor or agent host, start with the MCP integration. For an application, choose the Rust library or HTTP server below. WARM runs locally or on your own infrastructure; this repository does not provide a managed cloud service.
To try the offline memory demo from source:
git clone https://github.com/writerslogic/warm
cd warm
cargo run --release --example demo-offline-agent<details open> <summary><strong>Rust</strong></summary>
From your own Rust project, add the current Apache-2.0 source. The crate is warm-rust; the library is imported as writerslogic_warm. The MSRV is Rust 1.89; local-models and --all-features need Rust 1.94 or newer.
cargo add warm-rustThe historical v0.6.1 source
remains AGPL-3.0-or-later; it is available from that Git tag, not as a
warm-rust 0.6.1 release on crates.io.
use writerslogic_warm::{DocumentInput, WarmCore, SearchOptions};
let dir = tempfile::tempdir()?;
let warm = WarmCore::new(4096, Some(dir.path().display().to_string()), None)?;
warm.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 = warm.search_documents("restore backups", &SearchOptions::default())?;
println!("{} {:?}", hits[0].document_id, hits[0].source_uri);Rust API change in 0.6.6 (0.6.5 returns these values directly): WarmCore::query, query_batch, and
analyze_components return Result. Handle the result with ? or an explicit
error branch; deferred-encoding failures no longer become successful partial
query results. get_document, list_documents, get_document_info, and list_document_info
also return Result; retained-text and checkpoint decoding failures propagate
instead of panicking, and reads no longer hydrate the
entire checkpoint or hold store locks during text I/O.
</details>
<details> <summary><strong>JavaScript and TypeScript: portable client</strong></summary>
warm-sdk 0.2.1 is the portable HTTP client for a separately running warm-server.
It has no native binaries or runtime dependencies and uses standard Fetch and Web Streams APIs
(Node 18 or newer). Installing or importing it does not load the embedded engine or download models.
For a published release, install the client in your application:
npm install [email protected]Check the available npm versions. To build the client from this checkout:
npm ci --prefix bindings/js/warm-sdk
npm run build --prefix bindings/js/warm-sdkIn your application, install that directory with
npm install /absolute/path/to/warm/bindings/js/warm-sdk.
Start the server in a separate terminal:
cargo build --release --features server --bin warm-server
WARM_API_KEY=change-me target/release/warm-server --input-dim 384import { WarmClient } from 'warm-sdk'
const warm = new WarmClient({
url: process.env.WARM_URL ?? 'http://127.0.0.1:8080',
apiKey: process.env.WARM_API_KEY, tenantId: 'demo',
})
await warm.memory.remember('Restore deleted documents from verified backups.', {
id: 'backups', metadata: { project: 'alpha' },
})
const hits = await warm.memory.recall('restore backups', { filter: { project: 'alpha' } })
console.log(hits[0]?.text)Set WARM_API_KEY to the server's key before running the client. This memory example uses
lexical retrieval and needs no embedding model. A runnable source example also checks retrieval
and deletion in an isolated namespace:
WARM_URL=http://127.0.0.1:8080 WARM_API_KEY=change-me \
node examples/quickstart/js-client/quickstart.mjsSee the client API and release availability. Browser deployments must permit the application's origin at the HTTP service boundary.
</details>
<details> <summary><strong>Node.js: optional embedded engine</strong></summary>
writerslogic-warm embeds the Rust engine in Node. For a published engine release,
install it explicitly with npm's optional dependencies enabled:
npm install [email protected]Check the available npm versions. To build from the cloned repository, with Rust installed:
npm ci --omit=optional
npm run buildThe portable client and embedded engine are separate packages with different APIs.
listDocuments supports scoped pruning. See the
integration guide for source
provenance, namespace isolation, dry runs and deletion limits.
const { WarmMemorySystem } = require('writerslogic-warm')
const { DocumentMemory } = require('writerslogic-warm/semantic')
async function main() {
const dir = require('node:fs').mkdtempSync(require('node:path').join(require('node:os').tmpdir(), 'warm-readme-'))
const memory = new DocumentMemory(new WarmMemorySystem(4096, dir))
await memory.memorize({
id: 'backups', text: 'Restore deleted documents from verified backups.',
sourceUri: 'operations.md', version: '1', metadata: { project: 'alpha' },
})
const [hit] = await memory.search('restore backups', { filter: { project: 'alpha' } })
console.log(hit.documentId, hit.sourceUri, hit.text)
await memory.flush()
}
main().catch(error => { console.error(error); process.exit(1) })</details>
<details> <summary><strong>Server and Python</strong></summary>
The Python package warm-sdk is an HTTP client for warm-server, which stores vectors you
supply. (warm-python, imported as writerslogic_warm, provides native vector indexes and phase vectors, but no document search.)
cargo build --release --features server --bin warm-server
WARM_API_KEY=change-me target/release/warm-server --input-dim 384 &
uv pip install warm-sdkfrom writerslogic_warm_sdk import WarmClient
client = WarmClient(url="http://127.0.0.1:8080", api_key="change-me", tenant_id="demo")
client.add_documents([{"id": "a", "vector": [0.1] * 384, "text": "hello", "metadata": {}}])
print(client.query([0.1] * 384, top_k=1)["matches"][0]["id"])Endpoints, flags, tenants and limits are in the
server docs. A runnable Python quickstart
with a toy embedder is in examples/quickstart/python.
</details>
<details> <summary><strong>MCP</strong></summary>
warm-mcp serves a store to any Model Context Protocol client over stdio or HTTP:
npx -y writerslogic-warm-mcp # stdio; downloads a verified binary on first run
npx -y writerslogic-warm-mcp --transport http # http://127.0.0.1:8765/mcpThe MCP package is a separate launcher. To build the server from source:
cargo build --release --features mcp,security --bin warm-mcp # add local-models for semantic recall
./target/release/warm-mcp # stdio
./target/release/warm-mcp --transport http # http://127.0.0.1:8765/mcpClient setup, data directory and the one-writer rule: MCP integration.
For normalized content from multiple applications, see the organizational knowledge adapter.
</details>
The five-minute quickstart
walks through ingest, search, a SQLite FTS5 comparison and encryption in Rust, Python and Node,
and CI runs that code on every pull request. For a whole agent memory with no embeddings and no
network, run cargo run --example demo-offline-agent.
<a id="headline-results"></a> <a id="where-its-behind"></a>
Evaluation
Recorded results and limitations cover memory quality, text retrieval and vector search. Each result retains its workload, hardware, model, source revision and known losses. The full comparison and reproduction protocol provide the evidence for evaluating WARM on your own workload.
What ships today
| Capability | Status | Documented limit |
|---|---|---|
| Hybrid document search (BM25 + exact cosine, filters, byte offsets) | Ships | Exact scan of eligible chunks; benchmark your corpus before assuming capacity (guide) |
Boolean lexical search (+required, -excluded, quoted phrases) | Ships | Flat queries only, no nesting; an empty or only-excluded query matches nothing (design) |
| Atomic replace/delete, crash-safe journal, verified compaction, process lock | Ships | One writer per store; compaction is not secure erasure |
Vector index (qgraph vertex graph, memory-mapped) | Ships | Build time and serving RSS behind hnswlib on SIFT-1M (gaps) |
| Updatable vector index (durable delta for inserts and deletes) | Ships | Single writer; format in VECTOR-UPDATES.md |
| Query-aware graph routing (trained on sample queries) | Ships (opt-in) | Needs representative training queries; tested on VIBE llama and yi (report) |
| Memory API: remember, recall, forget, explain | Ships | Forgetting removes a fact from the store; it does not cover what a model inferred (docs) |
Conversation memory (conversation-memory) | Ships | Bounded context with exact source provenance; native recall not yet benchmarked on LongMemEval end to end |
| Meaning memory: triples, multi-hop, Hopfield cleanup | Ships (runtime opt-in) | Tested on synthetic and 2,120-fact sets (research_bench_16384_256.json) |
Union-bundle membership (experimental) | Research | At D = 16,384: positive gap to N = 500 (4% false positives), tested to 2,500 (benchmark_scaling_results.json) |
Sparse vector index (memorize_vector) | Experimental | Not competitive with HNSW (results) |
Encrypted stores (security) | Ships | AES-256-GCM, Argon2id; covers the log, index caches and the text segment. Metadata, file names and sizes are not encrypted |
Signed audit log, credential-gated access, COSE/SCITT/C2PA (provenance) | Ships | Host must authenticate DIDs; PoSME, RATS, did:web not implemented |
On-device models (local-models: Qwen3 embed/rerank/LLM) | Ships | Local weights only; never downloads |
warm-server HTTP API, multi-tenant (server) | Ships | Single node; TLS, per-tenant scoped keys (guide) |
MCP server (mcp: warm-mcp, stdio and HTTP) | Ships | Encryption needs security; semantic recall needs local-models |
JavaScript/TypeScript client (warm-sdk 0.2.1) | Source and release builds | Portable HTTP client; requires a separately running server |
Embedded Node.js (writerslogic-warm 0.6.8) | Source and release builds | Eight optional native platform packages; separate from the client |
| C, Go, .NET, Java, Kotlin, Swift and WebAssembly bindings | Source available | Require local builds; the language packages and native bundles are not yet published (runtime guides) |
| Python | HTTP client (warm-sdk); native vector indexes and phase vectors (warm-python) | No in-process document search |
Query-private search (private-search) | Experimental | For searching an index someone else holds; hides the query vector from the scorer only (notes) |
Optional engine capabilities use Cargo features or runtime configuration; Cargo features lists the build choices.
The compatibility policy defines API stability, deprecation windows and storage-format migration rules.
Architecture
flowchart TB
subgraph bindings["Bindings and servers"]
rust["Rust crate"]
node["Node: writerslogic-warm (napi)"]
ffi["C, WASM, UniFFI"]
clients["JavaScript and Python: warm-sdk"]
server["warm-server (HTTP)"]
mcp["warm-mcp (stdio, HTTP)"]
end
subgraph engine["Engine API"]
core["WarmCore: documents, vectors, facts, mutation gate"]
prov["Security and provenance: signed audit log, COSE/SCITT"]
end
subgraph indexes["Indexes and memory"]
text["Text index: blocked postings, BM25, Boolean and phrase"]
vector["Vector index (qgraph): vertex file, updatable delta, query-aware projection"]
memory["Memory API: remember, recall, forget, conversation memory"]
vsa["Vector-symbolic layer: bind, bundle, Hopfield cleanup"]
end
subgraph storage["Storage"]
journal["Journal and checkpoints"]
segments["Append-only segments (CRC32, LZ4)"]
mapped["Memory-mapped files"]
crypto["AES-256-GCM encryption (optional)"]
end
clients --> server
rust --> core
node --> core
ffi --> core
server --> core
mcp --> core
core --> text
core --> vector
core --> memory
core --> vsa
core --> prov
memory --> text
text --> journal
vector --> journal
memory --> journal
journal --> segments
segments --> mapped
segments --> cryptoModule map: docs/ARCHITECTURE.md.
Limits
Not anonymous. Hypervector sketches and term counts are not encryption; anyone with a store can encode candidate text and compare.
storeText: falsekeeps term counts, IDs and embeddings, so it is not a privacy control.Document search is conventional. It does not use the hypervectors; the holographic parts are the algebra and the meaning memory.
One writer per store. A second writing process fails at open with a lock error.
Capacity numbers are points, not guarantees, and are stated only over the tested range (capacity).
Benchmark results are single machines. Conditions are in each results file; the single-core ann-benchmarks run and the VIBE high-recall points are losses (see Where it's behind).
Masking is obfuscation. Client-side vector masking preserves every pairwise similarity.
A store is a directory and
WarmCore::new(.., None, ..)uses the current directory.
Full statement: docs/PRIVACY.md. Report vulnerabilities privately via SECURITY.md.
Contributing
CONTRIBUTING.md: setup, the checks CI runs, DCO sign-off (git commit -s, no
CLA). Start with a good first issue
or Discussions. See the
Code of Conduct. Benchmark changes regenerate the results file they touch;
the README cites files, not remembered figures.
License
Apache-2.0. See LICENSE. Use, modify and embed it in open-source or proprietary software, including network services, with no copyleft obligation. The historical v0.6.1 source remains available under its AGPL-3.0-or-later license.
docs/evaluation.md
Retrieval and workload evaluation
LongMemEval memory quality
The objective is the strongest defensible end-to-end memory quality: retrieving necessary evidence, reasoning over time and entity identity, resolving facts that change, and abstaining when the history cannot answer. A perfect score on repeatedly tuned development questions does not establish general memory capability. Retrieval recall, quotation validity, latency, and answer accuracy are separate measurements.
A candidate promoted as a memory pipeline must run from source history and a new query through ordinary indexing and retrieval. Benchmark identifiers, question-type labels, expected answers, and labeled support cannot direct its retrieval or generation. Saved answers or citations from development runs cannot substitute for query-time retrieval; any online multi-stage reader must charge and report every upstream stage's context and cost. Freeze the complete policy before its final evaluation, retain every question and failure in the denominator, and preserve failed experiments. Historical protocols below retain their original 100/100 dev target fields; those fields are not a generalization claim or the acceptance rule for a promoted engine.
Tune only on the frozen 100 dev questions in the shared S/M split. Keep the 400 held-out questions sealed until the pipeline, models, prompts, budgets, abstention rule, and scoring procedure are frozen for the single final M run. That run cannot be used to select another variant or tune the pipeline.
LongMemEval_S 500-question held-out run (final, spent)
The single sealed held-out run has now been made on LongMemEval_S, under
the frozen config
(pinned revision 02468f57, engine code identical to main 12611a9f; the
branch adds benchmark files only). Retrieval ran on Modal with the pinned small
Qwen3 models (Qwen3-4B-Instruct-2507 facts and query rewrites on an L4,
Qwen3-Embedding-0.6B and Qwen3-Reranker-0.6B on a T4) and WARM's document API
BM25 + exact-cosine scores (public-bench lme-scores), fused by
longmemeval_pipeline.py; rankings were exported label-blind (top 50 turns per
question). The reader is gpt-4o-2024-08-06 on the official prompt with k=10
retrieved rounds, one sample at temperature 0; every reader and judge call went
through OpenRouter with the provider pinned to OpenAI (2,500 calls, all served
by OpenAI with the pinned snapshots). The headline judge is the unchanged
official evaluate_qa.py (commit 9e0b455f).
Result file: longmemeval_500_official_v1.json.
Judge (official evaluate_qa.py) | n=500 | dev100 | heldout400 |
|---|---|---|---|
| gpt-4o-mini-2024-07-18 | 84.4% (422/500) | 88/100 | 334/400 (83.5%) |
| gpt-4o-2024-08-06 | 85.0% (425/500) | 89/100 | 336/400 (84.0%) |
Per type (gpt-4o-mini judge): single-session-user 68/70, single-session-assistant
52/56, knowledge-update 68/78, temporal-reasoning 113/133, single-session-preference
24/30, multi-session 97/133; abstention 27/30. Retrieval alone (official
eval_utils.py, 419 scorable questions): session recall@10 0.988, turn
recall@10 0.919. dev100 was used for tuning, so the n=500 figure mixes tuned and
untouched questions; the heldout400 column is the generalization figure. Spend:
$4.02 Modal GPU (four launches under one tag, cached stages reused) and $9.13
OpenRouter for the reader and both judges, each under a $30 cap. The 400
held-out questions are now spent for this pipeline; a later variant cannot be
evaluated on them.
The checked v3 dev result is 88/100 for the matched reader's operand arm (Wilson 95% interval 80.19–93.00%), against 83/100 for first-five and 82/100 for knapsack. These are repeatedly used exploratory dev questions. The v3 operand arm also uses larger evidence budgets; this is not an equal-budget comparison or a held-out result.
The offline quality diagnostic recomputes outcomes from saved reader and judge responses without opening the corpus or making model calls. It retains failures in the 100-question denominator.
| Question type | Correct / total |
|---|---|
| Multi-session | 19/27 |
| Temporal reasoning | 24/26 |
| Knowledge update | 15/16 |
| Single-session assistant | 10/11 |
| Single-session user | 14/14 |
| Single-session preference | 6/6 |
The twelve operand failures comprise six judge-rejected abstentions, five generated incorrect answers, and one reader failure. Eight failures are multi-session questions. All six labeled unanswerable questions receive abstentions; seven answerable-labeled questions also receive abstentions, including one the judge accepts. Label-based abstention and judge acceptance are therefore reported separately. Exact quotation validity does not establish that a claim follows from its citation.
The next experiment should distinguish missing evidence, evidence removed by the reader token cap, and incorrect use of retained evidence in the multi-session failures. The existing completeness labels apply before that cap and only to scored user turns. They cannot establish that the reader had sufficient support. Temporal and fact-update changes need source-backed cases that distinguish observation time, event time, validity, entity identity, and plans from completed events. Changes to abstention need both answerable and unanswerable cases.
The user-first experiment admits complete user turns before filling the remaining reader budget with complete assistant continuations. Its prepared packets cover all labeled user evidence for 82/84 scored questions, compared with 77/84 in the actual v3 reader inputs. It uses the existing dev candidate pool and a 7,680-token local limit inside the 8,192-token reader cap. The saved dev archives supply 24,391 verbatim user turns; assistant continuations are limited to existing v1/v3 snapshots. The end-to-end run scores 80/100, regressing from v3's 88/100. All 100 readers and judges completed successfully. Multi-session accuracy rises from 19/27 to 20/27, while assistant questions fall from 10/11 to 5/11 and preferences from 6/6 to 3/6. Preserving more labeled user turns alone is insufficient: the cap also removes assistant-origin facts and useful context. This variant is retained as a failed experiment rather than replacing v3.
The session-closure selector adds the first two user turns from sessions touched by the top 20 retrieved turns before filling from the remaining pool. Its offline reproduction raises actual retained user support from 82/84 to 83/84 at the same local cap, with no coverage regressions. It has not been scored end to end.
The full-history run evaluates all 24,391 dev user turns and 781 available saved assistant turns with the same pinned reader and official judge. Its input budget is 131,072 tokens, with a 512-token framing reserve; prepared inputs have a median of 44,014.5 tokens and a maximum of 51,275. This is a larger-context experiment, with additional generic entity, temporal, and personalization instructions, and is not an equal-budget comparison. All 84 scored user-evidence cases are complete before generation. The independent validation verifies its 199 paid reader/judge calls and failure-inclusive scores. It scores 88/100, with five gains and five regressions against v3 and no aggregate improvement. Knowledge updates reach 16/16, but multi-session answers remain 19/27; preferences fall to 5/6. One otherwise supported abstention fails the strict JSON contract because it includes nonempty claims. The paired failure analysis separates missing assistant facts, relation and event identity errors, temporal scope errors, personalization drift, and schema failure.
The role-aware retrieval run searches complete original assistant replies alongside the cached user ranking, using equal-weight reciprocal rank fusion and preserving the first five user results. It retrieves at most 64 complete exchanges under the same larger context budget. The dev source loader verifies the pinned source-file hash and all 500 question identifiers, but decodes only the 100 dev records; held-out record bodies are streamed for framing and hashing without decoding or scoring. Those dev records contain 24,391 user turns and 24,784 assistant turns, including 18 assistant-only sessions omitted from the earlier user archive. Prepared packets contain 6,388 user turns and 6,400 assistant turns, with labeled user support complete for 82/84 scored questions. Median input is 44,400.5 tokens, with a maximum of 50,698. The independently validated result is 93/100, improving on v3's 88/100. This is the best checked exploratory dev result, with no held-out or production-engine claim. All 100 reader and judge calls succeed. Knowledge updates reach 16/16, temporal reasoning 26/26, assistant questions 11/11, user questions 14/14, and preference questions 6/6. All seven remaining failures are multi-session questions (20/27): ownership counts, project identity and missing premises, order identity, wedding identity, habitual device use, payment versus event dates, and one judge-rejected abstention. Increased assistant availability is useful but does not establish complete answer quality. This remains exploratory repeated-use dev evidence under a larger context budget.
The offline history-budget measurement finds that complete original conversations require 150,437–168,359 input tokens under this prompt, with a median of 158,135; none fit the 130,560-token local limit. A generic alternative preserves every user turn and admits a ranked prefix of complete assistant continuations: it retains 18,175 assistant turns and all 84/84 labeled user-support cases within that limit. These are source retention measurements without reader or judge calls.
The complete-original-history run supplies all 49,175 original dev turns, including every assistant occurrence, under a 196,608-token input cap with a 512-token framing reserve. Its prepared inputs have a median of 158,618 tokens and a maximum of 168,842, with 84/84 labeled user-support cases complete. It uses the same pinned GPT-5.4 snapshot with high reader reasoning and an 8,192-token output limit; the official judge retains medium reasoning and its 2,048-token output limit. The model documentation confirms the snapshot, reasoning setting, and context support. The protocol also adds generic source-role, entity, relation, temporal, and personalization bookkeeping instructions. Source availability, context budget, and reasoning change together, so this run cannot attribute any result to one change alone. The independently validated result is 91/100, including one reader transport failure in the denominator. There were 99 successful readers and 99 successful judges, with no retries or answer resampling. Its settled own-call cost is $42.118065, including the conservative reservation for the failed response, inside its $50 cap and the unchanged $120 dev-reader/judge and $250 global caps. Complete source availability did not outperform the 93/100 retrieval run on this repeatedly used development set.
The four-prior independent-reader prototype is unpromoted and unscored. Its source packets use citations from four saved development readers, including readers given broad original history. Omitting their answer text from the final prompt does not remove that upstream access or make its final 32,768-token context the total query budget. Its generic source-preservation, premise-closure, token-accounting, and transport mechanisms are reusable; its fixed development-answer dependencies must be replaced with ordinary query-time memory retrieval before a general-memory claim. A harmless API capability probe used no benchmark question. No benchmark generation or scoring has run through this prototype. These experiments change the benchmark harness, not the production memory engine's fact-update implementation; their measured results do not establish production retrieval quality.
The separate opt-in conversation memory API
now stores immutable original user and assistant turns through Memory::remember_many
and retrieves through Memory::recall. It preserves roles and scoped source identity,
hydrates complete originals after chunk retrieval, and admits direct conversation
premises with their anchor under explicit source and byte limits. Query decomposition
is bounded and opt-in, and a separate embedding instruction includes both source roles.
There are no saved-answer, question-ID, question-category, or benchmark-rank dependencies.
The historical production validation records 788 passing tests; the completed production proof records 823: the same 527 native tests, 3 bridge unit tests, and 293 current Python tests. The native checks cover original-role evidence, confirmation premises, whole-source budgets, immutable writes and restart, concurrency, and long-turn hydration. All three pinned local models passed the Metal smoke test, with raw JSONL receipts. The run uses an isolated frozen source snapshot and its release build receipt. Its frozen pipeline ingests complete original conversations into the ordinary memory index, retrieves 64 distinct sources per role from a pool of 256 returned chunks per role, and admits premises under limits of 128 sources and 65,536 serialized bytes. The original query has weight 1, the rewrite weight 1, and all subqueries combined weight 1; no earlier answers or cached rankings enter retrieval. The reader is GPT-6.1 Sol with high reasoning and a 4,096-token output limit and an exact 32,256-token input gate plus a 512-token reserve. Judging uses the official LongMemEval judge prompt executed by pinned GPT-5.4-2026-03-05; the experiment has a $14 cap and no held-out run. Production dev evaluation stopped before QA; no production QA score is claimed. These tests and smoke checks do not establish QA accuracy or generalization. The earlier harness's 93/100 remains separate evidence; the only held-out evaluation is the 500-question run above.
External headline scores also require matching metrics. OpenExp's reported 98.6% measures session Recall@10 without generated answers, while OMEGA's 466/500 correct answers equal 93.2% per-question accuracy; its 95.4% headline uses task averaging. These do not form a comparable QA leaderboard. The primary-source integrity record links the reports, evaluation code, development accounts, and unresolved methodological questions. No independent untouched-split reproduction was established by that review.
Reproduce the diagnostic and its synthetic regression checks with:
uv run --no-project python benchmarks/public/longmemeval_quality.py
uv run --no-project python -m unittest discover -s benchmarks/public -p 'test_longmemeval_quality.py'Candidate improvements to memory quality
The following designs are hypotheses about improving memory quality, not measured
score improvements. A standalone local research prototype
implements source-checked claims, distinct counts/sums/comparisons, bounded evidence
repair and deletion planning over declared proofs. It uses supplied annotations
and typed queries; it does not extract assertions from natural-language questions
or change the production engine. The optional, revision-pinned narrative-lens bridge
uses its entity resolver with explicit corrections, without model inference.
The synthetic development receipt
records reproducible examples and deletion/replay checks; it reports no benchmark
score or extraction-quality measurement.
The broader designs below extend the existing
evidence-ledger proposal
and use the recorded failures to identify mechanisms, not question-specific
rules. The earlier 93/100 exploratory result is not a native production score or
evidence that only seven general memory failures remain.
Execute answers over attributed claims and events
Keep a query-specific table of assertions with entity and event identity, predicate and argument roles, value/unit, polarity/modality, event-time interval, observation time, validity, and original source/version/span. Preserve alternative identity assignments. Distinguish payment from attendance, participation from leadership, plans from completed events, and a new observation from a new event.
Compile supported questions into bounded, typed operations such as distinct count, sum, comparison, temporal selection and relation joins. Execute these operations deterministically and return their operands and source references. If all admissible identity/time interpretations yield the same result, uncertainty in those interpretations need not force abstention. Otherwise retain the conditional result or unresolved operands. Exhausting a retrieval pool does not prove complete enumeration; bounds over observed candidates are not bounds over all events. Incomplete solver search must remain explicit.
WARM already has exact triple postings, multi-hop traversal, bitemporal facts and
source/premise recovery. The new work is evidence-addressed event assertions and
their executable relation semantics, not another generic graph. Exact execution
cannot establish that a model extracted the correct assertion. The local
narrative-lens entity corrections, evidence ranges and explicit uncertainty
types are possible adapter inputs; some are uncommitted work and its fiction
annotations are not automatic organizational truth extraction.
Retrieve missing operands and counterevidence
After initial retrieval, identify the specific missing binding or defeater: which event an alias names, whether an action happened, an unknown amount, or an explicit cancellation or correction. Issue bounded searches for those gaps and pack complete premise groups by additional answer-relevant coverage within the same total context and round budgets. Preserve the direct retrieval path for questions that need no structured operations.
This extends existing static subqueries and premise expansion with feedback from the evidence actually found. The existing challenge experiment already retrieves scoped counterevidence; use it as a baseline rather than recreating that mechanism. An inspected derivation record should link each output value to its source spans, interpretation and operation. Quote matching and NLI are checks on parts of that record, not proof of factual truth. NLI must report model unavailability separately from a neutral result. Iterative retrieval has relevant precedent in IRCoT; temporal graph memory and graph/passage integration are explored in Zep and HippoRAG 2. Their reported gains do not predict WARM gains.
Forget scoped information across its derivations
The existing Bemula adapter reviews truncated turn text in independent batches; the published run's zero purged IDs returned does not establish correct target selection or protection against inference. Compile a request into entity, attribute, temporal scope, exceptions, replacement information and future-retention intent. Select proposition occurrences and copies across turns, summaries and derived records; preserve unrelated information from mixed turns. Make deletion, residual replacement and invalidation one recoverable operation. Use source and scope generations to reject stale replay while permitting explicitly allowed new learning. Retraction must invalidate dependent postings, caches and evidence.
For declared inference rules, represent alternative support as sets of required
premises. Copies and summaries retain their underlying source dependencies;
they are not independent support. Seek a bounded deletion or coarsening plan
that breaks every known proof of the forbidden target while respecting protected facts. If preservation
constraints make this impossible, report that conflict. These checks cover only
the recorded evidence and rule vocabulary, not arbitrary model inference or
guessing. WARM already has exact forgetting scopes and research claim-family
deletion; the new invariant spans alternative derivations and replay. The
narrative-lens actor-forgetting action retains proposition/evidence history and
must not be substituted for WARM privacy deletion.
Compare mechanisms before a live benchmark
Use this order of local/free development checks:
| Comparison | What it isolates |
|---|---|
| Same retained sources: reader, ledger-only reader, ledger plus typed operations | Extraction and evidence use, separate from retrieval |
| Supplied correct assertions versus extracted assertions | Reasoning/retrieval ceiling versus extraction errors |
| Static searches versus missing-operand searches at equal budgets | Evidence coverage after final packing |
| Bounded proof-aware forgetting versus current scope selection | Forgotten/preserved proposition sets and alternative support |
Use independently generated cases with homonyms, reversed relations, repeated events, updates, ambiguous dates, mixed sensitive/unrelated facts and alternate proofs. Rename entities, reorder independent observations and split/merge turns without changing the expected semantics. Measure unsupported answers, false merges, operand coverage, extraction failures, latency, memory and mutation cost. Test crash/retry/reopen, stale replay and sensitive-marker absence for deletion.
Associative sketches are a later candidate-generation experiment. The tested global phase sidecar lost to exact intersection, and phase-routing screens also failed their gates. Any different scoped sketch must beat exact postings and conventional semantic expansion under matched memory/output budgets, resolve to exact current source IDs, and rebuild affected segments after deletion. It cannot establish absence, exact counts or erasure.
No paid development calls or new live benchmark runs are authorized by this work. The held-out split is spent by the single run above; no further held-out evaluation of a tuned variant is valid. A later explicitly authorized live comparison must use the native pipeline, freeze extraction/retrieval/reader policies and budgets, count every model stage, retain regressions, and separate retrieval coverage from end-to-end QA and forgetting metrics. These directions target memory quality; they do not establish SIFT/VIBE ANN improvements.
Checked-in inputs and reports
The 2026-09-14 reports were produced locally on an Apple M4, macOS arm64. The Node evaluation records Node version, model identity, preprocessing fingerprint, artifact revisions, dtype, and dataset SHA-256. Rust reports record engine version, dimensions, corpus size, architecture, and operating system.
Operational relevance fixture: 12 documents and 12 distinct labeled queries.
Paraphrase fixture: 10 documents and 10 queries with less direct lexical overlap.
Paraphrase results: lexical, hybrid, optional reranked relevance and latency, plus projection fidelity.
Concurrent sparse query/update reports at 1,200 and 10,000 stored vectors.
These are small curated regression datasets, not externally validated benchmark collections. The queries are distinct from the stored passages, but this is not a blind evaluation. Do not extrapolate semantic accuracy or capacity from them. Workload timings are short local runs with normal OS caching; they are not throughput guarantees or comparisons with the previous implementation. Training happens before the concurrent interval. Updates invalidate the ANN cache, so the timed workload includes fallback retrieval.
Run document relevance without a model
cargo run --release --bin warm-eval -- \
--dataset tests/fixtures/relevance.json --dimensions 4096 --k 3 --assert-min-recall 0.90Dataset format
A dataset is a UTF-8 JSON object with nonempty documents and queries arrays.
Queries are evaluation inputs, not documents to ingest. Each query's nonempty
relevantIds array names existing document IDs; repeated labels count once.
Use unique document IDs and independently worded queries.
| Field | Required | Meaning |
|---|---|---|
documents[].id | yes | Nonempty document identifier |
documents[].text | yes | Original source text to index |
documents[].sourceUri | no | Source reference retained with chunks |
documents[].version | no | Application-defined source version |
documents[].metadata | no | JSON metadata retained with the document |
documents[].chunkWords | no | Target word count per chunk, 1–4096; defaults to 256 |
documents[].overlapWords | no | Word overlap below chunkWords; defaults to the smaller of 32 and chunkWords - 1 |
documents[].storeText | no | Whether to retain chunk text; defaults to true |
documents[].embeddings | no | One finite numeric vector per generated chunk |
documents[].titleWeight | no | First-line term weighting in the first chunk, 1–16; 1 or absent leaves it unchanged |
queries[].text | yes | Query text, used for lexical retrieval |
queries[].relevantIds | yes | Document IDs judged relevant; binary labels, without grades |
queries[].embedding | no | Query vector in the same embedding space as the documents |
embeddingSpace | no | Object with required model, revision, dimensions, normalization and metric fields; see embedding compatibility |
For text-only lexical evaluation, omit all embedding fields. Embedding evaluation
requires compatible vectors and the embedding-space configuration described in
the document API; the harness does not generate vectors or load a model. Unknown
top-level fields such as description are ignored. Invalid JSON, missing fields,
empty datasets and labels referencing absent IDs fail the run.
Save this complete example as my.json:
{
"documents": [
{"id": "backup", "text": "Restore lost records from a verified backup on a separate disk."},
{"id": "index", "text": "Schedule search index maintenance outside the ingestion path."}
],
"queries": [
{"text": "How can I restore lost records?", "relevantIds": ["backup"]}
]
}cargo run --release --bin warm-eval -- --dataset my.json --dimensions 4096 --k 3--k is the number of distinct document IDs scored per query (1–1000, default
10). Retrieval collects at most 1,000 chunk candidates, keeps the first occurrence
of each document ID, then scores the first k. Recall is the fraction of labeled
documents retrieved, averaged across queries. MRR uses the first relevant rank;
nDCG uses binary relevance. --assert-min-recall 0.90 fails if average recall@k
is below 0.90; it does not impose a floor on every query or on MRR/nDCG. Omitting
the flag sets a zero recall floor. Latency covers retrieval before document
deduplication, excludes ingestion, and is reported in microseconds.
The JSON output contains document-deduplicated recall@k, MRR@k, nDCG@k, and query latency. CI runs this fixture alongside the existing synthetic self-recall floor. Add domain documents and independent relevance labels to test application behavior; do not merely add exact copies of stored text as queries.
Run real local model evaluation
Build the native module with npm run build and install @huggingface/transformers separately.
Obtain model artifacts in explicit local directories. The recorded run used these ONNX q8
artifacts:
| Role | Model | Artifact revision |
|---|---|---|
| Embedding | Xenova/all-MiniLM-L6-v2 | 751bff37182d3f1213fa05d7196b954e230abad9 |
| Reranking | Xenova/ms-marco-MiniLM-L-6-v2 | a09144355adeed5f58c8ed011d209bf8ee5a1fec |
node scripts/evaluate-local-model.mjs \
--model-dir /path/to/minilm \
--revision 751bff37182d3f1213fa05d7196b954e230abad9 \
--dataset tests/fixtures/semantic-paraphrases.json \
--reranker-dir /path/to/reranker \
--reranker-revision a09144355adeed5f58c8ed011d209bf8ee5a1fec \
--output /tmp/paraphrase-results.jsonOmit both reranker options to evaluate embeddings alone. Model inference uses mean-pooled,
L2-normalized embeddings; query/document prefixes and dtype are included in the adapter's
schema revision fingerprint. The application must configure the store from embedder.space.
Reusing an artifact label after changing its files defeats revision checking, so keep local
artifacts immutable. See Transformers.js local-model configuration.
The evaluation reports hit@1, hit@5, MRR@5, and p95 query latency for lexical and hybrid retrieval, with a separate reranked result when enabled. Model loading and ingestion are excluded from query latency; the first query is not separately warmed up. It also embeds the same corpus into the sparse signed projection and measures its top-5 neighbor overlap against exact dense cosine using distinct queries. That measures approximation fidelity, not semantic relevance. Exact dense document retrieval avoids this sparse projection loss.
Concurrent workload
cargo run --release --features cli --bin warm-workload -- --vectors 1200 --operations 300 --dimensions 4096
cargo run --release --features cli --bin warm-workload -- --vectors 10000 --operations 1000 --dimensions 4096One writer replaces vectors and also deletes/reinserts every fifth ID while one reader queries top-10 neighbors. Reports include p95/p99 latency, elapsed time, and final live count. For capacity planning, increase the corpus and workload duration, exercise real embeddings and metadata filters, monitor resident memory/disk use, and include compaction and maintenance.
Distribution checks
npm test exercises the actual native public APIs across child-process restarts and checks
queue backpressure. npm run test:package packs the built application, installs the tarball
in a temporary project, and loads CJS, ESM, the native module, and the document adapter. CI
runs native/package checks on Linux, macOS, and Windows; local results establish only the
current machine's behavior. Publishing remains a separate release action.
npm run test:types compiles a consumer of the generated native declarations and document adapter under strict TypeScript settings, including invalid-input type checks.
512 files · 481 not served here
- .bestpractices.json (not served here)
- .dockerignore (not served here)
- .editorconfig (not served here)
- .gitattributes (not served here)
- .github/CODEOWNERS (not served here)
- .github/FUNDING.yml (not served here)
- .github/ISSUE_TEMPLATE/bug_report.yml (not served here)
- .github/ISSUE_TEMPLATE/config.yml (not served here)
- .github/ISSUE_TEMPLATE/feature_request.yml (not served here)
- .github/SECURITY.md (not served here)
- .github/SUPPORT.md (not served here)
- .github/badges/coverage.json (not served here)
- .github/dependabot.yml (not served here)
- .github/pull_request_template.md (not served here)
- .github/workflows/bench-refresh.yml (not served here)
- .github/workflows/bindings.yml (not served here)
- .github/workflows/changelog.yml (not served here)
- .github/workflows/ci.yml (not served here)
- .github/workflows/coverage.yml (not served here)
- .github/workflows/dco.yml (not served here)
- .github/workflows/dependency-review.yml (not served here)
- .github/workflows/docs.yml (not served here)
- .github/workflows/examples.yml (not served here)
- .github/workflows/format.yml (not served here)
- .github/workflows/fuzz.yml (not served here)
- .github/workflows/importers.yml (not served here)
- .github/workflows/js-sdk.yml (not served here)
- .github/workflows/links.yml (not served here)
- .github/workflows/mcp-container.yml (not served here)
- .github/workflows/npm-packages.yml (not served here)
- .github/workflows/python-wheels.yml (not served here)
- .github/workflows/release.yml (not served here)
- .github/workflows/reproducible.yml (not served here)
- .github/workflows/retire-legacy-npm.yml (not served here)
- .github/workflows/scorecard.yml (not served here)
- .github/workflows/standards-interop.yml (not served here)
- .github/workflows/warm-js-sdk-release.yml (not served here)
- .github/workflows/warm-mcp-release.yml (not served here)
- .github/workflows/warm-models-release.yml (not served here)
- .github/workflows/warm-py-release.yml (not served here)
- .github/workflows/warm-sdk-release.yml (not served here)
- .gitignore (not served here)
- .lychee.toml (not served here)
- .npmignore (not served here)
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CHANGELOG.md
- CITATION.cff (not served here)
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- Cargo.lock (not served here)
- Cargo.toml (not served here)
- Dockerfile (not served here)
- LICENSE
- README.md
- SECURITY.md
- assets/crystal-halo/README.txt (not served here)
- assets/crystal-halo/crystal-detailed-loop.apng (not served here)
- assets/crystal-halo/crystal-detailed-loop.svg (not served here)
- assets/crystal-halo/crystal-detailed-loop.webp (not served here)
- assets/crystal-halo/crystal-detailed-static.png (not served here)
- assets/crystal-halo/crystal-detailed-static.svg (not served here)
- assets/crystal-halo/source/build_additional_exports.py (not served here)
- assets/crystal-halo/source/build_crystal_halo.py (not served here)
- assets/crystal-halo/source/crystal-halo-geometry.json (not served here)
- assets/social-preview.png (not served here)
- benches/audit_delivery.rs (not served here)
- benches/ingest_alloc.rs (not served here)
- benches/intersection_kernels.rs (not served here)
- benches/query_alloc.rs (not served here)
- benches/vector_record_query.rs (not served here)
- benches/vector_updates.rs (not served here)
- benches/warm_benchmark.rs (not served here)
- benchmarks/ann-benchmarks/campaign/ga.py (not served here)
- benchmarks/ann-benchmarks/campaign/gen_heldout.py (not served here)
- benchmarks/ann-benchmarks/campaign/mkdefs.py (not served here)
- benchmarks/ann-benchmarks/campaign/mkdefs_ivf.py (not served here)
- benchmarks/ann-benchmarks/campaign/mkreport.py (not served here)
- benchmarks/ann-benchmarks/campaign/plans/b1-sift.json (not served here)
- benchmarks/ann-benchmarks/campaign/plans/b2-glove.json (not served here)
- benchmarks/ann-benchmarks/campaign/plans/g1-sift.json (not served here)
- benchmarks/ann-benchmarks/campaign/prebuild.py (not served here)
- benchmarks/ann-benchmarks/campaign/prof.sh (not served here)
- benchmarks/ann-benchmarks/campaign/profq.py (not served here)
- benchmarks/ann-benchmarks/campaign/run_gen.py (not served here)
- benchmarks/ann-benchmarks/campaign/summ.py (not served here)
- benchmarks/ann-benchmarks/campaign/test_campaign_integrity.py (not served here)
- benchmarks/ann-benchmarks/campaign/warm_module_campaign.py (not served here)
- benchmarks/ann-benchmarks/campaign/warmivf_module.py (not served here)
- benchmarks/ann-benchmarks/warm/Dockerfile (not served here)
- benchmarks/ann-benchmarks/warm/config.yml (not served here)
- benchmarks/ann-benchmarks/warm/module.py (not served here)
- benchmarks/competitive/GAPS.json (not served here)
- benchmarks/competitive/README-block.md (not served here)
- benchmarks/competitive/ann_updatable_measure.py (not served here)
- benchmarks/competitive/lucene/LuceneBm25.java (not served here)
- benchmarks/competitive/modal_run.py (not served here)
- benchmarks/competitive/predictions/heavy-20261021T093821.json (not served here)
- benchmarks/competitive/repin_compare.py (not served here)
- benchmarks/competitive/requirements/annoy.footprint.in (not served here)
- benchmarks/competitive/requirements/annoy.footprint.txt (not served here)
- benchmarks/competitive/requirements/annoy.in (not served here)
- benchmarks/competitive/requirements/annoy.txt (not served here)
- benchmarks/competitive/requirements/bm25s.footprint.in (not served here)
- benchmarks/competitive/requirements/bm25s.footprint.txt (not served here)
- benchmarks/competitive/requirements/bm25s.in (not served here)
- benchmarks/competitive/requirements/bm25s.txt (not served here)
- benchmarks/competitive/requirements/chroma.footprint.in (not served here)
- benchmarks/competitive/requirements/chroma.footprint.txt (not served here)
- benchmarks/competitive/requirements/chroma.in (not served here)
- benchmarks/competitive/requirements/chroma.txt (not served here)
- benchmarks/competitive/requirements/diskann.footprint.in (not served here)
- benchmarks/competitive/requirements/diskann.footprint.txt (not served here)
- benchmarks/competitive/requirements/diskann.in (not served here)
- benchmarks/competitive/requirements/diskann.txt (not served here)
- benchmarks/competitive/requirements/duckdb.footprint.in (not served here)
- benchmarks/competitive/requirements/duckdb.footprint.txt (not served here)
- benchmarks/competitive/requirements/duckdb.in (not served here)
- benchmarks/competitive/requirements/duckdb.txt (not served here)
- benchmarks/competitive/requirements/faiss.footprint.in (not served here)
- benchmarks/competitive/requirements/faiss.footprint.txt (not served here)
- benchmarks/competitive/requirements/faiss.in (not served here)
- benchmarks/competitive/requirements/faiss.txt (not served here)
- benchmarks/competitive/requirements/hnswlib.footprint.in (not served here)
- benchmarks/competitive/requirements/hnswlib.footprint.txt (not served here)
- benchmarks/competitive/requirements/hnswlib.in (not served here)
- benchmarks/competitive/requirements/hnswlib.txt (not served here)
- benchmarks/competitive/requirements/lancedb.footprint.in (not served here)
- benchmarks/competitive/requirements/lancedb.footprint.txt (not served here)
- benchmarks/competitive/requirements/lancedb.in (not served here)
- benchmarks/competitive/requirements/lancedb.txt (not served here)
- benchmarks/competitive/requirements/milvus.footprint.in (not served here)
- benchmarks/competitive/requirements/milvus.footprint.txt (not served here)
- benchmarks/competitive/requirements/milvus.in (not served here)
- benchmarks/competitive/requirements/milvus.txt (not served here)
- benchmarks/competitive/requirements/ngt.footprint.in (not served here)
- benchmarks/competitive/requirements/ngt.footprint.txt (not served here)
- benchmarks/competitive/requirements/ngt.in (not served here)
- benchmarks/competitive/requirements/ngt.txt (not served here)
- benchmarks/competitive/requirements/pynndescent.footprint.in (not served here)
- benchmarks/competitive/requirements/pynndescent.footprint.txt (not served here)
- benchmarks/competitive/requirements/pynndescent.in (not served here)
- benchmarks/competitive/requirements/pynndescent.txt (not served here)
- benchmarks/competitive/requirements/qdrant.footprint.in (not served here)
- benchmarks/competitive/requirements/qdrant.footprint.txt (not served here)
- benchmarks/competitive/requirements/qdrant.in (not served here)
- benchmarks/competitive/requirements/qdrant.txt (not served here)
- benchmarks/competitive/requirements/scann.footprint.in (not served here)
- benchmarks/competitive/requirements/scann.footprint.txt (not served here)
- benchmarks/competitive/requirements/scann.in (not served here)
- benchmarks/competitive/requirements/scann.txt (not served here)
- benchmarks/competitive/requirements/server-clients.footprint.in (not served here)
- benchmarks/competitive/requirements/server-clients.footprint.txt (not served here)
- benchmarks/competitive/requirements/server-clients.in (not served here)
- benchmarks/competitive/requirements/server-clients.txt (not served here)
- benchmarks/competitive/requirements/sqlite-vec.footprint.in (not served here)
- benchmarks/competitive/requirements/sqlite-vec.footprint.txt (not served here)
- benchmarks/competitive/requirements/sqlite-vec.in (not served here)
- benchmarks/competitive/requirements/sqlite-vec.txt (not served here)
- benchmarks/competitive/requirements/stdlib-prev.footprint.in (not served here)
- benchmarks/competitive/requirements/stdlib-prev.footprint.txt (not served here)
- benchmarks/competitive/requirements/stdlib-prev.in (not served here)
- benchmarks/competitive/requirements/stdlib-prev.txt (not served here)
- benchmarks/competitive/requirements/stdlib.footprint.in (not served here)
- benchmarks/competitive/requirements/stdlib.footprint.txt (not served here)
- benchmarks/competitive/requirements/stdlib.in (not served here)
- benchmarks/competitive/requirements/stdlib.txt (not served here)
- benchmarks/competitive/requirements/tantivy-prev.footprint.in (not served here)
- benchmarks/competitive/requirements/tantivy-prev.footprint.txt (not served here)
- benchmarks/competitive/requirements/tantivy-prev.in (not served here)
- benchmarks/competitive/requirements/tantivy-prev.txt (not served here)
- benchmarks/competitive/requirements/tantivy.footprint.in (not served here)
- benchmarks/competitive/requirements/tantivy.footprint.txt (not served here)
- benchmarks/competitive/requirements/tantivy.in (not served here)
- benchmarks/competitive/requirements/tantivy.txt (not served here)
- benchmarks/competitive/requirements/usearch.footprint.in (not served here)
- benchmarks/competitive/requirements/usearch.footprint.txt (not served here)
- benchmarks/competitive/requirements/usearch.in (not served here)
- benchmarks/competitive/requirements/usearch.txt (not served here)
- benchmarks/competitive/requirements/voyager.footprint.in (not served here)
- benchmarks/competitive/requirements/voyager.footprint.txt (not served here)
- benchmarks/competitive/requirements/voyager.in (not served here)
- benchmarks/competitive/requirements/voyager.txt (not served here)
- benchmarks/competitive/requirements/whoosh.footprint.in (not served here)
- benchmarks/competitive/requirements/whoosh.footprint.txt (not served here)
- benchmarks/competitive/requirements/whoosh.in (not served here)
- benchmarks/competitive/requirements/whoosh.txt (not served here)
- benchmarks/competitive/tests/test_ann_systems.py (not served here)
- benchmarks/competitive/tests/test_common.py (not served here)
- benchmarks/competitive/tests/test_server.py (not served here)
- benchmarks/competitive/tests/test_table.py (not served here)
- benchmarks/competitive/tests/test_text_systems.py (not served here)
- benchmarks/competitive/tests/test_warm_ann_build.py (not served here)
- benchmarks/competitive/warm-bench (not served here)
- benchmarks/competitive/warmbench/__init__.py (not served here)
- benchmarks/competitive/warmbench/_spawner.py (not served here)
- benchmarks/competitive/warmbench/analyze.py (not served here)
- benchmarks/competitive/warmbench/analyzer_latency.py (not served here)
- benchmarks/competitive/warmbench/ann_worker.py (not served here)
- benchmarks/competitive/warmbench/cli.py (not served here)
- benchmarks/competitive/warmbench/common.py (not served here)
- benchmarks/competitive/warmbench/data.py (not served here)
- benchmarks/competitive/warmbench/envs.py (not served here)
- benchmarks/competitive/warmbench/h5_convert.py (not served here)
- benchmarks/competitive/warmbench/jars.py (not served here)
- benchmarks/competitive/warmbench/land.py (not served here)
- benchmarks/competitive/warmbench/multilingual.py (not served here)
- benchmarks/competitive/warmbench/registry.py (not served here)
- benchmarks/competitive/warmbench/runner.py (not served here)
- benchmarks/competitive/warmbench/server_proc.py (not served here)
- benchmarks/competitive/warmbench/server_registry.py (not served here)
- benchmarks/competitive/warmbench/server_runner.py (not served here)
- benchmarks/competitive/warmbench/server_worker.py (not served here)
- benchmarks/competitive/warmbench/servers.py (not served here)
- benchmarks/competitive/warmbench/table.py (not served here)
- benchmarks/competitive/warmbench/text_worker.py (not served here)
- benchmarks/competitive/warmbench/textdata.py (not served here)
- benchmarks/cue_tags/cue_tagger.py (not served here)
- benchmarks/cue_tags/labels.csv (not served here)
- benchmarks/cue_tags/measure.py (not served here)
- benchmarks/cue_tags/sample.py (not served here)
- benchmarks/cue_tags/stale_arms.py (not served here)
- benchmarks/embedding/agreement.py (not served here)
- benchmarks/embedding/agreement_sample.json (not served here)
- benchmarks/embedding/assemble_selection.py (not served here)
- benchmarks/embedding/bench_torch_cpu.py (not served here)
- benchmarks/embedding/embed_store_bench.rs (not served here)
- benchmarks/embedding/pin_model.py (not served here)
- benchmarks/embedding/reference_granite-embedding-30m-english.json (not served here)
- benchmarks/embedding/run_engine_eval.py (not served here)
- benchmarks/embedding/run_store_eval.py (not served here)
- benchmarks/embedding/select_model.py (not served here)
- benchmarks/evidence/MANIFEST.json (not served here)
- benchmarks/evidence/README.md (not served here)
- benchmarks/evidence/retired-inputs.json (not served here)
- benchmarks/modal_benchmark.py (not served here)
- benchmarks/private_search/lattice_estimate.py (not served here)
- benchmarks/private_search/lwe_core_svp.py (not served here)
- benchmarks/public/accuracy_qualification/PLAN.json (not served here)
- benchmarks/public/accuracy_qualification/analyze.mjs (not served here)
- benchmarks/public/accuracy_qualification/prepare.py (not served here)
- benchmarks/public/accuracy_qualification/pyproject.toml (not served here)
- benchmarks/public/accuracy_qualification/run.mjs (not served here)
- benchmarks/public/accuracy_qualification/test-analyze.mjs (not served here)
- benchmarks/public/accuracy_qualification/test_prepare.py (not served here)
- benchmarks/public/accuracy_qualification/uv.lock (not served here)
- benchmarks/public/aml_cycle2/README.md (not served here)
- benchmarks/public/aml_cycle2/adapter.py (not served here)
- benchmarks/public/aml_cycle2/experimental/__init__.py (not served here)
- benchmarks/public/aml_cycle2/experimental/citation_matches.csv (not served here)
- benchmarks/public/aml_cycle2/experimental/evidence_selection.py (not served here)
- benchmarks/public/aml_cycle2/experimental/findings.json (not served here)
- benchmarks/public/aml_cycle2/experimental/semantic_cases.json (not served here)
- benchmarks/public/aml_cycle2/experimental/test_evidence_selection.py (not served here)
- benchmarks/public/aml_cycle2/gce_install.sh (not served here)
- benchmarks/public/aml_cycle2/local_host.py (not served here)
- benchmarks/public/aml_cycle2/modal_deploy.py (not served here)
- benchmarks/public/aml_cycle2/runtime-requirements.in (not served here)
- benchmarks/public/aml_cycle2/runtime-requirements.txt (not served here)
- benchmarks/public/aml_cycle2/test_adapter.py (not served here)
- benchmarks/public/aml_cycle2/test_local_host.py (not served here)
- benchmarks/public/aml_cycle2/test_query.py (not served here)
- benchmarks/public/analyze_glove_batch_pool.py (not served here)
- benchmarks/public/analyze_glove_batch_pool_feature.py (not served here)
- benchmarks/public/analyze_glove_batch_pool_isolation.py (not served here)
- benchmarks/public/analyze_glove_development.py (not served here)
- benchmarks/public/ann_extra.py (not served here)
- benchmarks/public/ann_failure_map.py (not served here)
- benchmarks/public/ann_modal_confirm.py (not served here)
- benchmarks/public/ann_modal_graph.py (not served here)
- benchmarks/public/ann_modal_repair.py (not served here)
- benchmarks/public/audit_calibration.py (not served here)
- benchmarks/public/audit_serving_job.py (not served here)
- benchmarks/public/batching_assemble.py (not served here)
- benchmarks/public/batching_compare.py (not served here)
- benchmarks/public/batching_inputs.py (not served here)
- benchmarks/public/batching_timing.py (not served here)
- benchmarks/public/bemula/README.md (not served here)
- benchmarks/public/bemula/run_warm.py (not served here)
- benchmarks/public/bemula/summarize.py (not served here)
- benchmarks/public/bemula/warm_adapter.py (not served here)
- benchmarks/public/build_native_bridge.py (not served here)
- benchmarks/public/check_algebraic_codebook_report.py (not served here)
- benchmarks/public/check_compaction_updates.py (not served here)
- benchmarks/public/check_competitive_ann.py (not served here)
- benchmarks/public/check_document_competition.py (not served here)
- benchmarks/public/check_document_operations.py (not served here)
- benchmarks/public/check_document_search_compare.py (not served here)
- benchmarks/public/check_document_sqlite_rank_control.py (not served here)
- benchmarks/public/check_encoder_version_diagnostic.py (not served here)
- benchmarks/public/check_evidence_budget.py (not served here)
- benchmarks/public/check_evidence_completeness.py (not served here)
- benchmarks/public/check_factored_evidence.py (not served here)
- benchmarks/public/check_geometry_report.py (not served here)
- benchmarks/public/check_learned_sparse.py (not served here)
- benchmarks/public/check_lexical_relevance.py (not served here)
- benchmarks/public/check_longmemeval_answers.py (not served here)
- benchmarks/public/check_longmemeval_complete_history.py (not served here)
- benchmarks/public/check_longmemeval_full_history.py (not served here)
- benchmarks/public/check_longmemeval_production.py (not served here)
- benchmarks/public/check_longmemeval_role_reader.py (not served here)
- benchmarks/public/check_longmemeval_user_first.py (not served here)
- benchmarks/public/check_longmemeval_verifier.py (not served here)
- benchmarks/public/check_manifold_report.py (not served here)
- benchmarks/public/check_manifold_schema_report.py (not served here)
- benchmarks/public/check_native_harness.py (not served here)
- benchmarks/public/check_operand_report.py (not served here)
- benchmarks/public/check_operand_tampering.py (not served here)
- benchmarks/public/check_phase_path_report.py (not served here)
- benchmarks/public/check_publication_serving.py (not served here)
- benchmarks/public/check_reader_suspensions.py (not served here)
- benchmarks/public/check_sparse_composition.py (not served here)
- benchmarks/public/check_superiority_checkpoint.py (not served here)
- benchmarks/public/check_weak_reader_evidence.py (not served here)
- benchmarks/public/compact_owned_publication.py (not served here)
- benchmarks/public/compaction_updates.py (not served here)
- benchmarks/public/compare_fact_caches.py (not served here)
- benchmarks/public/competitive_ann.py (not served here)
- benchmarks/public/direct_commit_publication.py (not served here)
- benchmarks/public/document_competition.py (not served here)
- benchmarks/public/document_search_compare.py (not served here)
- benchmarks/public/document_sqlite_rank_control.py (not served here)
- benchmarks/public/durability_matrix.py (not served here)
- benchmarks/public/encoder_version_diagnostic.py (not served here)
- benchmarks/public/evaluate.py (not served here)
- benchmarks/public/evidence_budget_diagnostic.py (not served here)
- benchmarks/public/evidence_completeness.py (not served here)
- benchmarks/public/factored_evidence_diagnostic.py (not served here)
- benchmarks/public/geometry_experiments.py (not served here)
- benchmarks/public/instrument_publication.py (not served here)
- benchmarks/public/learned_sparse_dense_tune.py (not served here)
- benchmarks/public/learned_sparse_encode.py (not served here)
- benchmarks/public/learned_sparse_results.py (not served here)
- benchmarks/public/lexical_relevance_tune.py (not served here)
- benchmarks/public/lme_context/README.md (not served here)
- benchmarks/public/lme_context/breakdown.py (not served here)
- benchmarks/public/lme_context/extract_modal.py (not served here)
- benchmarks/public/lme_context/prep_extract.py (not served here)
- benchmarks/public/lme_context/render.py (not served here)
- benchmarks/public/lme_context/run_arm.py (not served here)
- benchmarks/public/locomo/assemble_results.py (not served here)
- benchmarks/public/locomo/locomo_bench.py (not served here)
- benchmarks/public/locomo/mem0_prompts.py (not served here)
- benchmarks/public/locomo/test_locomo_bench.py (not served here)
- benchmarks/public/locomo_comparison.py (not served here)
- benchmarks/public/longmemeval_500_frozen_config.json (not served here)
- benchmarks/public/longmemeval_answer_evidence.py (not served here)
- benchmarks/public/longmemeval_compact_context.py (not served here)
- benchmarks/public/longmemeval_complete_history.py (not served here)
- benchmarks/public/longmemeval_config.json (not served here)
- benchmarks/public/longmemeval_dev_conversations.py (not served here)
- benchmarks/public/longmemeval_dev_sources.py (not served here)
- benchmarks/public/longmemeval_full_history.py (not served here)
- benchmarks/public/longmemeval_history_budget.py (not served here)
- benchmarks/public/longmemeval_incremental_judges.py (not served here)
- benchmarks/public/longmemeval_local_modal.py (not served here)
- benchmarks/public/longmemeval_local_reader.py (not served here)
- benchmarks/public/longmemeval_memory_recall.py (not served here)
- benchmarks/public/longmemeval_modal.py (not served here)
- benchmarks/public/longmemeval_obligations.py (not served here)
- benchmarks/public/longmemeval_official_qa.py (not served here)
- benchmarks/public/longmemeval_official_qa_500.py (not served here)
- benchmarks/public/longmemeval_pipeline.py (not served here)
- benchmarks/public/longmemeval_production.py (not served here)
- benchmarks/public/longmemeval_qa_l01.py (not served here)
- benchmarks/public/longmemeval_quality.py (not served here)
- benchmarks/public/longmemeval_quota.py (not served here)
- benchmarks/public/longmemeval_reader_api.py (not served here)
- benchmarks/public/longmemeval_reader_api_v2.py (not served here)
- benchmarks/public/longmemeval_reader_budget.py (not served here)
- benchmarks/public/longmemeval_retrieval.py (not served here)
- benchmarks/public/longmemeval_retrieval_limits.py (not served here)
- benchmarks/public/longmemeval_role_reader.py (not served here)
- benchmarks/public/longmemeval_role_retrieval.py (not served here)
- benchmarks/public/longmemeval_run_preopen.sh (not served here)
- benchmarks/public/longmemeval_run_preopen_r3.sh (not served here)
- benchmarks/public/longmemeval_session_closure.py (not served here)
- benchmarks/public/longmemeval_sota.py (not served here)
- benchmarks/public/longmemeval_sota_closure.py (not served here)
- benchmarks/public/longmemeval_sota_context.py (not served here)
- benchmarks/public/longmemeval_sota_expand.py (not served here)
- benchmarks/public/longmemeval_sota_hybrid.py (not served here)
- benchmarks/public/longmemeval_sota_receipts.py (not served here)
- benchmarks/public/longmemeval_sota_replay.py (not served here)
- benchmarks/public/longmemeval_sota_report.py (not served here)
- benchmarks/public/longmemeval_split.json (not served here)
- benchmarks/public/longmemeval_split.py (not served here)
- benchmarks/public/longmemeval_sweep.py (not served here)
- benchmarks/public/longmemeval_user_first.py (not served here)
- benchmarks/public/longmemeval_verifier.py (not served here)
- benchmarks/public/longmemeval_verifier_sources.py (not served here)
- benchmarks/public/longmemeval_weak_reader.py (not served here)
- benchmarks/public/lucene_hnsw/LuceneHnsw.java (not served here)
- benchmarks/public/matched_server/PLAN.json (not served here)
- benchmarks/public/matched_server/adapters.py (not served here)
- benchmarks/public/matched_server/calibrate.py (not served here)
- benchmarks/public/matched_server/check_adapters.py (not served here)
- benchmarks/public/matched_server/check_measure.py (not served here)
- benchmarks/public/matched_server/check_qualification.py (not served here)
- benchmarks/public/matched_server/claim_gate.py (not served here)
- benchmarks/public/matched_server/diagnose_search.py (not served here)
- benchmarks/public/matched_server/distribution.py (not served here)
- benchmarks/public/matched_server/measure.py (not served here)
- benchmarks/public/matched_server/oracle.py (not served here)
- benchmarks/public/matched_server/prepare_inputs.py (not served here)
- benchmarks/public/matched_server/pyproject.toml (not served here)
- benchmarks/public/matched_server/qualify.py (not served here)
- benchmarks/public/matched_server/seal_qualification.py (not served here)
- benchmarks/public/matched_server/test_claim_gate.py (not served here)
- benchmarks/public/matched_server/test_distribution.py (not served here)
- benchmarks/public/matched_server/test_measure.py (not served here)
- benchmarks/public/matched_server/test_prepare_inputs.py (not served here)
- benchmarks/public/matched_server/test_protocol.py (not served here)
- benchmarks/public/matched_server/test_qualify.py (not served here)
- benchmarks/public/matched_server/test_seal_qualification.py (not served here)
- benchmarks/public/matched_server/uv.lock (not served here)
- benchmarks/public/matched_server/verify_evidence.py (not served here)
- benchmarks/public/mem0_protocol/README.md (not served here)
- benchmarks/public/mem0_protocol/budget_ledger.py (not served here)
- benchmarks/public/mem0_protocol/clear_failed.py (not served here)
- benchmarks/public/mem0_protocol/grade_validation.py (not served here)
- benchmarks/public/mem0_protocol/live_smoke.py (not served here)
- benchmarks/public/mem0_protocol/manifest_template.json (not served here)
- benchmarks/public/mem0_protocol/openai_proxy.py (not served here)
- benchmarks/public/mem0_protocol/price.py (not served here)
- benchmarks/public/mem0_protocol/protocol_scope.py (not served here)
- benchmarks/public/mem0_protocol/quota_resume.py (not served here)
- benchmarks/public/mem0_protocol/retrieval_config.json (not served here)
- benchmarks/public/mem0_protocol/retrieval_config_count_matched.json (not served here)
- benchmarks/public/mem0_protocol/retrieval_config_hybrid_dev.json (not served here)
- benchmarks/public/mem0_protocol/retrieval_config_ordered_dev.json (not served here)
- benchmarks/public/mem0_protocol/reuse_locomo_dev.py (not served here)
- benchmarks/public/mem0_protocol/run_mem0_protocol.py (not served here)
- benchmarks/public/mem0_protocol/shim.py (not served here)
- benchmarks/public/mem0_protocol/test_budget_ledger.py (not served here)
- benchmarks/public/mem0_protocol/test_clear_failed.py (not served here)
- benchmarks/public/mem0_protocol/test_openai_proxy.py (not served here)
- benchmarks/public/mem0_protocol/test_quota_resume.py (not served here)
- benchmarks/public/mem0_protocol/test_reuse_locomo_dev.py (not served here)
- benchmarks/public/mem0_protocol/test_run_mem0_protocol.py (not served here)
- benchmarks/public/mem0_protocol/test_shim.py (not served here)
- benchmarks/public/mobile_qualification/ANDROID-PLAN.json (not served here)
- benchmarks/public/mobile_qualification/IOS-PLAN.json (not served here)
- benchmarks/public/mobile_qualification/PLAN.json (not served here)
- benchmarks/public/mobile_qualification/RecoveryConsumerTest.kt (not served here)
- benchmarks/public/native_bridge/Cargo.toml (not served here)
- benchmarks/public/native_bridge/build.rs (not served here)
- benchmarks/public/native_bridge/src/lib.rs (not served here)
- benchmarks/public/native_bridge/src/vertex_support.rs (not served here)
- benchmarks/public/native_harness.py (not served here)
- benchmarks/public/native_recovery/PLAN.json (not served here)
- benchmarks/public/native_recovery/Program.cs (not served here)
- benchmarks/public/native_recovery/RecoveryConsumer.java (not served here)
- benchmarks/public/native_recovery/recovery.c (not served here)
- benchmarks/public/native_recovery/recovery.go (not served here)
- benchmarks/public/native_recovery/run.py (not served here)
- benchmarks/public/native_recovery/test_protocol.py (not served here)
- benchmarks/public/node_recovery.cjs (not served here)
- benchmarks/public/operand_experiment.py (not served here)
- benchmarks/public/platform_microbench_aggregate.py (not served here)
- benchmarks/public/platform_modal_avx512.py (not served here)
- benchmarks/public/platform_modal_e2e.py (not served here)
- benchmarks/public/platform_paired.py (not served here)
- benchmarks/public/prepare.py (not served here)
- benchmarks/public/prepare_ann_scale.py (not served here)
- benchmarks/public/proxies/ann_proxies.py (not served here)
- benchmarks/public/proxies/beir_proxies.py (not served here)
- benchmarks/public/proxies/lme_proxies.py (not served here)
- benchmarks/public/proxies/qgraph_sim.py (not served here)
- benchmarks/public/proxies/stop_screen_report.py (not served here)
- benchmarks/public/publication_serving.py (not served here)
- benchmarks/public/publication_serving.rs (not served here)
- benchmarks/public/publication_trace.rs (not served here)
- benchmarks/public/python_sdk_recovery.py (not served here)
- benchmarks/public/qag_serving_execute.py (not served here)
- benchmarks/public/qag_serving_module.py (not served here)
- benchmarks/public/qgraph_paired.py (not served here)
- benchmarks/public/qgraph_table.py (not served here)
- benchmarks/public/reader_protocol_v1.json (not served here)
- benchmarks/public/remote_document_pilot.py (not served here)
- benchmarks/public/replay_capacity_publication.py (not served here)
- benchmarks/public/report_sparse_composition.py (not served here)
- benchmarks/public/restore_ann_checkpoint.py (not served here)
- benchmarks/public/resume_longmemeval_readers.py (not served here)
- benchmarks/public/run_glove_batch_pool_ablation.py (not served here)
- benchmarks/public/run_glove_batch_pool_feature.py (not served here)
- benchmarks/public/run_glove_batch_pool_isolation.py (not served here)
- benchmarks/public/run_glove_candidate_checks.py (not served here)
- benchmarks/public/run_glove_development.py (not served here)
- bindings/js/warm-sdk/LICENSE
- docs/ARCHITECTURE.md
- docs/COMPARISON.md
- docs/DETERMINISTIC-RESONATOR.md
- docs/GOVERNANCE.md
- docs/INTEGRATION.md
- docs/PREREGISTRATION-binding-readout.md
- docs/PRIVACY.md
- docs/PRIVATE-SEARCH.md
- docs/PUBLIC-BENCHMARKS.md
- docs/RELEASING.md
- docs/RESEARCH.md
- docs/SECURITY.md
- docs/SERVER.md
- docs/STABILITY.md
- docs/SUPERPOSITION-FLOOR.md
- docs/assets/fonts/LICENSE-OFL.txt
- docs/evaluation.md
- docs/index.md
- docs/production-readiness.md
- integrations/mcp/npm/LICENSE
- integrations/mcp/pypi/LICENSE
- tests/fixtures/vectra-0.15/LICENSE
Advantages
- Supports local-first operation with no external service calls or telemetry. evidence: README.md
- Provides a memory API that allows for explicit fact removal via a forget operation. evidence: README.md
Limitations
- The system supports only one writer per store. evidence: README.md
- The vector index build time and serving RSS are currently behind hnswlib on SIFT-1M benchmarks. evidence: README.md
Security
Risk level: Medium risk
This brain runs
Install scripts (1)
benchmarks/results/sbg_positions_development/setup.sh:sh benchmarks/results/sbg_positions_development/setup.sh
MCP servers (3)
integrations/editors/claude-code/plugin/.mcp.json(writerslogic-warm):npx -y writerslogic-warm-mcpintegrations/editors/claude-desktop/claude_desktop_config.json(writerslogic-warm):npx -y writerslogic-warm-mcpintegrations/editors/gemini-cli/gemini-extension.json(writerslogic-warm):npx -y writerslogic-warm-mcp
Hooks (1)
integrations/editors/claude-code/plugin/hooks/hooks.json(SessionStart):node
- Medium risk: runs-mcp-server-unpinned-runner (integrations/editors/claude-code/plugin/.mcp.json)
- Medium risk: runs-mcp-server-unpinned-runner (integrations/editors/claude-desktop/claude_desktop_config.json)
- Medium risk: runs-mcp-server-unpinned-runner (integrations/editors/gemini-cli/gemini-extension.json)
- Low risk: scripts-present (benchmarks/results/sbg_positions_development/setup.sh)
Attribution and licence
- Created by
- Writerslogic
- Declared authors
- WritersLogic, Inc. (declared in package.json)
- WritersLogic, Inc. (declared in pyproject.toml)
- WritersLogic Contributors (declared in CITATION.cff)
- Publisher
- Writerslogic (Official Writerslogic project)
- Source
- writerslogic/warm · commit e176d55
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Writerslogic.
Install from source
481 of its files are not served here, so there is no ZIP. writerslogic/warm at e176d55