Engram

Servidor MCP autoalojado + panel que otorga a los agentes memoria compartida a través de una carpeta de markdown respaldada por git.

Documentación

Engram logo

Engram

El segundo cerebro que tus agentes de IA leen y escriben.

Engram demo — a home dashboard with recent activity and a Claude Code agent querying the vault

▶ Ver el video completo (tiempo real, calidad completa)

↗ Prueba la demo en vivo — sin registro. Busca precio de retención y observa cómo se retiene la nota retirada.

Engram - Agent memory that knows what's still true | Product Hunt


Engram es un servidor MCP + panel de control autoalojado que brinda a Claude Code, Cursor, Hermes y a cualquier agente del Model Context Protocol memoria compartida y de largo plazo que leen y escriben — sobre una carpeta simple, respaldada por git, de markdown que tú posees. Construido para el caso que la memoria de un solo agente nunca alcanza: un equipo ejecutando varios agentes contra un solo cerebro.

Los agentes autónomos olvidan todo entre sesiones — y peor, no pueden saber si lo que recuerdan es sigue siendo verdad. Un agente extrae un README antiguo, un precio retirado, un documento de API que cambiaste hace meses, y lo cita con total confianza, porque la búsqueda por palabras clave y vectorial clasifican por similitud, no por verdad. Engram hace de "¿esto sigue siendo verdad?" una propiedad de primera clase y escrita: marca un hecho como reemplazado o expirado y la búsqueda lo retiene — y le dice al agente qué omitió y por qué. Tokens de lectura/escritura por agente y un rastro de auditoría en git de quién escribió qué mantienen la cordura cuando los escritores son una flota, no solo tú.

A diferencia de un almacén de memoria sin cabeza, puedes verlo suceder. Un panel rápido te permite buscar tu cerebro, ver exactamente qué cambió cada agente y compañero de equipo (con diferencias por archivo), volver a notas recientes, y curarlo todo — mientras los agentes leen y escriben la misma bóveda a través de un único endpoint MCP. Sin base de datos: tus archivos .md son la fuente de verdad, git es el almacén duradero, y un índice en memoria impulsa la búsqueda de texto completo + un grafo de conocimiento de wikilinks.

Deploy on Railway Deploy to Render

CI License: MIT Docker

Opinionado sobre cómo almacena memoria — markdown respaldado por git, sin base de datos, los agentes escriben (no solo leen), autoalojado. Sin opinión sobre qué guardas en él — cualquier bóveda de markdown, cualquier estructura de carpetas, cualquier cliente MCP. Apúntalo a un repositorio nuevo o a tu bóveda de Obsidian existente: sin paso de importación, sin bloqueo.


Para qué sirve · Cómo se compara · Características · Funciona con · Inicio rápido · Herramientas MCP · Despliegue · Preguntas frecuentes · Contribuir


Para qué sirve

  • Memoria compartida para un equipo que ejecuta múltiples agentes — una bóveda, muchos agentes leyendo y escribiendo concurrentemente, con tokens de lectura/escritura por agente y un rastro de auditoría en git de quién cambió qué.
  • Memoria que sabe qué sigue siendo verdad — retira un precio, un término o un documento de API cambiado y tus agentes dejan de citarlo; se les dice qué omitieron y por qué. El fallo que la memoria de un solo agente nunca corrige.
  • Memoria de largo plazo para Claude Code y otros agentes de codificación — deja de reexplicar tu proyecto en cada sesión.
  • Un segundo cerebro autoalojado y compatible con Obsidian expuesto a través de MCP — tus notas, tu servidor, tu repositorio git.
  • Memoria que puedes ver, no una caja negra — un panel para buscar, observar (con diferencias) y curar lo que tus agentes recuerdan.
  • RAG de markdown sin la base de datos vectorial — búsqueda de texto completo + un grafo de enlaces sobre archivos legibles por humanos.

Cómo se compara

