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."

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"