Mengram

Capa de memoria similar a la humana para agentes de IA con tipos de memoria semántica, episódica y procedimental, perfil cognitivo, grafo de conocimiento y 12 herramientas MCP.

Documentación

Mengram

Dale a tus agentes de IA una memoria que realmente aprende

GitHub stars PyPI npm License: Apache 2.0 PyPI Downloads Last commit

Sitio web · Obtén tu API Key · Documentación · Consola · Ejemplos

pip install mengram-ai   # or: npm install mengram-ai

mengram try              # see what memory would know about you — local only,
                         # no account, nothing leaves your machine
from mengram import Mengram
m = Mengram(api_key="om-...")           # Free key → mengram.io

m.add([{"role": "user", "content": "I use Python and deploy to Railway"}])
m.search("tech stack")                  # → facts
m.ask("what's my tech stack?")          # → synthesized answer + citations
m.episodes(query="deployment")          # → events
m.procedures(query="deploy")            # → workflows that evolve from failures

Multilingüe nativo: pregunta en ruso, chino, español, japonés — Mengram recupera y responde en 23 idiomas (embeddings multilingües de Cohere + rerank).


Instalación en un solo prompt (cualquier herramienta de IA)

Pega esto en Claude Desktop, Cursor, Codex, Claude Code o Windsurf — el agente lee nuestra guía de configuración, instala el SDK, configura el servidor MCP y verifica el flujo completo de extremo a extremo. Sin cambiar de contexto en la terminal.

Install Mengram for me. Fetch the canonical install guide at
https://mengram.io/agent-install.txt and follow it precisely.
My email is YOUR_EMAIL_HERE.

Funciona en cualquier agente con herramientas de shell + edición de archivos + fetch web. ¿Prefieres hacerlo manualmente? Consulta la guía en texto plano — también está estructurada para ojos humanos.


Claude Code — Memoria que sobrevive a /clear Y a la auto-compactación

Memoria persistente que sobrevive a /clear, la auto-compactación, los cambios de máquina y las transferencias de equipo — el hook de SessionStart se ejecuta después de cada compactación y reinyecta tu contexto. El resumen puede ser imperfecto; la memoria no lo es.

# 1. Get a free key at https://mengram.io and save it once
mkdir -p ~/.mengram && echo '{"api_key": "om-your-key-here"}' > ~/.mengram/config.json

# 2. Install the plugin (hooks + MCP server + skill)
claude plugin marketplace add alibaizhanov/mengram
claude plugin install mengram@mengram

# 3. Skip the cold start — import your existing session history
#    (secrets are redacted on your machine before anything is uploaded)
mengram import claude-code

Qué sucede:

Session Start  →  Loads your cognitive profile (fires after /clear, compaction, and restarts)
Every Prompt   →  Searches past sessions for relevant context (auto-recall)
After Response →  Saves new knowledge in background (auto-save)
Before a Bash  →  If the command matches a learned workflow with a weak record, asks you first (policy gate, CLI hooks)
Before compact →  Writes the working state down — last prompts, files edited, last commands, where Claude left off (CLI hooks)
After compact  →  Puts that state back, verbatim, next to the host's summary — and tells you so in one line

Sin guardados manuales. Sin llamadas a herramientas. Claude simplemente sabe en qué trabajaste ayer — incluso después de que la compactación se haya comido la transcripción.

¿Prefieres hooks gestionados por CLI en lugar del plugin? pip install mengram-ai && mengram setup hace lo mismo mediante mengram hook install.

La misma memoria en Codex y Cursor

Codex y Cursor disparan los mismos eventos de ciclo de vida, así que los mismos hooks se ejecutan allí — una sola memoria en los tres. mengram setup los encuentra en tu máquina e instala sus hooks; o añádelos uno a uno:

