{{ hms.license }} · {{ hms.crate_version and ('v' ~ hms.crate_version) or 'open source' }} · runs on your machine
{{ hms.tagline }}
{{ hms.lede }}
-
{% for rt in hms.runtimes %}
- {{ rt.name }}{% if rt.status == 'preview' %} preview{% endif %} {% endfor %}
What are you building?
Choose a path, run an example, then inspect the evidence it returns.
Memory for an editor
Connect an MCP host to a local store. Remember, recall and inspect memories across sessions.
Search inside an app
Choose Rust, Node or a Python HTTP client, with clear package and storage boundaries.
Evaluate your results
Check known answers, inspect source passages and compare retrieval on your own questions.
Already installing? Troubleshoot setup and retrieval.
Install, ingest, search
The code below is read from the quickstart examples that CI runs on every pull request.
{% set rts = hms.runtimes | selectattr("status", "equalto", "available") | list %}{{ rt.note }}
Measured, and traceable
Both results are read from committed files under benchmarks/results/ each time the site is built.
{{ hms.headline.context }} {{ hms.headline.caveat }}
Source: {{ hms.headline.file }}{% if hms.headline.machine %} · {{ hms.headline.machine }}{% endif %} · benchmark page
- {% for line in hms.chart.summary %}
- {{ line }} {% endfor %}
Source: {{ hms.chart.file }} · {{ hms.chart.machine }} · load gate met by {{ hms.chart.gate_met }} of {{ hms.chart.gate_total }} configurations (limit {{ hms.chart.max_load }}), so throughput is indicative · benchmark page
One engine, two layers
Document search is a conventional hybrid retriever. The vector-symbolic layer is the associative memory. Both sit on one crash-safe store. Module map →
Why holographic
A hologram stores the whole picture in every fragment. A hypervector memory does the same: many facts are superposed into one long vector, no single bit holds any one fact, and damage is spread thinly over all of them.
- Bind a key to a value with XOR. The result looks like neither, and binding again with the key gives the value back.
- Bundle many bound pairs by majority vote into one vector that stays a little similar to each of them.
- Resonate: unbind with a key and compare against known values. The right one stands out from the noise, even after you corrupt the memory.
The demo uses dense binary vectors so the algebra is easy to see. The engine uses sparse binary vectors, and its document search does not rank with hypervectors; the concepts page says exactly which parts do.
{{ hms.comparison.title }}
{# Comparison slot: docs/_data/comparison.json, written by the benchmark generator, replaces the derived table. #}| System | {% for col in hms.comparison.columns %}{{ col }} | {% endfor %}
|---|---|
| {{ row.system }} | {% for v in row['values'] %}{{ v }} | {% endfor %}
{{ hms.comparison.note }} {% if hms.comparison.source %}Source: {{ hms.comparison.source }}.{% endif %}
What is in the box
{{ f.title }}
{{ f.body }}
{% endfor %}