OpenMemBrain

OpenMemBrain es la membrana inteligente para la memoria de codificación de IA. Lee y aprende de forma autónoma de tus sesiones de codificación — nunca tienes que decirle qué guardar. Absorbe selectivamente el conocimiento del proyecto, bloquea secretos, filtra ruido, resuelve conflictos y persiste solo lo que importa.

Documentación

OpenMembrane

OpenMembrane es la membrana inteligente para la memoria de codificación con IA. Lee y aprende autónomamente de tus sesiones de codificación: nunca tienes que decirle qué guardar. Absorbe selectivamente el conocimiento del proyecto, bloquea secretos, filtra ruido, resuelve conflictos y persiste solo lo que importa.

Sin esfuerzo manual. Ningún dato sale de tu máquina a menos que tú lo elijas. Seguro, privado y confiable por diseño.

Tabla de Contenidos

Instalación

Instala y ejecuta el servidor MCP con npx (requiere Node.js >= 18):

npx openmembrane

O instala globalmente:

npm install -g openmembrane
openmembrane

No se requieren cuentas en la nube. Toda la memoria se almacena localmente.

Configuración de tu Herramienta de IA

OpenMembrane se ejecuta como un servidor MCP sobre stdio. Añádelo a la configuración MCP de tu herramienta de IA:

Claude Desktop

Edita claude_desktop_config.json:

{
  "mcpServers": {
    "openmembrane": {
      "command": "npx",
      "args": ["openmembrane"]
    }
  }
}

Claude Code

claude mcp add openmembrane -- npx openmembrane

VS Code / GitHub Copilot

Añade a .vscode/mcp.json en tu proyecto:

{
  "servers": {
    "openmembrane": {
      "command": "npx",
      "args": ["openmembrane"]
    }
  }
}

Cursor

Añade a .cursor/mcp.json en tu proyecto:

{
  "mcpServers": {
    "openmembrane": {
      "command": "npx",
      "args": ["openmembrane"]
    }
  }
}

OpenCode

Añade a ~/.config/opencode/opencode.json:

{
  "mcp": {
    "openmembrane": {
      "type": "local",
      "command": ["npx", "-y", "openmembrane"]
    }
  }
}

Consulta .opencode/INSTALL.md para una configuración detallada, incluidas las instrucciones globales y la configuración de desarrollo desde el código fuente.

Captura Automática de Memoria

Añadir el servidor MCP le da a tu herramienta de IA acceso a las herramientas de OpenMembrane. Para asegurar que la IA las use automáticamente — cargando la memoria del proyecto al inicio de la sesión y guardando conocimiento duradero a medida que se descubre — añade un archivo de instrucciones global.

Crea ~/.config/openmembrane/instructions.md con instrucciones para que la IA:

  • Llame a get_project_rules, get_relevant_context y list_memory_candidates al inicio de cada sesión.
  • Llame a remember de forma proactiva cuando se descubra conocimiento duradero, proporcionando contenido estructurado y un tipo (p. ej., coding_rule, known_gotcha, architecture_decision). No se necesita clave API.

Luego conecta el archivo a la configuración global de tu herramienta:

PlataformaMecanismo de instrucciones global
OpenCode"instructions": ["~/.config/openmembrane/instructions.md"] en ~/.config/opencode/opencode.json
Claude CodeAñade a ~/.claude/CLAUDE.md
CursorAñade a Reglas para IA en Configuración de Cursor
VS Code / CopilotCrea ~/.copilot/instructions/openmembrane.instructions.md con applyTo: "**"

Consulta las guías de configuración específicas por plataforma en docs/setup/ para instrucciones detalladas.

Alternativamente, ejecuta export_static_memory_files en cualquier proyecto para generar archivos de instrucciones por proyecto (AGENTS.md, CLAUDE.md, etc.) que incluyan tanto instrucciones de uso como memorias almacenadas.

Variables de Entorno

Por defecto, la memoria local se almacena en .openmembrane bajo el directorio de trabajo actual. Anula esto con:

  • OPENMEMBRANE_HOME: directorio para los almacenes de memoria JSON locales.
  • OPENMEMBRANE_PROJECT_ID: id de proyecto predeterminado cuando una llamada de herramienta no pasa projectId.

Herramientas MCP

  • remember — guarda memoria estructurada directamente. Proporciona contenido, tipo y alcance/etiquetas opcionales. No se necesita clave API. Admite modo individual y por lotes.
  • propose_memory_from_session — envía una transcripción o resumen de sesión para extracción LLM del lado del servidor. Requiere un extractor configurado. Útil para adaptadores de automatización.
  • get_project_rules — recupera reglas y convenciones del proyecto para el alcance actual.
  • get_relevant_context — encuentra memorias relevantes para una consulta en lenguaje natural.
  • search_memory — busca memorias guardadas por consulta, alcance, tipo o etiquetas.
  • list_memory_candidates — lista candidatos de memoria pendientes de aprobación.
  • approve_memory_candidate — aprueba un candidato pendiente para guardarlo como memoria.
  • approve_all_candidates — aprueba todos los candidatos pendientes de una vez.
  • reject_memory_candidate — rechaza un candidato pendiente con una razón opcional.
  • reject_all_candidates — rechaza todos los candidatos pendientes de una vez.
  • update_memory — actualiza el contenido, tipo, alcance o etiquetas de una memoria guardada.
  • supersede_memory — marca una memoria como reemplazada, vinculando opcionalmente un reemplazo.
  • review_stale_memories — lista memorias más antiguas que un umbral (predeterminado: 6 meses).
  • export_static_memory_files — genera archivos de instrucciones estáticos (AGENTS.md, CLAUDE.md, etc.).
  • get_diagnostics — recupera eventos de diagnóstico filtrados por severidad o código.
  • list_audit_log — recupera eventos de auditoría recientes.

