Cómo descubrí MemPalace
Estaba haciendo scroll por Instagram — como todas las noches — y un video me detuvo en seco. Una mujer hablaba sobre un problema que yo conocia demasiado bien: la IA olvida todo después de cada sesión.
Esa mujer era Milla Jovovich. Si, esa Milla Jovovich — Leeloo de El Quinto Elemento, Alice de Resident Evil.
En su video de Instagram, explicaba como a finales de 2025 comenzo a trabajar intensamente con sistemas de IA — Claude, ChatGPT, Gemini — manteniendo miles de conversaciones. Decisiones de negocio, trabajo creativo, análisis de contratos, debugging. Y cada vez que iniciaba una nueva conversacion, todo desaparecia.
Su descripción fue perfecta: “Un asistente brillante con pérdida permanente de memoria a corto plazo.”
Qué es MemPalace?
MemPalace es un sistema de memoria IA gratuito y de código abierto que otorga a los grandes modelos de lenguaje una memoria persistente. Almacena las conversaciones completas y textuales — sin resúmenes, sin filtros, sin que una IA decida que es importante.
El nombre proviene del antiguo Método de Loci (técnica del palacio de memoria), utilizada por oradores griegos para memorizar discursos colocando mentalmente ideas en habitaciones de un edificio imaginario.
La arquitectura del Palacio
MemPalace organiza la información de forma jerárquica — como un edificio real:
Contenedores para personas o proyectos — las grandes alas del palacio
Temas dentro de un ala — p.ej., "auth-migration" o "ci-pipeline"
Tipos de memoria: hechos, eventos, descubrimientos, preferencias, consejos
Resúmenes comprimidos que apuntan al contenido original
Archivos originales textuales, nunca resumidos — el corazón del sistema
Conexiones cruzadas entre alas para el mismo tema en diferentes contextos
Stack técnico
El proyecto se ejecuta completamente en local — sin nube, sin suscripciones, sin costos de API para la funcionalidad principal:
- Python 3.9+ como base
- ChromaDB para búsqueda semántica vectorial
- SQLite para el grafo de conocimiento temporal
- Protocolo MCP con 19 herramientas para integración fluida con IA
- Licencia MIT — completamente libre de usar
La historia de origen
Milla Jovovich comienza a trabajar intensamente con IA. Miles de conversaciones se pierden después de cada sesión. Soluciones existentes como Mem0 y Zep usan IA para resumir — perdiendo matices en el proceso.
Jovovich y el ingeniero Ben Sigman comienzan el desarrollo usando Claude Code. Principio central: almacenar todo textualmente, nunca dejar que la IA lo filtre.
MemPalace se pública bajo la cuenta personal de GitHub de Jovovich como proyecto open source con licencia MIT.
7.000+ estrellas en GitHub. El tweet de lanzamiento de Ben Sigman con la palabra "Multipass" (referencia a El Quinto Elemento) se vuelve viral.
Uno de los repos de GitHub con crecimiento más rápido del mes. Alrededor de 3.000 forks. Comunidad activa con contribuciones diarias.
El crecimiento se duplica en 24 horas. Más de 5.100 forks. Mis 10 PRs originales aprobados por reviewers. Esa misma mañana envié 5 PRs adicionales tras una auditoría sistemática de seguridad y calidad de código.
Cuatro fixes adicionales aterrizan en `develop` vía rollups del maintainer (#862–#866) — protección de stdout MCP, guard de resultados vacíos de ChromaDB, auto-registro en gitignore y aclaración de docs de la CLI.
PR #928 (resolución case-insensitive de códigos de idioma) mergeado tras un intercambio colaborativo de review — acepté el enfoque alternativo de otro contributor y dejé la decisión al maintainer. El merge cayó 53 minutos después. Totales: 33 PRs enviados, 8 mergeados directamente (#569, #609, #610, #862, #864, #865, #866, #928), 24 integrados vía rollups del maintainer en `develop`, 1 abierto (#926 — diff sha256 del diary).
Resultados de benchmark y la controversia
MemPalace reclama puntuaciones maximas en el benchmark LongMemEval:
- 96,6% en modo raw (sin llamadas API externas)
- 100% en modo hibrido (con reranking de Haiku)
Por qué contribuyo
Después de ver el video de Instagram, clone el repositorio inmediatamente. Al leer el código, identifiqué varias oportunidades de mejora — cosas típicas que ocurren en un proyecto joven con crecimiento explosivo:
- Falta de anotaciones de tipo en módulos centrales
- Referencias de versión desactualizadas en la documentación
- Un CHANGELOG inexistente
- Bugs menores en la lógica de compresión y configuración de búsqueda
Me pareció interesante y decidí contribuir: abrí pull requests.
Mis 47 Pull Requests
Primera ronda: Calidad de código y documentación (10 de abril)
Actualicé CONTRIBUTING.md — directorios faltantes, comandos de test alineados, referencias obsoletas eliminadas
Actualicé AGENTS.md con listado completo de modulos y umbrales de cobertura corregidos
Actualicé referencias obsoletas de v3.0.0 a v3.1.0 en el README
Añadí type hints de retorno y docstrings para knowledge_graph.py
Creé CHANGELOG.md con historial completo de v3.0.0 y v3.1.0
Rotación de archivo WAL a 10 MB para prevenir crecimiento ilimitado del log de SQLite
Renombré parámetro de "object" a "obj" para evitar shadowing de builtin de Python
Corregí clave de registro en la busqueda de entidades de spellcheck
Alineé claves de diccionario en cmd_compress con los valores reales de retorno de compression_stats()
Establecí cosine distance como default para la colección y limitación de scores de similitud a 0-1
Segunda ronda: Auditoría de seguridad y caza de bugs (11 de abril)
Tras una auditoría sistemática de todo el código — cubriendo seguridad, bugs y calidad de código — identifiqué mejoras adicionales y envié 5 PRs más:
Corregí el conteo de tokens en el comando compress — siempre mostraba "1t → 1t" porque count_tokens() se llamaba sobre un string sin espacios
Reemplacé la igualdad de floats para tiempos de modificación por comparación epsilon — previene re-mining innecesario de archivos sin cambios
Corregí la dirección por defecto de query_entity de "outgoing" a "both" para coincidir con la documentación MCP
Añadí threading lock para operaciones de escritura del Knowledge Graph — previene corrupción de datos en llamadas MCP concurrentes
Eliminé código muerto: declaraciones duplicadas de variables de cache y un exception handler sin efecto
Ronda intermedia: MCP server, mining y Knowledge Graph (12-14 de abril)
Tras un follow-up de auditoría me concentré en el server MCP, el pipeline de mining y la consistencia del Knowledge Graph. Los 8 PRs fueron cerrados por el maintainer — algunos absorbidos en rollups posteriores (#862-#866), otros en favor de soluciones alternativas. Los listo por transparencia:
Implementé el método `ping` en el server MCP — necesario para health-checks de clientes que validan el handshake antes de empezar a enviar tools.
Loggeo de warnings en exceptions silenciadas de las navigation tools — antes los errores se tragaban sin rastro.
Typo fix en el prompt interactivo de clasificación de entity_detector — afectaba el flujo de revisión humana.
Extraje bloques `tool_use` y `tool_result` durante el mining de JSONL de Claude Code — antes esas estructuras se perdían en la ingestión.
Skip de mensajes `tool_result` al contar intercambios humanos en hooks — el contador inflaba con tool turns que no eran turnos reales del usuario.
Stopwords técnicos + filtro de inicio de frase en entity_detector — reduce falsos positivos como "Python" o "API" matcheando como entidades nombradas.
Prevención de duplicación de aristas en el KG con índice UNIQUE parcial + upsert atómico — evita inflar el grafo con duplicados en re-ingestión.
Skip del triple `is_pet_of` cuando el owner no existe en seed_from_entity_facts — antes se creaban relaciones huérfanas.
Tercera ronda: Estabilidad MCP e higiene del proyecto (15 de abril)
Después de que los maintainers hicieran rebase de mi trabajo anterior sobre develop, envié cuatro fixes más que atacan problemas reales de runtime reportados en el tracker. Los cuatro se mergearon como parte de PRs rollup (#862–#866):
Fix de docs: aclaré que `mempalace init` requiere un argumento `<dir>` — el texto de ayuda de la CLI confundía a usuarios nuevos
Redirigí stdout a stderr durante la importación del módulo para proteger el canal JSON-RPC de MCP — previene corrupción del protocolo cuando los clientes pipean stdio
Protegí contra resultados vacíos de ChromaDB en el searcher — corrige un IndexError en palacios recién creados
Añadir automáticamente archivos específicos de MemPalace al `.gitignore` cuando el directorio es un repo git — evita commitear datos del palacio por accidente
Cuarta ronda: Internacionalización y reviews colaborativas (16 de abril)
Resolución case-insensitive de códigos de idioma en `_resolve_language()` — arregla #927 donde usuarios con `LC_ALL=de_DE.UTF-8` obtenían errores porque el mapa sólo matcheaba claves en minúsculas.
Módulo diary: detecta edits de misma longitud vía hash sha256 — antes pasaban desapercibidas reescrituras puras sin cambio de longitud, porque el check de diff era por cantidad de caracteres.
Quinta ronda: Refuerzo de seguridad y robustez de encoding (abril 2026)
Dos fixes de seguridad mergeados directamente; siete más en revisión:
Permisos del archivo tunnels.json restringidos a 0o600 — evita que otros usuarios locales lean datos de conexiones cruzadas entre alas en máquinas compartidas.
Variable de entorno MEMPALACE_PALACE_PATH normalizada con abspath + expanduser — cierra un riesgo de path traversal cuando la variable contenía componentes relativos o una tilde sin resolver.
Validación de formatos ISO-8601 en la frontera MCP antes de persistir en el grafo de conocimiento — rechaza fechas malformadas de forma temprana en lugar de corromper silenciosamente las consultas temporales.
Relleno de metadatos NULL en llamadas duplicadas de add_triple en el grafo de conocimiento — previene errores de puntero nulo en el traversal del grafo tras re-ingestión de la misma conversación.
Preserva líneas en blanco e indentación en respuestas de IA durante la ingestión de convo_miner — la estructura que antes se perdía ahora se almacena textualmente en los Drawers.
Reemplaza símbolos no-ASCII (✓ ✗ →) en la salida principal de la CLI — corrige caracteres ilegibles en entornos de terminal GBK/CP1252 (#1034).
Maneja el BOM de UTF-8 en archivos de transcripción durante el paso de normalización — previene un fallo silencioso de parseo que producía Drawers vacíos en exportaciones Windows con BOM.
Mismo fix de encoding aplicado a la salida de progreso de closet_llm (#1034).
Impone el presupuesto de 100ms de inyección en el arranque en la suite de benchmarks — detecta regresiones en la latencia de arranque en frío del servidor MCP antes de llegar a los usuarios.
Lo que me fascina de MemPalace
Tres cosas me convencieron de contribuir activamente:
1. Local-First, sin dependencias
Sin suscripciones en la nube, sin costos de API para la funcionalidad principal. ChromaDB y SQLite corren en tu máquina. Tus datos se quedan contigo.
2. Textual, no resumido
Otros sistemas como Mem0 o Zep dejan que una IA decida que conservar. MemPalace almacena todo textualmente en “Drawers”. Los resúmenes existen como “Closets”, pero el original siempre se preserva.
3. El Método de Loci como arquitectura de software
La metáfora del palacio de memoria no es solo marketing — moldea toda la estructura de la base de datos. Wings, Rooms, Halls, Tunnels — el modelo mental funciona intuitivamente porque se basa en una técnica mnemónica de 2.500 años de antigüedad.
Mirando hacia adelante
Seguiré observando este proyecto y contribuyendo regularmente. MemPalace es uno de los pocos proyectos open source donde un nombre prominente no es solo marketing — Milla Jovovich personalmente contribuyó más de 25 commits y co-diseñó el concepto arquitectonico.
El proyecto se duplicó de 19.500 a más de 40.500 estrellas en una sola semana — la demanda de sistemas de memoria para IA es claramente enorme. Si la controversia de los benchmarks dañará al proyecto a largo plazo o más bien generará atención, está por verse. Los fundamentos técnicos son sólidos, la comunidad crece rápidamente, y el problema — la amnesia de la IA — es real y no resuelto.
Multipass.