Mnemo, capa de memoria local: recuerdo portable para Ollama y apps LLM propias
"El README de GitHub de Mnemo sirve para el posicionamiento del proyecto, el quickstart Docker + Ollama, el ejemplo de Python SDK, la arquitectura de crates Rust y la tabla de benchmark."
"El sitio oficial de Ollama y el repositorio de GitHub dan contexto para ejecutar LLM locales."
"La documentación de OpenAI Codex Skills explica cómo los agent skills empaquetan instrucciones, recursos y scripts en capacidades reutilizables."
"La documentación de integraciones de Spec Kit muestra cómo las herramientas spec-driven escriben comandos y estructura de contexto para distintos AI coding agents."
Las búsquedas de Mnemo suelen venir de un dolor concreto, no de la curiosidad por otra herramienta LLM local. Quizá ya tienes Ollama corriendo. Quizá ya llamas a un modelo local por una API compatible con OpenAI. La parte incómoda llega después: cuando la sesión termina, el modelo pierde decisiones de proyecto, preferencias del usuario, restricciones de API y la nota de depuración que le diste ayer. Puedes seguir pegando ese material en el prompt, pero el prompt crece, y la información vieja empieza a pelear con la actual.
Mnemo se mete en ese hueco. Mantiene la memoria a largo plazo en tu propia máquina, guarda entidades y chunks vía SQLite y relaciones de grafo, y luego devuelve el contexto recuperado a Ollama, OpenAI, Anthropic u otro backend compatible. No le da al modelo memoria nativa, y no es una base de conocimiento universal. Trátalo como un servicio de memoria local que puedes reemplazar, respaldar, inspeccionar y revertir.
Qué capa de memoria maneja Mnemo
La mayoría de los flujos LLM locales tienen tres capas: el modelo genera, la aplicación coordina el flujo y la capa de memoria trae información útil entre sesiones. Ollama cubre la primera capa al ejecutar modelos en local. El RAG suele responder «¿qué chunks de documentos se parecen a esta pregunta?». Mnemo apunta a la capa entre sesiones más fina.
Un asistente de código local es buen ejemplo. Hoy le dices: «Este proyecto no usa LangChain por ahora; mantén la capa API en FastAPI y SQLite». Mañana inicias una sesión nueva y preguntas cómo agregar retrieval. Un asistente útil debería recuperar esa decisión en vez de proponer un stack completamente distinto.
| Opción | Buena para | Modo de fallo común |
|---|---|---|
| Prompt largo | Pocas preferencias fijas y reglas de proyecto | Crece sin parar, las reglas viejas son difíciles de actualizar |
| Memoria Markdown | Decisiones y notas legibles por humanos | Recall automático débil, el seguimiento de relaciones queda manual |
| RAG sobre almacén de vectores | Docs, páginas FAQ y chunks de base de conocimiento | La similitud no dice qué hecho sigue siendo válido |
| Capa de memoria tipo Mnemo | Entidades, relaciones, hechos de sesión y contexto recuperado | Requiere gobernanza; las memorias malas contaminan respuestas posteriores |
Eso hace a Mnemo mejor opción una vez que tienes las bases, como llamar a la API de Ollama. Primero haz que el modelo responda de forma fiable. Luego decide qué información merece convertirse en memoria. Invertir ese orden convierte una demo frágil en una máquina de estados difícil de depurar.
Arquitectura: API Rust, SQLite y recorrido de grafo
El README de Mnemo divide el repositorio en cuatro crates Rust. mnemo-core posee la extracción de entidades, las operaciones de grafo, el retrieval y la capa de base de datos. mnemo-api expone una API REST Axum. mnemo-cli es el cliente de línea de comandos. mnemo-bench contiene las suites de benchmark. Para una herramienta local, esa estructura importa, porque muestra que el proyecto es más que un prompt que resume conversaciones viejas.
SQLite guarda el estado, los enlaces de grafo agregan pistas
Muchas herramientas de memoria chunkean cada turno de conversación, crean embeddings y recuperan por similitud. Eso sirve para algunos trabajos, pero dos problemas aparecen pronto. La misma persona, proyecto o decisión puede aparecer en varias sesiones. Dos hechos pueden entrar en conflicto, y la similitud vectorial no decide cuál debe ganar.
La descripción pública de Mnemo pone más peso en la deduplicación de entidades y el retrieval graph-first. En la práctica, extrae entidades del texto, las fusiona con las existentes y usa aristas de relación durante el retrieval. Si «API gateway», «auth middleware» y «FastAPI service» aparecen en sesiones distintas, el grafo puede conectarlas cuando preguntes por el sistema más tarde.
La expansión de grafo igual necesita una correa. El README dice que los resultados expandidos por grafo participan con menor score, así que las coincidencias directas quedan por delante del contexto inferido. Un buen compromiso: los enlaces de grafo aportan pistas, sin enterrar la evidencia que coincidió directamente con la consulta.
Tratar los números de benchmark como mediciones de proyecto
La tabla de benchmark del README es específica: Apple M2, SQLite WAL, petgraph en memoria y un pipeline de retrieval en debug build de unos 4,2 ms, con la nota de que los release builds son más rápidos. Eso muestra que el camino local fue medido. No prueba que tu setup se comporte igual. Tu resultado depende del volumen de datos, las llamadas de extracción, la velocidad del disco, el backend de modelo y la política de retrieval.
Antes de la latencia, yo vigilaría tres cosas: si las memorias escritas se pueden reproducir, si los resultados recuperados explican su fuente, y si las memorias malas se pueden borrar o corregir. El código lento suele optimizarse. Una memoria errónea sin fuente es mucho más difícil de confiar.
Correr el camino mínimo Docker + Ollama
No conectes Mnemo a tu proyecto principal el primer día. Usa una carpeta temporal, sigue la ruta Docker + Ollama del README upstream, y decide después si pertenece a tu aplicación.
git clone https://github.com/zaydmulani09/mnemo
cd mnemo
docker compose up -d
# Bajar el modelo de ejemplo del README la primera vez
docker exec mnemo-ollama ollama pull llama3
# Verificar el servicio API
curl http://localhost:8080/health
Si ya recorriste la guía para principiantes de Ollama, este flujo te resultará familiar. La diferencia: Mnemo arranca una API de memoria junto al contenedor de Ollama. Después, tu app habla con el servicio de memoria en vez de meter cada decisión pasada en el contexto del modelo.
Usar el Python SDK para un smoke test
El README también da un camino mínimo de Python SDK. Prueba una sola cosa: escribir una memoria, luego preguntar en lenguaje natural y ver si vuelve.
from mnemo import MnemoClient
client = MnemoClient()
client.ingest("Estoy construyendo una base de datos vectorial en Rust llamada vecdb")
print(client.get_context("¿En qué proyecto de base de datos estoy trabajando?"))
Al ejecutarlo, no juzgues solo la respuesta final del modelo. Revisa los logs del servicio, los archivos de base de datos, la estructura de la respuesta API y si la memoria sobrevive a un reinicio. El umbral mínimo de la memoria a largo plazo no es una redacción pulida. Es un estado duradero, inspeccionable y recuperable.
El camino binario sirve cuando Ollama ya existe
Si Ollama ya corre en tu máquina, el README también describe una ruta binaria:
cargo install --path crates/mnemo-api
export MNEMO_LLM_BASE_URL=http://localhost:11434/v1
mnemo-api
Este camino encaja con un setup LLM local existente. Mantén tus propios modelos, puertos y monitoreo, y agrega Mnemo como servicio separado. Si después pasas a un backend en la nube, configura una base URL compatible con OpenAI, una clave API, un modelo y un provider.
Revisar el encaje antes de adoptarlo
El README de Mnemo da un límite útil: si ya usas un harness de agente gestionado que maneja bien la memoria, quizá no necesites Mnemo. Esa advertencia importa. Más capas de memoria pueden significar más estado oculto.
| Tu situación | Movimiento sugerido |
|---|---|
| Un script Ollama local donde pegas el contexto del proyecto una y otra vez | Probar Mnemo |
| Un agente de soporte o de código propio que necesita decisiones entre sesiones | Correr un piloto pequeño |
| Q&A puntual sobre un conjunto de documentos | Empezar con Ollama embeddings y RAG |
| Una plataforma madura ya ofrece export, corrección y auditoría | Evitar una segunda capa de memoria por ahora |
| Datos de equipo con permisos complejos sin plan de control de acceso | Definir permisos antes de la memoria |
El local-first tiene un beneficio claro: los datos quedan en tu máquina, el archivo SQLite es fácil de respaldar, y no tienes que enviar cada conversación de proyecto a un servicio en la nube. El trabajo de seguridad sigue siendo necesario. Decide quién puede leer la base, dónde viven los backups, si los logs contienen claves API y cómo se quitan las memorias malas.
Tres barandillas para la capa de memoria
La memoria a largo plazo solo es útil mientras siga siendo gobernable. Antes de conectar Mnemo a un agente real, yo escribiría tres reglas en el propio proyecto.
Cada memoria necesita una fuente
Una memoria no debería terminar como una frase resumen solitaria. Debería apuntar a una conversación, archivo, tarea o resultado de API. Si un agente dice «Este proyecto usa FastAPI», deberías poder rastrear de dónde salió esa afirmación.
Esa es también la lección principal de la guía de memoria de agentes IA. La memoria a largo plazo no es un portapapeles más grande. Sin fuente, tiempo y validez, las conclusiones viejas se ponen ropa nueva.
El contexto recuperado necesita un presupuesto
Un servicio local rápido igual debería devolver un set pequeño de evidencia. Para muchas tareas, 5 a 15 memorias muy relevantes con pistas de fuente bastan. Si el modelo necesita más, deja que vuelva a consultar en vez de empujar docenas de notas posiblemente relacionadas al prompt.
Esto reduce el context rot. Los agentes suelen fallar con mucho material en la mano porque ese material está viejo, duplicado o es contradictorio. La capa de memoria debería filtrar antes de que el prompt crezca.
Las memorias malas necesitan un camino de retiro
La memoria más peligrosa es errónea, no faltante. Supón que el modelo guardó una vez «el schema de producción se puede cambiar directo», y luego el equipo exige una migration review. Si esa memoria vieja sigue activa, el agente acabará haciendo una sugerencia riesgosa.
Así que el piloto necesita acciones de retiro: borrar una memoria, marcarla expirada, re-extraer un proyecto o vaciar un espacio de usuario. Sin esos movimientos, la memoria a largo plazo se vuelve deuda.
Checklist de diagnóstico
Los problemas de una herramienta como Mnemo suelen vivir entre el servicio local, el backend de modelo y el retrieval. Revísalos en este orden:
curl http://localhost:8080/healthfalla: revisa si los contenedores Docker corren y si el puerto ya está ocupado.- Ollama no puede bajar el modelo: ejecuta
ollama listdentro del contenedor y confirma que el modelo existe; usa un modelo más pequeño si la red va lenta. - Las llamadas API se cuelgan: verifica que
MNEMO_LLM_BASE_URLapunte a un endpoint compatible con OpenAI. Ollama escucha comúnmente en11434. - La respuesta ignora la memoria: confirma que
ingesttuvo éxito, luego inspecciona el contexto de retrieval en vez de juzgar solo la respuesta final. - La memoria desaparece tras reinicio: revisa si la ruta de datos SQLite está montada en un volumen persistente.
- Los resultados se vuelven confusos: reduce el contexto recuperado, deduplica entidades y expira decisiones de proyecto viejas.
Estas revisiones superan al toqueteo de prompt. Un prompt puede cambiar cómo habla el modelo. No puede arreglar un servicio que nunca arrancó o una ruta de base que desaparece con el contenedor.
Lectura sugerida y un piloto seguro
Si todavía no has ejecutado un modelo local, empieza por la guía para principiantes de Ollama. Cuando las llamadas al modelo sean estables, pasa a las llamadas a la API de Ollama y a los embeddings de Ollama. Mnemo encaja después de esas bases como piloto de memoria de agente.
Un piloto de 7 días puede quedarse pequeño:
- Elige un proyecto, no toda tu máquina.
- Escribe 30 a 50 memorias reales sobre el stack, las opciones descartadas, los errores comunes y las restricciones de API.
- Haz las mismas 10 preguntas de repetición cada día y registra el retrieval correcto, faltante y erróneo.
- Borra o expira las memorias malas, luego revisa si la siguiente respuesta cambia.
- Reinicia el contenedor y la máquina, luego confirma que las memorias quedan.
- Agrega backups de base, chequeos de permisos y escaneo de secretos.
- Recién entonces decide si tu agente principal debe usarlo.
El objetivo útil de Mnemo es modesto: traer un set pequeño de contexto importante a la próxima tarea, dejando a los humanos capaces de inspeccionar, editar, respaldar y retirar ese contexto. Una vez que logras eso, un LLM local empieza a sentirse menos como una ventana de chat desechable y más como una herramienta sostenible.
Validar Mnemo en 7 días para tu flujo LLM local
Prueba Mnemo en un proyecto con un set pequeño de memorias y preguntas repetibles antes de conectarlo a tu agente principal.
⏱️ Estimated time: 7 days
- 1
Step1: Correr el quickstart oficial
Arranca Mnemo por el camino Docker + Ollama del README de GitHub, baja un modelo pequeño y confirma que `/health` responde bien. - 2
Step2: Escribir un set pequeño de memorias reales
Usa un solo proyecto. Agrega 30 a 50 memorias sobre el stack, las opciones descartadas, las restricciones de API y las notas de diagnóstico. - 3
Step3: Preparar preguntas de repetición
Haz las mismas 10 preguntas entre sesiones cada día y registra el retrieval correcto, faltante y erróneo. - 4
Step4: Verificar persistencia tras reinicio
Reinicia el contenedor y la máquina. Confirma que los datos SQLite quedan y que las mismas memorias se siguen recuperando. - 5
Step5: Practicar borrado y expiración
Escribe una memoria errónea a propósito, luego bórrala o márcala expirada. Confirma que las respuestas posteriores dejan de usar el hecho viejo. - 6
Step6: Agregar backup y chequeo de secretos
Revisa permisos de la base, ubicación del backup y logs en busca de claves API antes de conectar Mnemo a tu agente principal.
FAQ
¿En qué se diferencia Mnemo del RAG común?
¿Mnemo tiene que correr con Ollama?
¿Puedo tomar la tabla de benchmark de Mnemo como garantía de producción?
¿Una capa de memoria local es automáticamente más segura?
¿Cuándo conviene saltarse Mnemo?
11 min de lectura · Publicado el: 5 jun 2026 · Actualizado el: 15 jun 2026
Guía de Ollama local LLM
Estás leyendo el primer artículo de esta serie. Continúa con el siguiente o abre el hub para ver toda la ruta.
Anterior
Estás al inicio de esta serie.
Siguiente
Este es el artículo más reciente de la serie por ahora.
Artículos relacionados
female-portrait-director: convierte los prompts de retrato en un Skill reutilizable
female-portrait-director: convierte los prompts de retrato en un Skill reutilizable
Continuum y la elección de un agent runtime: 7 capacidades que mirar del notebook a producción
Continuum y la elección de un agent runtime: 7 capacidades que mirar del notebook a producción
ADHD: cómo curar la convergencia prematura de los agentes de código con razonamiento divergente paralelo
Comentarios
Inicia sesión con GitHub para dejar un comentario