Arquitectura

OpenMembrane admite dos vías para guardar memoria:

  1. remember (principal): La herramienta de IA llama a remember directamente con contenido estructurado y tipo. No se necesita LLM del lado del servidor. Las memorias pasan por el pipeline completo (detección de secretos, filtrado de políticas, deduplicación) y se guardan automáticamente.

  2. propose_memory_from_session (secundaria): Un adaptador o herramienta de IA envía una transcripción completa de sesión para extracción LLM del lado del servidor. Requiere un extractor configurado (OpenAI o proveedor compatible).

remember tool                          propose_memory_from_session
  |                                      |
  v                                      v
processStructured()                    SessionIngestor
  |                                      -> SecretDetector redaction
  v                                      -> MemoryExtractor interface
MemoryClassifier                         -> MemoryClassifier
  -> PolicyEngine                        -> PolicyEngine
  -> Deduplicator                        -> Deduplicator
  -> ConflictDetector                    -> ConflictDetector
  -> ActionRecommender                   -> ActionRecommender
  -> MemoryStore or PendingCandidateStore

Responsabilidades de los paquetes:

  • packages/core: tipos de dominio, interfaz de extracción, verificaciones de políticas, clasificación, deduplicación, detección de conflictos y orquestación del pipeline.
  • packages/storage: persistencia JSON local para memoria guardada, aprobaciones pendientes y eventos de auditoría.
  • packages/exporters: generación de archivos de respaldo estáticos para herramientas de IA que leen archivos de instrucciones del proyecto.
  • packages/shared: pequeños ayudantes de tiempo de ejecución para IDs, tiempo y tipos de resultado.
  • apps/mcp-server: servidor MCP local que expone memoria guardada y flujos de aprobación a las herramientas de IA.

Las llamadas LLM específicas de proveedor se mantienen intencionalmente fuera del núcleo. El límite es:

interface MemoryExtractor {
  extract(input: SessionInput): Promise<MemoryCandidate[]>;
}

El MockMemoryExtractor se usa para pruebas deterministas. El LlmMemoryExtractor admite OpenAI y cualquier endpoint de API compatible (a través de baseUrl).

Diagnósticos y Errores

OpenMembrane distingue el historial de auditoría de los diagnósticos:

  • Los eventos de auditoría describen la actividad normal de memoria, como la ingesta de sesiones, la extracción de candidatos, la memoria guardada, los candidatos en cola y los candidatos rechazados.
  • Los diagnósticos describen problemas operativos, como errores de validación, candidatos faltantes, almacenes JSON locales inválidos, intentos de aprobación inseguros y fallos de exportación.

Las herramientas MCP devuelven cargas de error seguras orientadas al usuario con un diagnosticId. El diagnóstico detallado se puede inspeccionar a través de get_diagnostics sin exponer transcripciones crudas ni secretos.

Archivos de Respaldo Estáticos

Los exportadores estáticos pueden generar:

  • AGENTS.md
  • CLAUDE.md
  • .github/copilot-instructions.md
  • .cursor/rules/openmembrane.mdc
  • docs/ai/project-memory.md

Estos archivos son respaldos de compatibilidad para herramientas que no pueden recuperar memoria a través de MCP. Por defecto, los exportadores omiten las memorias confidential porque estos archivos pueden enviarse al control de versiones. Los llamadores deben optar explícitamente para incluir memoria confidencial.

Desarrollo

git clone https://github.com/mohamadalhusseinie/openmembrane.git
cd openmembrane
npm install

Ejecuta el servidor MCP localmente (desde el código fuente mediante tsx):

npm run mcp:stdio

Ejecuta pruebas y verificación de tipos:

npm test          # vitest
npm run typecheck # tsc --noEmit
npm run check     # both

Compila el paquete publicable:

npm run build

Documentación

  • Arquitectura — diseño del pipeline, esquemas de tipos, superficie de herramientas MCP, dependencias de paquetes
  • Seguridad y Privacidad — manejo de secretos, reglas de almacenamiento de datos, política de uso de LLM
  • Visión del Producto — tesis del producto, flujo de trabajo UX, criterios de calidad de memoria
  • Hoja de Ruta — plan de entrega por fases desde MVP local hasta modo alojado
  • Contribuciones — configuración, flujo de trabajo de desarrollo, guías de PR