UNIT 02 · Memory palace storage
trusty-memory
Long-term memory an assistant can write to and recall from across sessions, organised per project rather than per conversation.
- Package
- trusty-memory
- Transport
- Unix socket; dashboard via trusty-console
- MCP tools
- 49
- Storage
- usearch + redb, on disk
A place to put what was learned
An assistant that forgets everything at the end of a session relearns your codebase every morning. trusty-memory is the store that stops that: an MCP server over a local vector index and a key-value store, where an agent writes what it worked out and recalls it by meaning later.
Memories are organised into named palaces — one per project — with rooms and
wings inside them. The naming is deliberate: a palace is anchored to a real
project directory, so the memories for one repository can never quietly bleed
into another's recall. Work outside any project and there is a single personal
palace for the notes that belong to you rather than to a codebase.
Recall that does not need the words
Recall is hybrid — lexical BM25 alongside vector similarity — so a query finds a memory that said the same thing differently. Embeddings are computed on the machine, and both the vector index and the metadata store are ordinary local files. Nothing is shipped to a hosted memory service.
memory_rememberandmemory_recallare the whole day-to-day surface;memory_recall_deeptrades latency for reach when the fast lane comes up short.- A knowledge-graph layer stores subject/predicate/object triples next to the prose, so structured facts can be asserted and queried directly rather than fished back out of a paragraph.
- A chat-session store keeps conversation turns verbatim, bypassing the signal filters that apply to ordinary memories — a transcript is not a fact and should not be deduplicated like one.
memory_recalltakes an optionalmin_scorefloor, so a caller can ask for only the hits that clear a relevance bar instead of filtering the response itself.
The dream cycle
A memory store that only ever accumulates degrades into a landfill. trusty-memory runs a consolidation pass — the dream cycle — that merges near-duplicates, prunes what has gone stale, and, when an inference backend is configured, summarises a room's older facts into canonical entries and links the originals to their replacement so the lineage stays traceable.
Task drawers — goals, milestones, checkpoints an application must re-derive across sessions — are exempt. They are never evicted and never consolidated away, however old they get, until something deletes them explicitly.
Wiring it up
trusty-memory setup installs the background service, warms the embedding model
cache, and patches the Claude settings files it finds with the right server
entry. From then on the daemon is just there.
For a manual configuration, the canonical entry runs
trusty-memory serve --stdio, which forwards every request over the daemon's
Unix domain socket and returns its answers verbatim. The stdio process never
opens the database itself, so it coexists safely with the daemon and with
other clients. The daemon has no HTTP listener and no REST API — everything
goes through that one socket. The admin dashboard that used to live here moved
to trusty-console, which reads the same socket and serves it at
/tools/memory/.
Install
tctl resolves whatever else this crate needs at runtime and
keeps macOS signing grants stable across upgrades. The other install paths — Homebrew, or cargo install from source — are on the home page.
curl -sSf https://raw.githubusercontent.com/bobmatnyc/trusty-tools/main/install.sh | sh tctl install trusty-memory
Build and test this crate from a checkout with cargo test -p trusty-memory.
Go deeper
Reference documentation for trusty-memory, plus every other crate in the workspace.