mengram hook install --codex      # ~/.codex/hooks.json: session context, recall on every prompt, compaction checkpoint, auto-save + task card
mengram hook install --cursor     # ~/.cursor/hooks.json: session context, compaction checkpoint (back on the next tool call), auto-save

Cursor no tiene hook de contexto por prompt (beforeSubmitPrompt solo puede permitir o bloquear), así que la recuperación a mitad de conversación allí es bajo petición mediante las herramientas MCP; el inicio de sesión y la compactación son automáticos.

Cada hecho recuerda qué herramienta lo escribió y cuándo, y la recuperación lo muestra: deploys to Fly.io from main (codex, 2026-09-15). Cada hook también le dice al servidor en qué sistema operativo y herramienta se ejecuta, de modo que una ruta de workspace registrada en tu Mac nunca llegue a una sesión de Claude Code en una máquina Linux, y un hecho de configuración de Cursor nunca llegue a Codex — esos se omiten y se cuentan (facts_left_out_for_host).

Retoma una tarea donde la dejaste — mengram resume

Cuando un agente se detiene, los hooks escriben una tarjeta de tarea para el repositorio y la rama: archivos tocados, últimos comandos, la última ejecución de pruebas y el commit en el que se ejecutó, además del borrador del agente sobre la tarea, qué está hecho y qué queda. La siguiente sesión en esa rama — mañana, otro agente en otro worktree de la misma, otra máquina — la recibe primero, y se le informa si el código ha cambiado desde la última comprobación. Una sesión en una rama sin tarjeta propia (un worktree nuevo de Orca, por ejemplo) solo recibe la información de que existen tarjetas, ya que la tarjeta de otra rama suele ser la tarea de otro agente; mengram resume la muestra bajo petición:

$ mengram resume
[Mengram resume — where this task stands (2 h ago, from claude-code, branch main)]
Task (agent draft, not confirmed): prepare the Dify example for publication
Done:
  - three workflows assembled
  - save/recall round-trip checked through the API
Remaining:
  - import the workflows into Dify and check the model's answers
Last check: `python3 -m pytest -q tests/test_dify.py` → 4 passed in 0.31s
  The last check ran on 57cdde9; HEAD is now a1b2c3d (4 commits later). Its result describes the earlier state.
Files touched: examples/dify-support/workflow.yml
Sources: session 5d274778 · commit 57cdde9

mengram resume --open sirve una página local para corregir la tarjeta, confirmarla (el texto confirmado nunca se redacta de nuevo), elegir otra tarea o copiar el contexto para una nueva sesión. La tarjeta vive en ~/.mengram/resume/ y no requiere cuenta; solo el borrador de tarea/hecho/restante usa un modelo.

¿Sin cuenta? Guarda la memoria en una carpeta

pip install mengram-ai
mengram local init ./memory --provider anthropic --api-key sk-ant-...   # or openai / ollama
mengram import claude-code --memory ./memory                             # seed it from your Claude Code sessions
mengram local map --memory ./memory --open                               # one page: who you are, what happened, what it learned
mengram hook install --memory ./memory                                   # the same four hooks, all local
mengram server --memory ./memory                                         # MCP for Claude Desktop, Cursor, any client

La carpeta es la memoria: un árbol memfmt de Markdown que te pertenece — git hace diffs, Obsidian lo dibuja, memfmt validate lo verifica. Los mismos procedimientos con resultados que en la nube: versiones, conteos de éxito/fallo por paso, la puerta de políticas y la puerta de regresión que pone en cuarentena una corrección que rompería otro flujo de trabajo. Solo la extracción y una revisión de fallo necesitan un modelo, y ese lo aportas tú. Nada expira y nada pide una clave. Documentación.

La búsqueda local coincide con palabras en texto Unicode, incluido el ruso; no usa embeddings ni traduce consultas. Varias sesiones de Mengram coordinan escrituras con un bloqueo de carpeta y fusionan adiciones independientes. Las ediciones conflictivas requieren una recarga en lugar de sobrescribir otra sesión. Cada archivo modificado se reemplaza atómicamente, pero la carpeta completa no es una transacción única a prueba de fallos, y los editores externos no participan en el bloqueo.


