I got tired of repeating myself to my LLM every session. rekal is an MCP server that stores memories in SQLite and retrieves them with hybrid search (BM25 + vectors + recency decay). One file, local embeddings, no API keys.
I’m going to try this out. Curious how effective it’s been for your own use, OP? Anything particularly interesting or where it still falls over and requires tuning that you’ve observed? I find these types of projects interesting in sort of an anthropological sort of way. So far, I’ve yet to try anything that hasn’t still required a great deal of intervention to keep agents using guardrails without scolding them to do so. I guess this might force them more reliably, but I’ll need to try it and find out.
The hybrid search scoring is really well thought out. One question: are the 0.4/0.4/0.2 weights fixed or configurable? To me it feels like different use cases would want different balances (e.g. a coding assistant would want higher recency weights than a research tool would).
The 0.4/0.4/0.2 weights are just based of hand wavy trail an error, will look into other options. I could make them configurable?
I think that'd be cool, maybe just a simple config option in pyproject.toml or a .rekal/config.yml would cover most use cases: they could default to 0.4/0.4/0.2 but could be overriden.
Added a mcp command for it, but i might add it as a comfig as well?
All memories should not decay at the same rate. these weights should be configurable !
Thanks, i will look into making them configurable.
Nice clean project - Python 3.14 as a requirement might be an issue for adoption...
Thanks! You're right, that's just a relic of my dev environment. Will broaden the version requirement.