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: project o personal

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:sqlite con 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.