¿Por qué Mengram?

Cada herramienta de memoria para IA almacena hechos. Mengram almacena 3 tipos de memoria — y los procedimientos evolucionan cuando fallan.

Mengramclaude-memMem0ZepLetta
Memoria semántica (hechos, preferencias)SíSíSíSíSí
Memoria episódica (eventos, decisiones)SíParcialNoNoParcial
Memoria procedimental (flujos de trabajo)SíNoNoNoNo
Los procedimientos evolucionan a partir de fallosSíNoNoNoNo
Perfil cognitivoSíNoNoNoNo
Recuperación multilingüe nativa (23 idiomas)SíParcialNoNoNo
Pregunta y citas (respuesta sintetizada)SíNoNoNoNo
Aislamiento multiusuarioSíNoSíSíNo
Grafo de conocimientoSíNoSíSíSí
Hooks de Claude Code (auto-guardado/recuperación)SíSíNoNoNo
Servidor MCPSíSíSíSíSí
Integraciones LangChain + CrewAISíNoParcialParcialParcial
Importar historial de Claude Code / ChatGPT / ObsidianSíNoNoNoNo
PrecioPlan gratuitoOSS gratuito (+respaldo en la nube)$19-249/mesEmpresarialAutoalojado

Comienza en 30 segundos

1. Instalación

pip install mengram-ai

2. Configuración — un solo comando lo hace todo: cuenta, hooks de Claude Code, configuraciones MCP para las herramientas detectadas (Cursor, Claude Desktop, Windsurf), importación de historial y una verificación de ida y vuelta

mengram setup

O consigue una clave manualmente en mengram.io y export MENGRAM_API_KEY=om-...

3. Uso

from mengram import Mengram

m = Mengram(api_key="om-...")

# Add a conversation — auto-extracts facts, events, and workflows
m.add([
    {"role": "user", "content": "Deployed to Railway today. Build passed but forgot migrations — DB crashed. Fixed by adding a pre-deploy check."},
])

# Search across all 3 memory types at once
results = m.search_all("deployment issues")
# → {semantic: [...], episodic: [...], procedural: [...]}
Subida de archivos (PDF, DOCX, TXT, MD)
# Upload a PDF — auto-extracts memories using vision AI
result = m.add_file("meeting-notes.pdf")
# → {"status": "accepted", "job_id": "job-...", "page_count": 12}

# Poll for completion
m.job_status(result["job_id"])
// Node.js — pass a file path
await m.addFile('./report.pdf');

// Browser — pass a File object from <input type="file">
await m.addFile(fileInput.files[0]);
# REST API
curl -X POST https://mengram.io/v1/add_file \
  -H "Authorization: Bearer om-..." \
  -F "file=@meeting-notes.pdf" \
  -F "user_id=default"
JavaScript / TypeScript
npm install mengram-ai
const { MengramClient } = require('mengram-ai');
const m = new MengramClient('om-...');

await m.add([{ role: 'user', content: 'Fixed OOM by adding Redis cache layer' }]);
const results = await m.searchAll('database issues');
// → { semantic: [...], episodic: [...], procedural: [...] }
API REST (curl)
# Add memory
curl -X POST https://mengram.io/v1/add \
  -H "Authorization: Bearer om-..." \
  -H "Content-Type: application/json" \
  -d '{"messages": [{"role": "user", "content": "I prefer dark mode and vim keybindings"}]}'

# Search all 3 types
curl -X POST https://mengram.io/v1/search/all \
  -H "Authorization: Bearer om-..." \
  -d '{"query": "user preferences"}'

3 tipos de memoria

Semántica — hechos, preferencias, conocimiento

m.search("tech stack")
# → ["Uses Python 3.12", "Deploys to Railway", "PostgreSQL with pgvector"]

