Capabilities
Agent Memory
minnal embeds every turn as a semantic vector and queries a memory graph on each step. Relevant memories are injected into the conversation automatically — without the agent burning tokens on memory tools.
How it works
- Each turn is embedded and matched against the memory graph via cosine similarity.
- Hits are either injected directly or routed through a memory side-agent that verifies relevance and may do extra retrieval before injecting.
- Memories are extracted periodically — on semantic drift, every K turns, and at session end — by the same side-agent.
- An ambient process consolidates memory: deduping, resolving conflicts, flagging staleness, reorganizing the graph.
Explicit memory tools
The agent also has explicit memory.search and memory.store tools when you want fine-grained control. You can invoke them from the side, too:
/memory search "auth flow" /memory store "Use crypto.subtle for JWT signing in this repo."
Session search
Beyond memory, minnal provides RAG over previous session transcripts so you can resurface what was decided weeks ago.
/sessions search "decision: which queue we picked"
Local vs remote embeddings
Local embeddings keep memory free and private; turning them off drops idle RAM from 167 MB to 28 MB. Configure in ~/.minnal/config.toml:
toml
[memory] embeddings_local = true # set false to use remote embeddings extract_every = 12 consolidate = "ambient"