La mayoría de la memoria de agentes está construida para responder "¿qué guardé sobre esto?" Engram está construido para responder "¿qué sigue siendo verdad sobre esto?" — una pregunta diferente, y la que muerde cuando un agente cita un precio que retiraste hace meses.

EngramMemoria de almacén vectorial
(mem0, Zep, …)
Memoria de markdown
(Basic Memory, …)
RAG simple sobre documentos
Almacenamientoarchivos markdown, git es la base de datosembeddings en una BD vectorialarchivos markdownembeddings en una BD vectorial
Clasificaciónrelevancia × autoridadsimilitudrelevanciasimilitud
Sabe que un hecho está retiradosuperseded_by + valid_until, aplicado en la búsqueda
Explica qué retuvoexcluded[] con una razón por nota
Retirar + reemplazar atómicamentebrain_supersede, un commit
Rechaza escrituras contradictorias✅ en tiempo de escritura, no de lecturan/a (solo lectura)
Rastro de auditoría✅ git, atribución por escritura, diferencias por archivovaríagit, si haces commit
Control de acceso por agente✅ alcances de token de lectura/escrituravaría
Interfaz humana✅ panel, búsqueda, diferencias, grafovaría
Se ejecuta entu máquina, un contenedormayormente SaaS alojadotu máquinatu máquina

La fila que importa es la tercera. La búsqueda por similitud no puede distinguir una contradicción de un duplicado — un precio retirado y uno vigente son textualmente idénticos, por lo que el retirado a menudo supera al vigente por ser más largo y detallado. Eso no se puede arreglar en el momento de la lectura, por lo que Engram registra el retiro cuando ocurre.

Engram dashboard showing a note marked locked, superseding an earlier pricing note, with backlinks

Este par exacto se incluye en sample-vault/. Ejecuta bun dev, busca precio de acme, y observa cómo la nota retirada se retiene con una razón.

Categorías, no auditorías característica por característica de productos específicos, y precisas según mi mejor conocimiento a julio de 2026. Si algo aquí representa incorrectamente una herramienta que mantienes, abre un PR — lo corregiré.

