Write
Your agent files what it hears as noun verb noun triples, as deep as they are true.
[Kushal] --likes--> [Biryani]
one JSON file per memory, about a kilobyte, git versioned
miea-mem stores what your agent learns as one readable JSON file per memory in a folder you control. Search runs on keywords and embeddings. Traversal runs on named edges the agent can read.
uv tool install miea-mem
A working demo of the read path. Click the slide to follow the rider as it picks a destination and slides down.
how it works
Your agent files what it hears as noun verb noun triples, as deep as they are true.
[Kushal] --likes--> [Biryani]
one JSON file per memory, about a kilobyte, git versioned
A question runs hybrid search. Keyword matching handles exact terms while embeddings catch paraphrases, and reciprocal rank fusion merges the two lists into one order.
keyword hits biryani, food vector hits 3 above the floor fused ranking 1. Biryani 2. food
works with keywords alone when no embedder is installed
The agent lands on the best entry memory. The signpost there lists every destination one step away before any move is made, and the agent steers along verbs until the content answers the question.
[Biryani] <--likes-- (2.00) [Postgres] --persists_with--> [WAL]
low scores cost latency, nothing gets filtered out
World claims get checked against search results in the background. The verdict attaches to the claim as edges and the claim stays stored either way.
corroborated contradicted_by [sources] some_sources_say
the verify pass owns these verbs, writes cannot fake them
why miea-mem
Memory persists on your disk and survives restarts. miea wakeup hands the session snapshot back at startup.
One readable JSON file per memory. cat it, jq it, edit it by hand. miea setup runs git init so every change is diffable and revertable.
Access scores order results and never filter them. Paging and scoped queries reach everything stored. Low rank only costs latency.
Nothing decays away on its own. miea forget removes exactly what you asked, edges first, then the file. The audit stays in your git history.
Every agent pointing at the same workspace reads the same graph and picks up each other's writes. No sync step, no cloud. Freshness is checked on every operation.
the read loop
Before moving, the agent sees everything one step away: each destination with the verb that reaches it and an access score. Direction is chosen from that list alone. It stops when a landing answers the question, steers when a destination looks right and falls back to a scoped query on a dead end.
The animation above runs this exact loop. Momentum carries the ride and the agent only steers at the forks. At ten thousand memories a landing takes about 80 milliseconds and the whole workspace fits in 65 megabytes of RAM.
* [Kushal] (anchor) first: 2026-08-23 epistemic: unverifiable destinations: [Biryani] <--likes-- (score 2.00) [Blade Runner 2049] <--likes-- (score 2.00) [Woxsen University 2022-2026] <--studied_at-- (score 2.69)
uv tool install miea-mem
then miea setup and paste the MCP block into Claude Code, Cursor or OpenCode.