Producto
Más cosas que puedes hacer
Los traspasos y la búsqueda son el uso diario. Esto es lo demás que puede hacer por ti una memoria que vive en un solo servidor, desde pasar trabajo entre proyectos hasta mantener la memoria de un cliente separada de la de otro.
Un agente le pide algo al agente de otro proyecto
Dos repositorios que se hablan por una API, cada uno con su agente y su memoria. El agente del frontend conoce el protocolo. En vez de leer el repositorio entero de la API, escribe una petición completa y la deja en la bandeja de entrada de ese proyecto.

Cómo se ve
En el repositorio del frontend
> Pídele al agente de default/api que añada un endpoint /v1/export que envíe NDJSON en streaming, que mantenga el middleware de auth actual, y mándaselo por ai-memory.
El agente llama a memory_message_send con un cuerpo autocontenido. La petición tiene que sostenerse sola, porque quien la lee no ve este proyecto.
Más tarde, en el repositorio de la API
📬 ai-memory: 1 mensaje de otro proyecto esperando en la bandeja de entrada de este proyecto.
> Revisa mi bandeja de entrada de ai-memory.
El agente llama a memory_message_pop, recibe la petición con quién la envió y trabaja a partir de ella. Un segundo pop no devuelve nada.
# Enviar desde el proyecto actual
ai-memory message send --to-workspace default --to-project api \
--subject "export endpoint" "Add a /v1/export endpoint that streams NDJSON…"
# En el otro proyecto: listar sin consumir, o reclamar el más antiguo
ai-memory message list
ai-memory message pop
# Cambiar de idea antes de que lo reclamen
ai-memory message cancel --id <message-id>
Dirigido a un proyecto
Un mensaje va a un workspace y un proyecto, y cualquier sesión de ese proyecto puede reclamarlo. Una vez reclamado, desaparece de la cola, como un traspaso.
Nada entra al contexto por sí solo
El aviso al arrancar la sesión solo lleva un recuento. El texto del mensaje llega al agente con un pop deliberado, delimitado y marcado como no confiable, con el remitente fuera de la delimitación.
Falla cerrado
El proyecto destinatario tiene que existir, así que una errata se rechaza en vez de caer en una bandeja que nadie lee. Cada bandeja admite como máximo 256 mensajes pendientes.
Se puede retirar, queda auditado
El remitente puede cancelar un mensaje hasta que alguien lo reclama. Los secretos se limpian al enviar, el cuerpo tiene un tamaño máximo y en un servidor compartido cada mensaje registra quién lo envió.
Separa clientes, monorepos y trabajo personal
La memoria se archiva por workspace y proyecto. Un checkout con un remoto de git se archiva por ese remoto, así que el mismo repositorio clonado dos veces comparte una memoria, y una carpeta sin remoto usa su nombre. Un archivo pequeño cambia el resto.

Un workspace por cliente
Deja un
.ai-memory.tomlen~/work/client-a/y todos los repositorios que cuelgan de ahí se archivan en ese workspace. Nada del cliente A aparece mientras trabajas para el cliente B.Un monorepo como un solo proyecto
Un marcador que nombra un proyecto fija todos los subdirectorios a él, así que los paquetes comparten una memoria. Omite el proyecto y cada paquete conserva la suya.
Worktrees de git
Los worktrees enlazados se resuelven al repositorio principal, así que una rama con checkout en otro sitio conserva la misma memoria.
Dos agentes en un proyecto
El puntero de proyecto actual está aislado por cada llamador, así que Claude Code y Codex pueden correr a la vez en el mismo directorio sin confundirse entre sí.
Un portátil, dos empleadores
Registra cada servidor con
ai-memory server addy nómbralo en el marcador conserver = "team-b". Los hooks de ese árbol van ahí y a ningún otro sitio, y un nombre que no se resuelve no envía nada.Fija una identidad
identity = "acme/platform"archiva un checkout bajo esa clave donde sea que viva, incluso sin remoto.
# Todos los repositorios bajo este directorio se archivan en el workspace client-a
workspace = "client-a"
Reglas que llegan a todas las sesiones
Dile al agente que recuerde algo de forma permanente y se convierte en una página de la wiki. Las reglas se archivan aparte de los hechos, y el resumen de sesión puede ponerlas delante del agente antes del primer prompt.
Dilo una vez
“Recuerda: antes de tocar el código de pagos, lee las notas de PCI.” El agente escribe una página duradera. Pídela como regla global y se aplica a todos tus proyectos.
El resumen las trae
Con
inject_on_session_start = trueen el archivo marcador del proyecto, las páginas fijadas, las reglas y los espacios se anteponen al contexto de cada sesión nueva.El lint sugiere promoverlas
Cuando una regla parece bastante duradera,
memory_lintsugiere copiarla aCLAUDE.mdoAGENTS.md. ai-memory nunca edita esos archivos por su cuenta.Los registros de decisiones siguen siendo tuyos
ai-memory nunca escribe en tu repositorio. Mantén un directorio de ADR y ponlo en
[capture] ignore_pathspara que la wiki no guarde una copia obsoleta.
# Anteponer páginas fijadas, reglas y espacios a cada sesión
[briefing]
inject_on_session_start = true
Notas que caducan y feedback que reordena
Recuerda esto hasta el viernes
Una página escrita con
expires_atsale de la búsqueda después de esa fecha. Sigue ahí para una búsqueda que pida páginas caducadas.Esa página estaba mal
memory_feedbackregistra en una página si fue útil, no útil, obsoleta o incorrecta. Obsoleta e incorrecta la bajan en los próximos rankings y aceleran su envejecimiento. El feedback nunca borra nada.Mover una sesión
Una sesión capturada en el proyecto equivocado, tras un
cda un directorio temporal, se puede reasignar conai-memory move-session. Sus observaciones y su página se mueven con ella.Recuperarse de una compactación
Cuando Claude Code o Codex compactan su contexto, un hook escribe antes una página de sesión nueva, para que se pueda recordar lo que la compactación dejó fuera.
Léelo en el navegador, llévatelo a donde quieras
Una interfaz web de solo lectura
Arranca el servidor con
--enable-weby las páginas de todos los proyectos se pueden navegar, agrupadas en conceptos, decisiones, gotchas y sesiones, con una API JSON en/api/v1.Un formato abierto
Cada proyecto es un bundle de Open Knowledge Format.
ai-memory export-okflo empaqueta para cualquier herramienta que lea OKF, y para todo lo demás los archivos son markdown plano.Skills para tu agente
ai-memory install-mcpinstala también un fragmento corto de enrutamiento y Agent Skills gestionadas, para que el agente sepa qué herramienta responde a “¿hemos hablado de esto?” y cuál envía mensajes.
Tareas que asume el lanzador
ai-memory run arranca el agente a través del servidor de memoria. También mantiene el binario al día, cierra las sesiones y avisa antes de desarmar nada.