Características

  • Servidor MCP — 15 brain_* herramientas a través de un único endpoint HTTP autenticado con bearer (POST /api/mcp, JSON-RPC HTTP transmisible). Conecta cualquier cliente MCP a una sola URL. Alcances de token por agente: un token de solo lectura ni siquiera ve las herramientas de escritura.
  • Panel humano — una página de inicio centrada en la búsqueda, árbol de archivos, visor de notas con callouts de Obsidian, wikilinks y backlinks, editor de Vista Previa / Edición / Dividido con autoguardado, búsqueda ⌘K + navegación por teclado en la página, "volver a" recientes, y un grafo de conocimiento dirigido por fuerza.
  • Búsqueda consciente de autoridad — la clasificación sabe relevancia, no verdad, por lo que una nota reemplazada repite tus palabras de búsqueda tan a menudo como la vigente. Cada resultado lleva una autoridad (authoritativecurrentprovisionalsupersededarchived) derivada de la carpeta y el frontmatter de la nota — para que tus agentes citen el documento bloqueado, no el muerto. RAG de markdown que no devuelve la respuesta de ayer.
  • Validez temporal + rechazo explicable — marca un hecho superseded_by otra nota o dale una fecha de valid_until, y la búsqueda lo retiene por defecto (incluso si es locked) — luego entrega al agente una lista excluded de lo que omitió, cada uno con una razón ("expired 2026-06-01"). Un brain_supersede atómico retira el hecho antiguo y enlaza el nuevo en un solo commit, para que agregar y retirar no puedan separarse. Esta es la diferencia entre un agente que recuerda y uno que sabe qué es sigue siendo verdad.
  • Guardas de contradicción en tiempo de escritura — la clasificación por autoridad arregla la lectura; estas detienen que la bóveda acepte la contradicción en primer lugar. Engram se niega a crear una segunda nota vigente sobre un tema que una nota vigente ya cubre (el error acme-pricing-2026.md-junto-a-acme-pricing.md) y señala al agente a brain_supersede en su lugar; se niega a sobrescribir una nota que el llamador no ha leído; y advierte cuando un status: no es una palabra que el modelo de clasificación conoce, para que un error tipográfico no pueda eliminar silenciosamente la autoridad de una nota.
  • Rastro de auditoría + control de acceso — cada escritura se atribuye en git al token o humano que la hizo, con diferencias por archivo expandibles en el feed de actividad. Dale a un agente un token de solo lectura y ni siquiera verá las herramientas de escritura; un token de escritura puede crear, editar, mover y archivar.
  • El Curador (opcional) — el marco de agente integrado de Engram sobre tu bóveda. Chatea con tus notas (respuestas fundamentadas, citas de wikilinks). O entrega a brain_capture un volcado aproximado — una nota de reunión, una transcripción de voz — y un bucle agéntico busca lo que ya existe, luego archiva, fusiona o archiva y devuelve un manifiesto de lo que tocó. Lee antes de sobrescribir y nunca elimina. Opus / Sonnet / Haiku, tu clave.
  • Nativo de markdown.md simple + frontmatter YAML + [[wikilinks]]. Coloca una bóveda de Obsidian existente y simplemente funciona.
  • Respaldado por git — commit y push automáticos opcionales de cada cambio. Historial completo, sin bloqueo, tus datos viven en tu repositorio.
  • Sin base de datos — los archivos son la fuente de verdad; un índice MiniSearch en memoria + un grafo de wikilinks portado impulsan la búsqueda y los backlinks. Nada que aprovisionar.
  • Multi-espacio de trabajo — conecta múltiples repositorios de bóveda (URL + token o OAuth de GitHub), renombra, cambia el activo, o elimínalos — todo desde la interfaz.
  • Autoalojado — un contenedor Docker. Railway / Render / Fly / cualquier host con un volumen. No serverless (necesita un volumen persistente, un observador de archivos y un índice de larga duración).
  • Autenticación de equipo — SSO de Google + lista de permitidos de correo para el panel; tokens bearer por agente — o OAuth para conectores personalizados de Claude.ai — para MCP, creados/revocados en la interfaz. Secretos cifrados en reposo.
  • Configuración en tiempo de ejecución — alterna la sincronización de git y el Curador directamente desde la página de inicio; gestiona el autor de commits, claves, y OAuth en Configuración — sin redesplegar.

Funciona con

Cualquier cliente que hable el Model Context Protocol — un endpoint, autenticación con token bearer. Los más usados primero:

  • Claude Code — el CLI de codificación agéntica de Anthropic
  • Codex — el agente de codificación de OpenAI (CLI + IDE)
  • Hermes — runtime de agente autónomo siempre activo
  • openclaw — agente de codificación de código abierto
  • Cursor — editor de código con IA
  • Cline — agente de VS Code
  • Windsurf — IDE agéntico
  • Claude Desktop — la aplicación de escritorio de Anthropic
  • …y cualquier otro cliente MCP — Continue, Goose, Zed, Amp, y el resto

Si habla MCP, puede leer y escribir Engram como memoria compartida.

Inicio rápido

¿Quieres probarlo primero? Hay una demo en vivo — abierta, sin registro, se reinicia varias veces al día. Rómpela como quieras.

bun install
bun dev            # http://localhost:3000 — runs against ./sample-vault

Apúntalo a tu propia bóveda:

VAULT_DIR=/path/to/your/obsidian-or-markdown/vault bun dev

Dos formas de ejecutarlo

  • Modo alojado (equipo): el panel + servidor MCP HTTP de arriba — autoalójalo una vez, muchos agentes y compañeros se conectan a través de POST /api/mcp. Este es el modo principal.

  • Modo local (stdio): un servidor MCP stdio simple sobre una carpeta, sin HTTP/auth/git — para una sola máquina, Claude Desktop / Cursor, o la introspección Docker de un registro:

    bun run mcp:stdio /path/to/your/vault      # defaults to ./sample-vault
    

    Mismas brain_* herramientas. Construido desde Dockerfile.mcp.