Episódica — eventos, decisiones, resultados

m.episodes(query="deployment")
# → [{summary: "DB crashed due to missing migrations", outcome: "resolved", date: "2025-05-12"}]

Procedimental — flujos de trabajo que evolucionan

Week 1:  "Deploy" → build → push → deploy
                                         ↓ FAILURE: forgot migrations
Week 2:  "Deploy" v2 → build → run migrations → push → deploy
                                                          ↓ FAILURE: OOM
Week 3:  "Deploy" v3 → build → run migrations → check memory → push → deploy ✅

Esto sucede automáticamente cuando reportas fallos:

m.procedure_feedback(proc_id, success=False,
                     context="OOM error on step 3", failed_at_step=3)
# → Procedure evolves to v3 with new step added

Cada revisión impulsada por un fallo registra qué suposición resultó falsa — no solo qué paso se rompió — y deriva una condición previa que viaja con el procedimiento en el momento de la recuperación:

{
  "version": 3,
  "violated_assumption": "the build container had enough memory for a full build",
  "preconditions": ["check available memory before building"],
  "success_count": 11, "fail_count": 2
}

Un agente que carga la v3 no repite los dos errores que la produjeron — y sabe qué verificar antes de confiar en el flujo de trabajo.

O totalmente automático — solo añade conversaciones y Mengram detecta fallos y evoluciona procedimientos:

m.add([{"role": "user", "content": "Deploy failed again — OOM on the build step"}])
# → Episode created → linked to "Deploy" procedure → failure detected → v3 created

Pregunta a tu memoria (RAG integrado)

m.ask() devuelve una respuesta sintetizada con citas — no una lista cruda de hechos. Mengram incrusta tu consulta, recupera los hechos relevantes principales y usa Cohere Chat para escribir una respuesta fundamentada con atribución nativa de fuentes.

result = m.ask("what programming languages do I use?")

print(result["answer"])
# 'You use Python and Rust. Python is your daily language [1] and
#  Rust is your favorite [2]. You also know Java for enterprise
#  systems [3].'

for cit in result["citations"]:
    print(f'  "{cit["text"]}" → {cit["sources"][0]["fact"]}')
# "Python and Rust" → uses Python daily for backend development
# "favorite [2]"   → Rust is favorite language
# "Java"           → specializes in Java/Spring Boot

Multilingüe: pregunta en cualquiera de los 23 idiomas, obtén una respuesta en el mismo idioma con citas que enlazan a los hechos en el idioma original en que se almacenaron. Función premium (Pro / Growth / Business).

Perfil cognitivo

Una sola llamada a la API genera un prompt de sistema a partir de todas las memorias:

profile = m.get_profile()
# → "You are talking to Ali, a developer in Almaty. Uses Python, PostgreSQL,
#    and Railway. Recently debugged pgvector deployment. Prefers direct
#    communication and practical next steps."

Insértalo en el prompt de sistema de cualquier LLM para una personalización instantánea.

Importar datos existentes

Elimina el problema del arranque en frío:

