Visión general
Memento está construido sobre una arquitectura simple, local-first. Todos los datos viven en un único archivo SQLite en tu máquina. No se necesita servidor para uso local.
┌─────────────────────────────────────────────┐
│ Agente de IA (Claude/Cursor/OpenCode) │
│ │
│ mem_save() mem_search() mem_update() │
└──────────────┬──────────────────────────────┘
│ Protocolo MCP
▼
┌─────────────────────────────────────────────┐
│ Servidor MCP (memento-mcp) │
│ │
│ 16 herramientas para operaciones de memoria│
└──────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Motor Core (bun:sqlite) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────────┐ │
│ │sessions │ │observ. │ │journal │ │
│ └──────────┘ └──────────┘ └───────────┘ │
│ ┌──────────────────────────────────────┐ │
│ │ Tablas virtuales FTS5 │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
Schema de base de datos
Memento usa 6 tablas principales:
| Tabla | Propósito |
|---|---|
sessions |
Agrupa observaciones por conversación |
observations |
Datos principales — decisiones, bugs, descubrimientos |
prompts |
Plantillas de prompts guardadas |
projects |
Memoria por proyecto |
journal |
Entradas inmutables append-only |
journal_tags |
Tags para entradas del journal |
Observaciones
Las observaciones son el concepto central. Cada una tiene:
- type: Uno de 10 tipos:
decision,bug,discovery,note,summary,learning,pattern,architecture,config,preference - content: Texto estructurado (formato What/Why/Where/Learned)
- topic_key: Clave estable para agrupación (ej:
architecture/auth-model) - project_id: Scope a un proyecto
- scope:
projectopersonal
Búsqueda de texto completo (FTS5)
Memento usa SQLite FTS5 para búsqueda rápida de texto completo en todas las observaciones y entradas del journal.
Almacenamiento
- Engine:
bun:sqlitecon SQL raw (sin ORM) - PRAGMAs: modo WAL,
foreign_keys ON,busy_timeout 5000ms - Archivo de base de datos:
~/.memento/memento.db(configurable)
Modelo de sesiones
Las sesiones agrupan observaciones por conversación. Cuando un agente de IA inicia una conversación, crea una sesión. Al finalizar, genera un resumen de sesión.
Journal
El journal es un registro inmutable, append-only. Las entradas no se pueden editar ni eliminar. Usa supersedes para corregir entradas previas sin romper la auditoría.