Cada modo se distribuye como su propia imagen, y no son intercambiables:

ImagenModoÚsalo para
ghcr.io/rwnalds/engram-appHTTP — panel + /api/mcpRailway, Render, Fly, cualquier host. Este es el que despliegas.
ghcr.io/rwnalds/engramstdio — JSON-RPC en stdin/stdoutClaude Desktop, Cursor, registros MCP. Nunca abre un puerto.
Desplegar la imagen stdio como un servicio web es el único error que vale la pena señalar: solo puede devolver un 502, porque no hay nada escuchando. Ahora se niega a iniciar en un PaaS y te lo dice en su lugar.

Herramientas MCP

Los agentes solo ven la bóveda activa — no se exponen herramientas de repositorio, espacio de trabajo o GitHub. Un token de alcance read solo ve las herramientas de lectura. brain_capture aparece solo cuando el Curator está full.

Herramientas
Lecturabrain_search · brain_read · brain_list · brain_recent · brain_tree · brain_backlinks · brain_graph · brain_schema
Escritura (requiere un token de alcance write)brain_write · brain_edit · brain_append · brain_move · brain_supersede · brain_create_folder · brain_delete

Conecta un agente (el panel → página Conectar muestra el comando y token exactos):

claude mcp add --transport http engram https://<host>/api/mcp \
  --header "Authorization: Bearer <token>"

Despliegue

Se ejecuta en cualquier lugar donde puedas ejecutar un contenedor Docker con un volumen persistente — Railway, Render, Fly, o tu propio servidor. Serverless (Vercel) no funcionará: Engram mantiene un volumen, un observador de archivos y un índice en memoria que una función serverless no puede mantener activo.

  1. Despliega este repositorio (raíz Dockerfile), monta un volumen en /data, configura ENGRAM_DATA_DIR=/data.
  2. Conecta tus repositorios de bóveda en el panel (Workspaces) — por URL + token, o GitHub OAuth.
  3. Inicia sesión con Google, crea tokens MCP en la página Conectar, apunta tus agentes a la URL.

La mayor parte de la configuración en tiempo de ejecución (git-sync, captura de IA, GitHub OAuth, nombre de la aplicación) es editable en la página Configuración — solo las variables de arranque de autenticación/infraestructura viven en el host. Configuración completa: DEPLOY.md.

  • Railway: Nuevo Proyecto → Desplegar desde repositorio de GitHub → añade un Volumen en /data.
  • Render: un clic a través del render.yaml incluido (Docker + un disco /data).

¿Desplegando desde una imagen precompilada en lugar del repositorio? Usa ghcr.io/rwnalds/engram-app:latest — no engram:latest, que es el servidor stdio y no puede responder HTTP. Configura el healthcheck en /api/health.

Preguntas frecuentes

¿Cómo le doy memoria a largo plazo a Claude Code? Despliega Engram, conecta una bóveda de markdown y claude mcp add el endpoint. Las herramientas brain_* permiten a Claude Code buscar, leer y escribir notas persistentes entre sesiones.

¿Pueden varios agentes de IA compartir una base de conocimiento? Sí. Cada agente apunta a la misma URL MCP y lee/escribe la misma bóveda activa — ese es el punto. Dale a cada agente su propio token de portador, read o write — un token de solo lectura no puede mutar tus notas.

¿Cómo evito que un agente cite hechos desactualizados? Retira el hecho y la búsqueda deja de mostrarlo. Cuando un valor cambia, llama a brain_supersede(old, new) — un solo commit atómico marca la nota antigua superseded_by la nueva, y se retiene de la búsqueda por defecto (incluso si es locked). O configura valid_until: 2026-12-31 en una nota y se autoexpira. Las coincidencias retiradas no desaparecen en silencio: brain_search las devuelve en una lista excluded con una razón ("expired 2026-06-01"), para que el agente pueda decir qué ignoró y por qué en lugar de citarlo.