mengram import chatgpt ~/Downloads/chatgpt-export.zip --cloud   # ChatGPT history
mengram import obsidian ~/Documents/MyVault --cloud              # Obsidian vault
mengram import files notes/*.md --cloud                          # Any text/markdown

Integraciones

Claude Code — Hooks de memoria automática

mengram hook install

5 hooks: perfil al inicio, recuperación en cada prompt, guardado después de las respuestas, una puerta de políticas antes de comandos Bash con forma de flujo de trabajo, y el resultado de cada paso escrito después de ejecutarse.

El recibo. La memoria que funciona es invisible, así que cada hook deja una línea y la siguiente sesión abre con el resumen: "Mengram, última sesión: memorias recuperadas en 4 prompts · preguntó antes de 1 flujo de trabajo con registro débil · registró 3 resultados de pasos (2 ok, 1 fallido)". Silencioso cuando no pasó nada. mengram receipt muestra la última sesión y los últimos 7 días.

Puerta de políticas. El historial de resultados cambia lo que el agente puede hacer, no solo cómo se clasifican los resultados. Cuando un git push, deploy, migrate, kubectl, rm -rf … coincide con un flujo de trabajo aprendido que está untested, hereda su registro de una versión anterior (61% expected), o está por debajo del umbral (58% reliable, por defecto 70), el hook responde ask: ves el porqué, Claude recibe los pasos registrados, nada se ejecuta solo por la palabra del agente. Un flujo de trabajo probado permanece en silencio. Funciona contra la nube, o totalmente sin conexión contra una carpeta memfmt con MENGRAM_MEMORY_DIR=./memory. Solo los comandos con forma de flujo de trabajo activan una búsqueda (una por cada uno); ls y cat nunca lo hacen. Ajusta con MENGRAM_POLICY_MIN_RELIABLE=80, MENGRAM_POLICY_PATTERN='\bmake\b'; omite con mengram hook install --no-policy. La memoria puede preguntar; nunca deniega.

Documentación

Servidor MCP — Claude Desktop, Cursor, Codex, Windsurf, Cline

{
  "mcpServers": {
    "mengram": {
      "command": "mengram",
      "args": ["server", "--cloud"],
      "env": { "MENGRAM_API_KEY": "om-..." }
    }
  }
}

30 herramientas para la gestión de memoria.

LangChain — pip install langchain-mengram

from langchain_mengram import (
    MengramRetriever,
    MengramChatMessageHistory,
)

retriever = MengramRetriever(api_key="om-...")
docs = retriever.invoke("deployment issues")

CrewAI

from integrations.crewai import create_mengram_tools

tools = create_mengram_tools(api_key="om-...")
# → 5 tools: search, remember, profile,
#   save_workflow, workflow_feedback

agent = Agent(role="Support", tools=tools)

OpenClaw

openclaw plugins install openclaw-mengram

Auto-recuperación antes de cada turno, auto-captura después. 12 herramientas, comandos de barra, Graph RAG.

GitHub · npm

CLI — Interfaz de línea de comandos completa

mengram search "deployment" --cloud
mengram profile --cloud
mengram import chatgpt export.zip --cloud
mengram hook install

Documentación

Claude Managed Agents — Memoria MCP para agentes alojados

{
  "mcp_servers": [{
    "type": "url",
    "name": "mengram",
    "url": "https://mengram.io/mcp/sse"
  }]
}

30 herramientas de memoria vía MCP. Documentación

n8n — Nodos HTTP para cualquier flujo de trabajo

POST https://mengram.io/v1/add
POST https://mengram.io/v1/search

Sin necesidad de código — arrastra y suelta memoria en cualquier flujo de trabajo de n8n.

Documentación

Aislamiento multiusuario

Una clave de API, muchos usuarios — cada uno ve solo sus propios datos:

m.add([...], user_id="alice")
m.add([...], user_id="bob")

m.search_all("preferences", user_id="alice")  # Only Alice's memories
m.get_profile(user_id="alice")                 # Alice's cognitive profile

Cliente asíncrono

Cliente Python no bloqueante construido sobre httpx:

from mengram import AsyncMengram

async with AsyncMengram() as m:
    await m.add([{"role": "user", "content": "I use async/await"}])
    results = await m.search("async")
    profile = await m.get_profile()

Instala con pip install mengram-ai[async].

Filtros de metadatos

Filtra los resultados de búsqueda por metadatos:

results = m.search("config", filters={"agent_id": "support-bot", "app_id": "prod"})

Webhooks

Recibe notificaciones cuando las memorias cambian:

m.create_webhook(
    url="https://your-app.com/hook",
    event_types=["memory_add", "memory_update"],
)

Plantillas de agentes

Clona, establece la clave de API, ejecuta en 5 minutos:

PlantillaStackQué muestra
Agente DevOpsPython SDKProcedimientos que evolucionan a partir de fallos de despliegue
Soporte al clienteCrewAIAgente con 5 herramientas de memoria, recuerda a clientes recurrentes
Asistente personalLangChainPerfil cognitivo + historial de chat con auto-guardado
cd examples/devops-agent && pip install -r requirements.txt
export MENGRAM_API_KEY=om-...
python main.py

Uso con agentes de IA

Mengram funciona como backend de memoria persistente para agentes autónomos. Tu agente almacena lo que aprende y lo recupera en la siguiente ejecución — volviéndose más inteligente con el tiempo.

from mengram import Mengram

m = Mengram(api_key="om-...")

# Agent completes a task → store what happened
m.add([
    {"role": "user", "content": "Apply to Acme Corp on Greenhouse"},
    {"role": "assistant", "content": "Applied successfully. Had to use React Select workaround for dropdowns."},
])
# → Extracts: fact ("applied to Acme Corp"), episode ("Greenhouse application"),
#   procedure ("React Select dropdown workaround")

# Next run → agent recalls what worked before
context = m.search_all("Greenhouse application tips")
# → Returns past procedures, failures, and successful strategies

# Report outcome → procedures evolve
m.procedure_feedback(proc_id, success=False,
                     context="Dropdown fix stopped working")
# → Procedure auto-evolves to a new version

Funciona con cualquier framework de agentes — CrewAI, LangChain, AutoGPT, bucles personalizados. El agente solo llama a add() después de las acciones y a search() antes de las decisiones.

Autoalojado (Ollama)

Cuando se ejecuta localmente con Ollama, usa modelos con 8B+ parámetros y ventana de contexto de 8K+. El prompt de extracción es de ~4,000 tokens — los modelos más pequeños alucinarán o mezclarán ejemplos con datos reales.

ModeloParámetros¿Funciona?
llama3.1:8b8BSí
mistral:7b7BSí
gemma2:9b9BSí
llama3.1:70b70BMejor
phi4-mini:3.8b3.8BNo — contexto demasiado pequeño

Referencia de API

EndpointDescripción
POST /v1/addAgregar memorias (extrae automáticamente los 3 tipos)
POST /v1/add_textAgregar memorias desde texto plano
POST /v1/add_fileSubir archivo (PDF, DOCX, TXT, MD) — extracción con IA de visión
POST /v1/searchBúsqueda semántica
POST /v1/search/allBúsqueda unificada (semántica + episódica + procedimental)
GET /v1/episodes/searchBuscar eventos y decisiones
GET /v1/procedures/searchBuscar flujos de trabajo
PATCH /v1/procedures/{id}/feedbackReportar resultado — activa la evolución
GET /v1/procedures/{id}/historyHistorial de versiones + registro de evolución
GET /v1/profilePerfil cognitivo
GET /v1/triggersDisparadores inteligentes (recordatorios, contradicciones, patrones)
POST /v1/agents/runAgentes de memoria (Curador, Conector, Resumen)
GET /v1/meInformación de la cuenta

Documentación interactiva completa: mengram.io/docs

Encabezados de cuota

Cada respuesta autenticada incluye encabezados de uso:

EncabezadoDescripción
X-Quota-Add-UsedLlamadas de agregar usadas este mes
X-Quota-Add-LimitLlamadas de agregar permitidas este mes
X-Quota-Search-UsedLlamadas de búsqueda usadas este mes
X-Quota-Search-LimitLlamadas de búsqueda permitidas este mes

Los SDK lo exponen a través de .quota:

m.search("test")
print(m.quota)  # {"add": {"used": 5, "limit": 30}, "search": {"used": 12, "limit": 100}}

Comunidad

Historial de estrellas

Star History Chart

Licencia

Apache 2.0 — gratis para uso comercial.