Actualiza con un solo comando
ai-memory upgradedescarga la versión correspondiente, comprueba el checksum, cambia el binario y renueva los hooks. Las instalaciones de Docker, Homebrew, AUR y RPM siguen su propia ruta.Un aviso antes de quitar los guardarraíles
ai-jail en GitHubai-memory run --yolodice qué está a punto de desarmar y, en Linux y macOS con ai-jail disponible, ofrece volver a ejecutar la sesión dentro del sandbox con un checklist de lo que el jail puede ver.--jailentra directo con valores predeterminados razonables.Entorno para el harness
--env KEY=VALUEy--env-filellegan tanto al agente lanzado como a la búsqueda de sesión propia de ai-memory, así que unCLAUDE_CONFIG_DIRpor cuenta no necesita ningún script wrapper.Las sesiones se cierran al salir
Los agentes sin hook de fin de sesión (Command Code, Kiro CLI, Antigravity CLI) reciben su resumen y su traspaso cuando el lanzador sale.
finalize-session --reopencubre una conversación que continuó después.Inicia sesión en la interfaz web
La wiki integrada tiene páginas de inicio de sesión y de cambio de contraseña para los usuarios con contraseña, y una página solo para root donde aprobar o rechazar propuestas pendientes de auto-mejora en todos los proyectos.
Stopwords en tu idioma
[search.fts] stopwordsenumera las palabras funcionales de tu idioma, para que el ranking de búsqueda de texto completo en una wiki en portugués no se desvíe pordeyque.
Preguntas y respuestas
¿Puede un agente de un proyecto leer la memoria de otro?
No. La memoria se archiva por proyecto, y la mensajería es el único cruce deliberado: un proyecto solo ve los mensajes dirigidos a él o enviados por él. El cuerpo del mensaje tiene que ser autocontenido porque quien lo lee no ve los archivos del remitente.
¿Un mensaje recibido se trata como instrucciones?
No. Un mensaje sacado con pop va delimitado como entrada no confiable de otro proyecto y lleva un aviso que lo dice. El agente lo evalúa contigo como una petición de tarea, y el remitente aparece fuera de la delimitación para que puedas juzgar primero si te fías.
¿Qué pasa si dos sesiones revisan la misma bandeja?
El primer pop reclama el mensaje y el segundo no recibe nada. Un mensaje se reclama exactamente una vez, la misma regla que siguen los traspasos.
¿Tengo que configurar workspaces?
No. Sin archivo marcador, todo se archiva en un workspace llamado default, con el remoto de git como proyecto, o el nombre del directorio cuando no lo hay. Añade .ai-memory.toml solo cuando quieras separar clientes, tratar un monorepo como un solo proyecto, mantener aparte la memoria del trabajo y la personal, o usar un segundo servidor.
Dale memoria a tus agentes hoy.
Gratis y de código abierto bajo la licencia MIT. No necesitas cuenta ni clave de API.