¿Qué impide que un agente simplemente añada una segunda nota contradictoria? Engram rechaza la escritura. Si se le dice "el precio ahora es X", un agente que no puede sobrescribir una nota que nunca leyó añadirá felizmente acme-pricing-2026.md junto a acme-pricing.md — nada se corrompe, y ahora tienes dos notas activas en desacuerdo sobre un número. Esa escritura se rechaza con un puntero a brain_supersede, que retira la nota antigua y añade la nueva en un solo commit. Pasa allow_conflict: true cuando ambas notas realmente pertenecen.

¿Cómo sé qué cambió un agente? Cada escritura se confirma en git atribuida al token o humano detrás de ella, y el feed de actividad del panel muestra diffs por archivo — un registro de auditoría integrado para agentes autónomos.

¿Funciona con mi bóveda de Obsidian? Sí. Lee markdown plano con frontmatter y [[wikilinks]], y renderiza callouts y backlinks estilo Obsidian. Sin paso de importación.

¿Necesito una base de datos vectorial? No. Engram usa búsqueda de texto completo (MiniSearch) más un grafo de wikilinks sobre markdown legible — sin servicio de embeddings, sin almacén vectorial que ejecutar.

¿Puedo chatear con mis notas? Sí — activa el Curator opcional, un agente de chat que busca y lee tu bóveda para responder con citas de wikilinks (Opus / Sonnet / Haiku). Es de solo lectura en el chat, así que te ayuda a pensar sin cambiar nada, y se ejecuta con tu propia clave de Anthropic.

¿Puedo ver qué cambiaron mis agentes? Sí — la vista Actividad lee el historial de git de tu bóveda y muestra cada cambio (agentes y compañeros por igual), expandible a diffs por archivo. Como es solo git, obtienes el registro de auditoría completo gratis.

¿Mis datos están bloqueados? No. Son solo archivos .md en un repositorio git que posees. Apaga Engram y aún tienes cada nota y su historial completo.

¿Dónde se ejecuta / está autoalojado? Tú lo alojas. Un contenedor Docker en Railway / Render / Fly / cualquier VM con un volumen. Tus claves, tus datos.

Contribuciones

Issues y PRs bienvenidos — especialmente donde el modelo de validez se rompe contra una bóveda con forma diferente a la mía.

  • CONTRIBUTING.md — configuración, convenciones y la lista de verificación previa al PR.
  • docs/curator.md — cómo funciona el bucle del agente Curator opcional.
  • SECURITY.md — por favor reporta vulnerabilidades de forma privada, no como un issue.
bun install && bun dev
bun test          # the ranking/authority suite, incl. the stale-truth fixtures

Si Engram te resulta útil, darle estrella al repositorio realmente ayuda a que otras personas lo encuentren.

Stack

Next.js 16 (App Router) · React 19 · TypeScript · Tailwind v4 · shadcn/ui · bun · MiniSearch · d3-force · MCP SDK. Licencia MIT.


Palabras clave: servidor MCP · Model Context Protocol · segundo cerebro para agentes de IA · memoria de agente · memoria a largo plazo para Claude Code · memoria compartida para agentes de IA · base de conocimiento autoalojada · compatible con Obsidian · markdown · grafo de conocimiento · wikilinks · PKM · Zettelkasten · notas respaldadas por git · memoria de agente Hermes · memoria de Cursor · RAG sin base de datos vectorial · chatea con tus notas markdown · feed de actividad de agente respaldado por git · registro de auditoría para agentes de IA · búsqueda consciente de autoridad · tokens MCP de solo lectura vs escritura · control de acceso de agentes · notas autoorganizadas · captura de notas agéntica · IA que archiva tus notas · validez temporal · memoria obsoleta · agentes que citan hechos desactualizados · supersede · expiración de notas · memoria compartida para un equipo de agentes · alternativa a Basic Memory · alternativa a mem0.