// the find
Mirix-AI/MIRIX
Mirix is a multi-agent personal assistant designed to track on-screen activities and answer user questions intelligently. By capturing real-time visual data and consolidating it into structured memories, Mirix transforms raw inputs into a rich knowledge base that adapts to your digital experiences.
Mirix is a multi-agent memory system that watches your screen and organizes what it sees into six typed memory stores (episodic, semantic, procedural, etc.). It's a local-first personal AI assistant that builds context from your digital activity rather than requiring you to manually feed it information. The target audience is developers and power users who want persistent, queryable memory across sessions.
The six-layer memory taxonomy is architecturally sound — separating episodic (what happened) from semantic (facts) from procedural (how-to) means retrieval can be targeted rather than brute-forcing a single vector store. PostgreSQL with BM25 + vector similarity is a sensible dual-search approach that avoids the common mistake of treating everything as a nearest-neighbor problem. Docker Compose setup is genuinely simple — one command and you have a working backend plus dashboard. The eval harness in the evals/ directory (LongMem, RULER, MAB benchmarks) suggests they're actually measuring retrieval quality rather than just shipping vibes.
The codebase is a fork of Letta (acknowledged in the README), which means you inherit its architectural debt — the ORM layer is sprawling with 20+ model files and the agent abstraction is complex to extend or debug. Screen capture runs continuously with no clear explanation of what gets sent where or how the privacy-first claim is enforced technically; 'stored locally' is not a privacy model, it's a storage location. Six specialized agents all making LLM calls means the token cost per interaction compounds fast — there's no obvious batching or cost control mechanism visible in the structure. The client SDK is a separate PyPI package pointing at localhost by default, which is an odd DX choice that will trip up anyone trying to run client and server on different machines without reading the config carefully.