DOCUMENTACIÓN

La capa de conocimiento soberano para inteligencia artificial.

VISIÓN

ChainMemory no es una herramienta de memoria. Es una capa de conocimiento soberano para sistemas de IA.

Todos los modelos de IA actuales sufren la misma limitación fundamental: cuando una conversación termina, todo lo aprendido desaparece. El contexto se pierde. Las decisiones se olvidan. El progreso se reinicia a cero. ChainMemory existe para resolver esto permanentemente.

Las memorias que guardás son el mecanismo. El Project State — una vista estructurada, versionada y consolidada del conocimiento de tu proyecto — es el producto. La prueba es independiente: cualquiera puede verificarla sin confiar en nosotros. Y la interoperabilidad entre cualquier modelo de IA es la consecuencia.

Qué permite ChainMemory

  • Estado consolidado portable — Lo que se mueve entre modelos no es una pila de conversaciones: es el estado estructurado que se construyó con ellas. Decisiones vigentes, riesgos abiertos, prioridades actuales, vocabulario de trabajo. Funciona con ChatGPT hoy, Claude mañana, y cualquier modelo futuro. Sin vendor lock-in, nunca.
  • Continuidad verificable — Podés demostrarle a cualquiera que una decisión existía en un momento específico, sin que tenga que confiar en nosotros. Cada estado de proyecto lleva su prueba criptográfica, anclada on-chain.
  • Pista de auditoría de decisiones — Cada decisión se rastrea hasta las conversaciones que la produjeron. Procedencia completa, responsabilidad total.
  • Identidad persistente para flujos de IA — Tu asistente de IA no arranca de cero en cada sesión. Hereda el conocimiento acumulado de cada interacción previa.
  • Conocimiento soberano — Vos sos dueño de tus datos. No OpenAI, no Anthropic, no Google. Tus memorias viven en tu cuenta, y su prueba es pública: podés verificarlas vos mismo, de forma independiente de nosotros.
La idea central Las memorias son eventos. El Project State es una vista materializada. El anclaje es la prueba de existencia. Juntos, forman un sistema donde el conocimiento de IA es persistente, portable, estructurado y demostrablemente auténtico.
Las memorias son el insumo. El estado es el resultado. Guardar conversaciones es donde empieza, no donde está el valor. Una pila de memorias es una ventana de contexto más grande. Un estado consolidado es conocimiento que podés entregarle a cualquier modelo, verificar contra la cadena, y con el que podés hacer responsable a alguien. Esa diferencia es todo el producto.

QUÉ ES CHAINMEMORY

ChainMemory es una plataforma de memoria persistente, portable y verificable para inteligencia artificial. Cada conversación importante, cada decisión, cada contexto de proyecto se guarda como una memoria individual, vinculada a un proyecto, y anclada con una prueba criptográfica que cualquiera puede verificar.

Esas memorias son el insumo. Lo que ChainMemory construye con ellas es el Project State: una vista consolidada y versionada de lo que tu proyecto sabe — decisiones vigentes, riesgos abiertos, prioridades actuales. Ese estado es lo que viaja entre modelos, y es lo que lleva la prueba.

Tu IA olvida cada vez que cerrás la pestaña. ChainMemory resuelve eso. Funciona con ChatGPT, Claude, Gemini, Perplexity y cualquier modelo que soporte MCP o API.

Tres formas de acceso Extensión Chrome (un clic desde cualquier chat), Servidor MCP (integración nativa con Claude Desktop, Cursor y cualquier cliente MCP), y API REST (control total desde tu código).
Algunas operaciones cuestan AIC Leer es siempre gratis. Escribir una memoria, inyectar contexto y consolidar estado pagan un fee de protocolo en AIC, el token nativo de la red — mitad quemada, mitad al tesoro del ecosistema. Ver Costos para la tabla completa. Hay AIC gratis en el faucet.

POR QUÉ CHAINMEMORY

El problema es invisible hasta que perdés semanas de trabajo

Cada conversación con IA hoy empieza de cero. La IA no recuerda qué decidiste ayer, qué arquitectura elegiste la semana pasada, ni por qué rechazaste un enfoque hace tres meses. Los equipos que usan IA acumulan conocimiento crítico — y lo pierden cuando cierran la pestaña.

Antes y después

EscenarioSin ChainMemoryCon ChainMemory
Pasás 2 horas con Claude diseñando un esquema de base de datos Cerrás la pestaña. En la próxima sesión, Claude no tiene ningún recuerdo del esquema. Reexplicás todo desde cero. La decisión se guarda como memoria. En la próxima sesión, Claude recibe el esquema automáticamente vía inyección de contexto.
Tu equipo cambia de ChatGPT a Gemini a mitad de proyecto Todo el historial queda bloqueado en ChatGPT. Gemini empieza sin nada. Semanas de contexto perdidas. Gemini recibe el Project State completo — decisiones, riesgos, hitos, stack — como si hubiera estado desde el día uno.
Un stakeholder pregunta "¿cuándo decidimos usar PostgreSQL?" Buscás en cientos de hilos de chat esperando encontrarlo. ¿Quizás fue en Slack? ¿Quizás en otra IA? La decisión tiene un hash, un timestamp y links de evidencia. Compartís la URL de verificación — prueba criptográfica.
Dos miembros del equipo toman decisiones de arquitectura contradictorias usando diferentes IAs Nadie se da cuenta hasta que producción se rompe. No hay pista de auditoría mostrando quién decidió qué. El Motor de Consolidación detecta el conflicto, lo señala y rastrea qué decisión reemplaza a la otra.
Un auditor pide prueba de que una decisión de compliance se tomó antes de la fecha límite Tenés capturas de pantalla y "confiá en mí." Sin evidencia a prueba de manipulación. El estado fue anclado on-chain en el bloque N. El hash es inmutable. El auditor verifica de forma independiente.

Qué lo hace diferente

Otras herramientas guardan conversaciones. ChainMemory guarda conocimiento — estructurado, verificado y portable. La diferencia:

  • Estructurado, no crudo — El Motor de Consolidación extrae decisiones, hitos, riesgos y stack de conversaciones crudas. Obtenés un Project State, no un dump de transcripciones.
  • Verificado, no confiado — Cada estado es hasheado y anclado on-chain. Cualquiera puede verificar de forma independiente sin depender de los servidores de ChainMemory.
  • Portable, no bloqueado — Funciona con ChatGPT, Claude, Gemini, Copilot, Perplexity y cualquier herramienta compatible con MCP. Tu conocimiento se mueve con vos.
  • Inyectado, no buscado — El contexto se inyecta automáticamente en nuevas conversaciones con IA. La IA recibe lo que necesita sin que copies ni pegues nada.
El test de 5 minutos Instalá la extensión, guardá una memoria, cambiá a una IA diferente e inyectá el contexto. Vas a ver tu decisión llegar intacta en menos de 5 minutos. Ese es el momento en que hace clic.

INICIO RÁPIDO

Guardar → Recuperar → Verificar → Probar en 5 minutos

Prerequisitos

  • Google Chrome (o cualquier navegador Chromium)
  • Una cuenta ChainMemory — creá una acá
  • Tu API Key — Extensión → Settings → Connection → View

Opción A — Extensión Chrome (más rápida)

1

Instalá e iniciá sesión

Descargá desde la Chrome Web Store. Iniciá sesión con tu cuenta. El icono de la extensión aparece en tu barra de herramientas.

2

Guardar — guardá una memoria

Abrí cualquier chat de IA (ChatGPT, Claude, Gemini). Tené una conversación donde tomes una decisión — ej., "Vamos a usar PostgreSQL para la base de datos de usuarios." Hacé clic en el icono de ChainMemory y guardá. La extensión extrae el contenido y crea una memoria vinculada a tu proyecto.

3

Recuperar — inyectar en una nueva sesión

Abrí una IA diferente (o una nueva conversación en la misma). Hacé clic en el icono de ChainMemory → "Inyectar Contexto." Tu decisión anterior llega automáticamente — la IA ahora sabe sobre la elección de PostgreSQL sin que repitas nada.

4

Verificar — chequeá el hash

En la Extensión, abrí Project Brain. Vas a ver el estado de tu proyecto con decisiones, riesgos y prioridades, más su ancla on-chain. El estado lleva un hash SHA3-256 computado sobre el JSON canónico del estado mismo, con separador de dominio CM_PROJECT_STATE_V<schema_version> — exactamente lo que recomputa el verificador de referencia abierto.

5

Probar — anclar on-chain

No hay nada que apretar: tus memorias se anclan on-chain solas, unos 30 segundos después de guardarlas. Para comprobarlo vos mismo, llamá a GET /v1/project/:name/state/anchor — devuelve el state_hash anclado con su transacción y bloque, y no necesita API key. Sellar una memoria para volverla permanentemente inmutable (seal) está disponible por el servidor MCP y por la API REST; la extensión no sella.

Resultado Guardaste una decisión, la recuperaste en una IA diferente, verificaste su hash y creaste una prueba on-chain inmutable. Todo en menos de 5 minutos.

Opción B — Servidor MCP (para Claude / Cursor)

1

Configurar MCP

Agregá el servidor MCP de ChainMemory a tu configuración de Claude Desktop o Cursor. Mirá Configuración MCP para el config completo.

2

Guardar

En Claude, decí: "Recordá: decidimos usar PostgreSQL para la base de datos de usuarios". La herramienta MCP chainmemory_remember se activa automáticamente.

3

Recuperar

En una nueva conversación: "¿Qué base de datos elegimos?". Claude llama a chainmemory_recall y devuelve la decisión almacenada con su cadena de evidencia.

4

Verificar y Probar

Pedí la prueba on-chain: verify_project_state devuelve todas las versiones ancladas con su state_hash, anchor id, transacción y bloque — gratis, y verificable por cualquiera sin tu API key. Para volver una memoria permanentemente inmutable, chainmemory_seal toma el número de memoria y tu ai_id.

Opción C — API REST (control total)

bash
# 1. Guardar una memoria
curl -X POST https://api.chainmemory.ai/v1/memory \
  -H "x-api-key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"summary":"Decidimos usar PostgreSQL para la DB de usuarios","category":"decision","importance":8}'

# 2. Recuperar memorias
curl https://api.chainmemory.ai/v1/memories/list?project=mi-proyecto \
  -H "x-api-key: TU_API_KEY"

# 3. Obtener estado del proyecto (incluye hash)
curl https://api.chainmemory.ai/v1/project/mi-proyecto/state \
  -H "x-api-key: TU_API_KEY"

# 4. Verificar ancla (público — sin autenticación)
curl https://api.chainmemory.ai/v1/project/mi-proyecto/state/anchor

Opción D — Hermes Agent

Hermes Agent es un framework de agentes IA open-source. Usá ChainMemory dentro de Hermes mediante el servidor MCP (herramientas nativas en el chat) o el wrapper cm.py CLI (control total desde terminal).

Configurar MCP

Editá ~/.hermes/config.yaml y agregá:

YAML
mcp_servers:
  chainmemory:
    command: "python"
    args: ["C:\\Users\\<usuario>\\.hermes\\skills\\chainmemory-mcp\\chainmemory_mcp_server.py"]
    env:
      CHAINMEMORY_API_KEY: "aic_..."

Reiniciá Hermes. Las herramientas aparecen como mcp_chainmemory_* en el chat.

O usá cm.py CLI

Instalá el skill de ChainMemory y usá cm save, cm recall, cm state desde terminal.

Verificar

En el chat de Hermes: "Recordá: decidimos usar PostgreSQL". O ejecutá cm whoami en terminal.

Qué sigue Explorá cómo funciona event sourcing, aprendé sobre el modelo de confianza, o entrá en la referencia completa de la API.

CREÁ TU CUENTA

Registro

Las cuentas de ChainMemory se crean a través de la Extensión Chrome. Tu cuenta te da acceso a los tres métodos de integración: Extensión, Servidor MCP, y API REST.

1

Instalá la Extensión

Descargá desde la Chrome Web Store y hacé clic en "Agregar a Chrome".

2

Configurá tu API Key

Hacé clic en el icono de ChainMemory en la barra del navegador. Elegí una de las dos opciones:

  • Generar API Key automáticamente — crea un wallet gratis + 1 token AIC en un clic. Sin email, sin contraseña. Recomendado para usuarios nuevos.
  • Ya tengo una key — pegá tu key aic_... existente para restaurar tu cuenta en este dispositivo.
3

Tu API Key

Tu key está siempre disponible en Configuración → Conexión (hacé clic en "Ver"). Copiala — la necesitás para acceso vía MCP y API.

Guardá tu API Key de forma segura Tu API Key da acceso completo a tus memorias y proyectos. Nunca la compartas en repositorios públicos o código frontend. Guardala en variables de entorno o un gestor de secretos.

Creá tu primer proyecto

Los proyectos agrupan memorias relacionadas. Cada proyecto tiene su propia línea de tiempo, estado consolidado, y ancla on-chain independiente.

1

Vía la Extensión

En el popup de la extensión, hacé clic en "New Project". Ingresá un slug (minúsculas, sin espacios — ej: mi-saas, tesis-ml) y una descripción opcional. Hacé clic en Crear.

2

Vía la API

bash
curl -X POST https://api.chainmemory.ai/v1/projects \
  -H "x-api-key: tu-api-key" \
  -H "Content-Type: application/json" \
  -d '{"name": "mi-saas", "description": "Mi producto SaaS"}'
    
3

Vía MCP

Si tenés el servidor MCP configurado, pedile a tu IA: "Creá un nuevo proyecto de ChainMemory llamado mi-saas". La IA usará la herramienta create_project automáticamente.

Nombres de proyecto Elegí slugs descriptivos y cortos. Los vas a referenciar en cada llamada a la API e interacción MCP. Ejemplos: chainmemory, app-mobile, data-pipeline.

Resumen de credenciales

CredencialDónde encontrarlaSe usa para
API KeySe genera en el primer inicio o se pega manualmenteConexión de la extensión, llamadas a la API REST, configuración del servidor MCP
Slug del proyectoExtensión → ProyectosTodas las operaciones de memoria (guardar, recall, inyectar, seal)
Obtené tokens AIC gratis Visitá faucet.chainmemory.ai para reclamar 1 AIC. Necesitás AIC para anclar tu Project State on-chain. 1 AIC alcanza para cientos de operaciones de anclaje.

ARQUITECTURA

ChainMemory tiene una arquitectura de 3 capas:

Capa 1: Captura

La extensión Chrome, el servidor MCP o llamadas directas a la API capturan contenido de conversaciones con IA. El contenido se procesa, se le asignan tags, y se vincula a un proyecto.

Capa 2: Almacenamiento y Consolidación

Cada memoria se guarda en la base de datos episódica con su hash SHA-256. Un modelo de IA — el cliente, por el servidor MCP o la API — propone operaciones estructuradas de una gramática de 29 ops. El Motor de Consolidación las valida contra sus invariantes y las aplica con un builder determinista: el modelo propone, el motor decide.

Capa 3: Verificación On-Chain

El estado consolidado de cada proyecto se ancla periódicamente en la blockchain ChainMemory (Chain ID 202604). El hash del estado se registra en el contrato ProjectStateAnchor, creando una prueba inmutable de que ese estado existió en ese momento.

Pipeline
Conversación IA
      |
  Extensión / MCP / API
      |
  Memoria (hash SHA-256)
      |
  Motor de Consolidación (builder determinista)
      |
  Project State (decisiones, hitos, riesgos, stack)
      |
  Anchor on-chain (tx hash + block number)
      |
  Verificación pública (/v1/project/:name/state/anchor)

CÓMO SE COMPARA CHAINMEMORY

ChainMemory opera en el espacio emergente de infraestructura de memoria para IA. Así se compara con las principales soluciones en 2026:

Matriz de Comparación

Característica ChainMemory Mem0 Zep / Graphiti Cognee Supermemory Letta
Modelo de almacenamiento BD episódica + anclaje on-chain Vector + Graph (híbrido) Knowledge graph temporal (Neo4j) Graph + Vector + Relacional (poly-store) Vectores semánticos + trazas temporales Jerárquico (core + externo)
Verificación criptográfica ✓ Blockchain soberana ✗ Centralizado ✗ Centralizado ✗ Centralizado ✗ Solo local ✗ Ninguna
Prueba on-chain ✓ Merkle roots + tx hash
Portabilidad cross-modelo ✓ Extensión + MCP + API ~ API + MCP ~ API + MCP ~ Python SDK ~ MCP + API ✗ Atado al framework
Consolidación estructurada ✓ Motor de 6 categorías (decisiones, hitos, riesgos, stack...) ✗ Facts crudos ~ Relaciones en knowledge graph ~ Enriquecimiento por pipeline ✗ Trazas semánticas ~ Resumen manual
Conciencia temporal ✓ Cadena de versiones + timestamps on-chain ~ Básico ✓ Ventanas de validez de hechos ~ Agregado 2025 ~ Trazas con tiempo
Auditoría de decisiones ✓ Cadena de evidencia con refs a memorias ~ Tracking de procedencia
Acceso no-developer ✓ Extensión Chrome (1-click) ✗ Solo developers ✗ Solo developers ✗ Solo developers ~ Extensión de navegador ✗ Solo developers
Identidad IA / atribución ✓ Soulbound Tokens (EIP-5192)
Ideal para Auditoría, compliance, trazabilidad multi-agente Prototipado rápido, personalización de usuario Razonamiento complejo, workflows CRM Pipelines de datos empresariales, RAG Agentes de código, memoria local Investigación, agentes de larga vida

Comparaciones Detalladas

ChainMemory vs. Mem0

Mem0 se enfoca en personalización de usuario — extrae facts de conversaciones para construir perfiles. ChainMemory se enfoca en conocimiento de proyecto — extrae decisiones, hitos y riesgos para construir un estado auditable. Mem0 es ideal para "recordar que el usuario prefiere modo oscuro". ChainMemory es ideal para "probar que esta decisión arquitectónica fue tomada el 15 de mayo por Claude basándose en estas 5 conversaciones".

ChainMemory vs. Zep / Graphiti

El motor Graphiti de Zep es excelente en knowledge graphs temporales — rastreando cuándo un hecho se volvió válido y cuándo fue reemplazado, con búsqueda híbrida (semántica + BM25 + traversal de grafos). ChainMemory provee semántica de supersesión temporal similar pero agrega una capa que Zep no tiene: anclaje on-chain. Cuando necesitás probarle a un regulador o auditor que una decisión existía en un momento específico, ChainMemory da prueba criptográfica. Zep da garantía basada en confianza.

ChainMemory vs. Cognee

Cognee es un potente pipeline de procesamiento de datos — ingesta 30+ fuentes, construye knowledge graphs con tripletas sujeto-relación-objeto, soporta múltiples backends. ChainMemory es más opinado: procesa solo memorias de conversaciones IA, pero extrae inteligencia de proyecto estructurada (6 categorías) en vez de nodos genéricos de knowledge graph.

ChainMemory vs. Supermemory

Supermemory se enfoca en memoria semántica a escala — liviano, rápido, corre local, top-ranked en benchmarks. ChainMemory está optimizado para conocimiento de proyecto estructurado con verificación blockchain. Supermemory es la mejor opción para agentes de código que necesitan recall semántico rápido. ChainMemory es la mejor opción cuando necesitás probar qué decidió una IA y por qué.

Diferenciador clave ChainMemory es la única solución que combina tres capacidades que ninguna otra herramienta tiene juntas: (1) extracción de conocimiento estructurado (motor de consolidación de 6 categorías), (2) portabilidad cross-modelo (Extensión + MCP + API, sin atarse a ningún framework), y (3) verificación criptográfica (blockchain soberana con pruebas Merkle). Otras herramientas guardan memorias. ChainMemory construye conocimiento de proyecto verificable.
No son mutuamente excluyentes ChainMemory puede complementar otras herramientas de memoria. Usá Supermemory o Mem0 para recall rápido en sesión, y ChainMemory para decisiones de proyecto permanentes y auditables.

COSTOS

ChainMemory cobra fees de protocolo en AIC, el token nativo de su red. La regla es simple: leer es siempre gratis, escribir no. Todo lo que produce un registro permanente y verificable cuesta algo, porque ese registro vive en la cadena y se queda ahí.

Cómo conseguir AIC Hay AIC gratis en el faucet. Crear una cuenta y registrar una identidad no cuestan nada.

Tabla de fees

OperaciónFeeNotas
Guardar una memoria0.001 AIC + almacenamiento on-chainel almacenamiento crece con el largo de la memoria — ver más abajo
Inyectar memorias en un chat0.1 AICpor inyección, sin importar cuántas memorias (hasta 50)
Consolidar el estado del proyecto0.05 AIC + 0.005 por operación aplicadalas operaciones rechazadas no se cobran; si el estado no cambia, no se cobra nada
Escribir o revertir un estado directamente0.1 AICrevertir crea una versión nueva idéntica a la restaurada — la historia nunca se muta
Sellar una memoria de forma permanente0.001 AICdespués de sellarla, ya no puede modificarse
Auditar una memoria0.1 AICgratis con dry_run
Auditar el estado de un proyecto5 AICgratis con dry_run — la operación más cara del sistema
Abrir una sesión de rol auditada0.001 AICVerifiable Role Contracts
Todo lo demásgratisleer, buscar, listar, filtrar, etiquetar, archivar, verificación pública, pruebas de anclaje, cotizaciones de precio, crear una cuenta, registrar una identidad
Adónde va el fee Cada fee de protocolo se parte al medio: 50% se quema en una dirección que nadie controla, y 50% va al tesoro del ecosistema. La mitad quemada es irrecuperable por diseño — ni siquiera ChainMemory puede traerla de vuelta. Eso es lo que hace que el suministro sea deflacionario con uso real, y no por anuncio.

Por qué guardar cuesta más cuando la memoria es más larga

Una memoria no sólo se hashea: su contenido cifrado se escribe on-chain. Eso es lo que te permite descifrarla años después desde otro dispositivo, y lo que le permite a un tercero confirmar que el registro no fue alterado. También significa que cada byte es permanente y consume gas de la red.

Medido sobre la red en producción el 5 de agosto de 2026, sobre 16 transacciones reales de entre 4 y 17.231 bytes. El costo total de guardar una memoria es 0.00134 AIC + 0.00000071 AIC por byte de texto. Eso ya incluye el fee de protocolo de 0.001, el gas de las dos transferencias del fee y el gas de la escritura on-chain. Vale al precio de gas actual de la red, 1 gwei; si ese precio cambia, la parte de gas escala con él.

Largo del textoTotal medido
1.000 bytes0.0020 AIC
2.000 bytes0.0028 AIC
5.000 bytes0.0049 AIC
8.000 bytes0.0070 AIC
17.000 bytes0.0134 AIC
19.972 bytes — el techo0.0155 AIC

ChainMemory no impone ningún límite de caracteres. El único techo es técnico: una memoria tiene que entrar en una sola transacción de red. Ese límite es de 20.000 bytes de contenido cifrado. El cifrado agrega exactamente 28 bytes (un IV de 12 y un tag de autenticación de 16), así que el techo real es de 19.972 bytes de texto — unos 19.972 caracteres en ASCII simple, y menos cuando el texto lleva acentos o emoji, porque cada uno ocupa de 2 a 4 bytes.

Extensión Chrome, desde la v3.1.3 La extensión muestra el costo estimado en el botón de Guardar antes de que hagas clic, confirma el tamaño real después, y te avisa cuando una respuesta supera lo que entra en una transacción en vez de cortarla. Las versiones hasta la 3.1.2 guardaban solamente los primeros 1.500 caracteres de una respuesta. Si estás en 3.1.2 o anterior, actualizá.

Ver el precio antes de pagar

Dos operaciones te dejan ver el costo exacto primero, sin cargo:

TOOL quote_inject

Qué ids de memoria existen y cuáles no, total de caracteres, tokens estimados, el costo exacto en AIC con su reparto entre quema y tesoro, y si tu saldo alcanza. Gratis.

TOOL audit_memory · audit_state

Pasando dry_run: true las dos devuelven el resultado completo de la auditoría sin cobrar. Pagás sólo cuando necesitás la auditoría como constancia.

Planes

Los fees de protocolo son independientes de tu plan: una cuenta Free y una Enterprise pagan el mismo AIC por operación. Lo que cambia el plan es el volumen — cuántas memorias, inyecciones y proyectos podés tener — y las funciones de organización: control de acceso por roles, claves de miembro y de proyecto, y pista de auditoría.

Los planes y sus límites están en chainmemory.ai. Los planes pagos incluyen además una asignación mensual de AIC.

Los fees se cobran en la red, no los cobramos nosotros Cuando una operación es paga, el AIC se mueve on-chain: mitad se quema, mitad llega al tesoro. Esa transacción es pública e irreversible. No es un cargo a una tarjeta que se pueda revertir después — que es exactamente por qué cada operación paga muestra su costo antes, y por qué auditar tiene una corrida de prueba gratuita.

CONCEPTOS

El modelo Event-Sourcing

ChainMemory sigue una arquitectura event-sourcing. Entender este patrón es clave para entender todo el sistema.

En sistemas tradicionales, guardás el estado actual y lo sobreescribís en cada cambio. En event-sourcing, guardás cada cambio como un evento inmutable, y el estado actual se deriva reproduciendo esos eventos.

En ChainMemory:

  • Las memorias son eventos — Cada memoria es un registro inmutable de algo que pasó: se tomó una decisión, se identificó un riesgo, se eligió una tecnología, se alcanzó un hito.
  • El Project State es una vista materializada — El Motor de Consolidación procesa todos los eventos-memoria y produce un snapshot estructurado: el Project State. No se almacena directamente — se computa desde el log de eventos.
  • El anclaje es la prueba de existencia — Cuando un Project State se ancla on-chain, la blockchain certifica que esta vista materializada específica existía en ese block height exacto.
Patrón
Memoria #1 (evento) ─┐
Memoria #2 (evento) ─┤
Memoria #3 (evento) ─┼──→ Motor de Consolidación ──→ Project State v1 ──→ Anchor (bloque 120000)
Memoria #4 (evento) ─┤
Memoria #5 (evento) ─┘

Memoria #6 (evento) ─┐
Memoria #7 (evento) ─┼──→ Motor de Consolidación ──→ Project State v2 ──→ Anchor (bloque 123539)
Memoria #8 (evento) ─┘

Esto significa que siempre podés reconstruir cualquier versión del Project State reproduciendo las memorias hasta ese punto. El log de eventos es la fuente de verdad. El estado es una capa de conveniencia. El anchor es la prueba.

Por qué importa Event-sourcing garantiza trazabilidad completa. Cada decisión en tu Project State se puede rastrear hasta la conversación específica donde se originó. Nada se pierde, nada se sobreescribe, y el historial siempre está disponible.

Qué es una memoria

Una memoria es la unidad fundamental de ChainMemory. Es un fragmento de información extraído de una conversación con IA que se considera valioso para el futuro del proyecto.

Cada memoria contiene:

  • Contenido — El texto de la conversación o nota
  • Hash — SHA-256 del contenido, inmutable
  • Proyecto — A qué proyecto pertenece
  • Tags — Etiquetas libres para organización (decisión, bug, arquitectura, idea, etc.). Los tags son para tu uso — el Motor de Consolidación usa su propia estructura de 6 categorías (ver Project State)
  • Número — Secuencial dentro de tu cuenta (#1, #2...)
  • Fuente — Desde dónde se guardó (extensión, MCP, API)
  • Timestamp — Momento exacto de creación

Proyectos

Un proyecto agrupa memorias relacionadas. Cada proyecto tiene su propia línea de tiempo, estado consolidado, y ancla on-chain independiente.

Ejemplos de proyectos: mi-saas, tesis-ml, chainmemory, app-mobile.

Project State

El Project State es el resultado del Motor de Consolidación: un modelo de IA analiza todas las memorias del proyecto y extrae información estructurada. Es el corazón de ChainMemory — transforma fragmentos de conversación en una base de conocimiento organizada y auditable.

Las 6 Categorías

CategoríaQué capturaEjemplo
contextResumen, objetivos y alcance del proyecto"Plataforma e-commerce para artesanos, objetivo 10K usuarios en Q3"
decisionsElecciones arquitectónicas y estratégicas con estado (active/superseded/evaluating)"Usar Stripe para pagos" (active, evidence: #12, #45)
milestonesEntregables y checkpoints (completed/pending) con fechas"Schema de BD completo" (completed, 2026-05-15)
risksAmenazas identificadas con severidad (low/medium/high/critical)"Performance de RLS a escala" (medium, evidence: #15)
stackTecnologías, frameworks, herramientas e infraestructura{name: "PostgreSQL", role: "primary-db", version: "16"}
dependenciesServicios externos, APIs y relaciones de equipo{name: "Stripe API", type: "payment-provider", critical: true}

Ciclo de Vida del Estado

El estado es incremental: cada consolidación parte de la versión anterior y aplica solo las operaciones nuevas. Esto crea una cadena de versiones con integridad completa:

Cadena de versiones
v1 (3 memorias)  ──hash──▶  v2 (8 memorias)  ──hash──▶  v3 (15 memorias)
     │                           │                           │
     └─ anclado bloque 80,467   └─ anclado bloque 81,102   └─ anclado bloque 82,340

Cada versión contiene:

  • state_hash — SHA3-256 del estado canónico, con separador de dominio CM_PROJECT_STATE_V<schema_version>, enlazado a la versión anterior
  • version — Número secuencial (v1, v2, v3...)
  • previous_hash — Hash de la versión anterior (null para v1)
  • operations — Qué cambió: adiciones, actualizaciones, supersesiones
  • anchor_tx — Hash de transacción on-chain (una vez sellado)

Ejemplo Real: Project State Completo

JSON — Project State v4
{
  "project_id": "payment-system-v2",
  "version": 4,
  "state_hash": "a3f8c2...e91d",
  "previous_hash": "7b2e1a...f4c0",
  "context": {
    "summary": "Sistema de pagos con aislamiento multi-tenant y detección de fraude",
    "goals": ["Procesar 1000 tx/seg", "Cumplimiento PCI DSS Level 1", "Latencia sub-200ms"]
  },
  "decisions": [
    {
      "id": "d001", "title": "Usar Stripe para procesamiento de pagos",
      "status": "active", "evidence": ["#12", "#45", "#67"],
      "rationale": "Mejor documentación de API, confiabilidad de webhooks, PCI compliance integrado"
    },
    {
      "id": "d002", "title": "PostgreSQL con RLS para multi-tenancy",
      "status": "active", "evidence": ["#15", "#23"]
    },
    {
      "id": "d003", "title": "Usar MySQL para multi-tenancy",
      "status": "superseded", "superseded_by": "d002", "evidence": ["#8"]
    }
  ],
  "milestones": [
    {"id": "m001", "title": "Schema de BD", "status": "completed", "date": "2026-05-15"},
    {"id": "m002", "title": "Integración de pagos", "status": "pending"}
  ],
  "risks": [
    {"id": "r001", "title": "Performance de RLS con 100K tenants", "severity": "medium"}
  ],
  "stack": [
    {"name": "Node.js", "version": "22", "role": "runtime"},
    {"name": "PostgreSQL", "version": "16", "role": "primary-db"},
    {"name": "Redis", "version": "7", "role": "cache"}
  ],
  "dependencies": [
    {"name": "Stripe API", "type": "external", "critical": true}
  ]
}

Operaciones del Motor de Consolidación

  • ADD — Nueva decisión, hito, riesgo o entrada de stack detectada en el contenido de la memoria
  • UPDATE — Entrada existente recibe nueva evidencia, estado actualizado o detalles enriquecidos
  • SUPERSEDE — Una decisión es reemplazada por una más nueva (ambas preservadas en el historial)
  • COMPLETE — Un hito pasa de pendiente a completado con fecha
  • ESCALATE — La severidad de un riesgo aumenta basándose en nueva evidencia

Mejores Prácticas

  • Guardá decisiones explícitamente — "Decidimos usar X porque Y" se consolida mejor que "tal vez deberíamos probar X"
  • Incluí la justificación — El motor extrae el razonamiento del contenido. Cuanto más contexto des, más rico será el estado
  • Consolidá regularmente — cada consolidación crea una versión nueva del estado, que después se ancla on-chain. seal es otra operación: vuelve permanentemente inmutable una memoria
  • Revisá decisiones reemplazadas — Cuentan la historia de cómo evolucionó tu proyecto. No las ignores
Tags vs. categorías Los tags de las memorias (configurados vía API/Extensión/MCP) son libres — podés usar cualquier etiqueta. Las 6 categorías de arriba pertenecen al Motor de Consolidación, que analiza semánticamente el contenido de las memorias para clasificarlas automáticamente. Una memoria con tag "bug" podría contribuir a la categoría risks; una con tag "arquitectura" podría alimentar decisions y stack. Los tags te ayudan a vos a organizar; las categorías ayudan al motor a estructurar.
Estado multi-agente Cuando múltiples agentes contribuyen al mismo proyecto, el Motor de Consolidación fusiona todas las contribuciones en un único estado unificado. El array de evidencia de cada entrada muestra qué agente contribuyó vía atribución de memorias. Ver Sistemas Multi-Agente para detalles.

Cadena de evidencia

Cada decisión, hito y riesgo en el Project State lleva un campo evidence — un array de referencias a memorias que justifican su existencia.

JSON
{
  "id": "d001",
  "title": "Usar consenso Clique PoA",
  "statement": "Blockchain soberana usa Proof of Authority para anclaje rápido y económico",
  "status": "vigente",
  "evidence": ["#12", "#45", "#67"]
}

Esto crea una cadena de procedencia completa:

  • La decisión d001 existe porque las memorias #12, #45 y #67 la respaldan
  • Cada memoria tiene un hash SHA-256 que prueba que su contenido no cambió
  • El Project State que contiene esta decisión tiene un state_hash anclado on-chain
  • El ancla on-chain tiene un tx_hash y block number que prueban cuándo se registró

Desde una sola decisión, podés rastrear el camino completo: decisión → memorias de respaldo → hashes de contenido → hash del estado → prueba on-chain. Esto es lo que hace que las decisiones de ChainMemory sean auditables e inalterables.

Reconstruir una decisión Para verificar cualquier decisión: (1) obtené el Project State, (2) mirá el array de evidence, (3) recuperá cada memoria referenciada, (4) verificá que los hashes coincidan, (5) chequeá el ancla on-chain. Toda la cadena es verificable independientemente.

Resolución de conflictos

Cuando dos memorias contienen información contradictoria, el Motor de Consolidación aplica una estrategia de resolución determinística:

Precedencia temporal

La memoria más reciente tiene prioridad. Si la Memoria #20 dice "Usaremos PostgreSQL" y la Memoria #40 dice "Cambiamos a ClickHouse", el motor marca la decisión de PostgreSQL como reemplazada y crea una nueva decisión activa para ClickHouse.

Supersesión explícita

El motor detecta patrones de lenguaje que indican cambio de dirección: "en vez de", "reemplazando", "decidimos cambiar", "ya no usamos". Cuando se detecta, la decisión anterior se marca explícitamente como reemplazada con referencia a la nueva.

Ciclo de vida de estados

Flujo de estados
vigente ──→ reemplazada    (sustituida por una decisión más nueva)
vigente ──→ en evaluación  (bajo revisión, aún no confirmada)
en evaluación ──→ vigente  (confirmada tras evaluación)
en evaluación ──→ rechazada (descartada)

Acumulación de evidencia

Cuando múltiples memorias refuerzan la misma decisión, el motor las agrega al array de evidencia en lugar de crear duplicados. Una decisión con evidencia de 5 memorias es más sólida que una con una sola referencia.

Sin pérdida de datos Las decisiones reemplazadas nunca se eliminan. Permanecen en el Project State con su estado cambiado, preservando el historial completo de cómo evolucionó la dirección del proyecto. Siempre podés ver qué se decidió antes y por qué cambió.

Gobernanza del estado

El ciclo de vida del Project State está gobernado por reglas claras:

Quién puede consolidar?

Solo el dueño del proyecto (la cuenta que lo creó) puede disparar una consolidación. Esto asegura que la extracción de conocimiento estructurado siempre esté controlada por el dueño de los datos.

Cuándo ocurre la consolidación?

  • La dispara el cliente — un modelo de IA propone operaciones vía update_project_state (MCP) o POST /v1/project/:name/state/ops (API). El servidor las valida y recién entonces se vuelven estado
  • No hay disparador automático — la consolidación nunca ocurre sola. Nada se escribe en tu estado si un cliente no lo propone

Se puede revertir?

Cada consolidación crea una nueva versión (v1, v2, v3...). Las versiones anteriores siguen accesibles. No podés borrar una versión, pero siempre podés consolidar de nuevo para producir un estado corregido. La cadena de versiones es append-only.

Snapshots

Cada versión del Project State es un snapshot. La combinación de número de versión + state_hash + ancla on-chain crea un checkpoint verificable. Podés obtener cualquier versión histórica vía GET /v1/project/:name/state?version=2.

AcciónQuiénCuándoReversible
ConsolidarDueño del proyectoSolo cuando un cliente propone operacionesSe crea nueva versión (append-only)
Anclar on-chainDueño del proyectoDespués de consolidaciónInmutable una vez anclado
Archivar memoriaDueño del proyectoCualquier momentoSe puede desarchivar
Ver cualquier versiónCualquiera (endpoint público)Cualquier momentoN/A (solo lectura)

Hash y verificación

Cada memoria genera un hash SHA-256 de su contenido. Este hash es la huella digital única e inmutable de esa memoria. El contenido no se puede modificar sin cambiar el hash.

El state hash es un hash del estado consolidado completo (todas las decisiones, hitos, riesgos, etc.). Este state hash se ancla en la blockchain mediante una transacción en el contrato ProjectStateAnchor.

Verificación pública

La verificación en ChainMemory es pública y sin permisos. Cualquier persona puede:

  1. Llamar a GET /v1/project/:name/state/anchor (no requiere API key)
  2. Obtener el state_hash y el tx_hash de la transacción
  3. Verificar en el explorer que la transacción existe
  4. Leer el contrato directamente en la blockchain para confirmar que el hash coincide

Esto demuestra que el estado del proyecto existía exactamente así en el momento del anclaje. No se puede falsificar retroactivamente.

Modelo de privacidad

Una preocupación común con sistemas basados en blockchain es la exposición de datos. ChainMemory aborda esto con una separación estricta:

Principio crítico El texto plano de una memoria nunca va on-chain. Lo que se escribe on-chain es su texto cifrado AES-256-GCM junto con los hashes de estado — y sin la llave del dueño nada de eso se puede leer.

Qué se guarda dónde

DatoUbicaciónAcceso
Contenido de memoriaBase de datos encriptada (off-chain) y texto cifrado AES-256-GCM on-chainTexto plano: solo el dueño. Texto cifrado: público pero ilegible sin la llave
Hash de memoria (SHA-256)Base de datos + opcionalmente on-chainEl hash es público pero no revela nada del contenido
Project State (estructurado)Base de datos (off-chain)Solo el dueño
State hashBlockchain (on-chain)Público — esta es la prueba verificable
Metadata del anchor (tx, bloque)Blockchain (on-chain)Público

Un ancla de estado contiene solo el identificador del proyecto hasheado, el número de versión, el hash del estado y un timestamp. Una transacción de memoria lleva además el contenido cifrado más su categoría, importancia y largo del texto plano. Desde cualquiera de las dos es imposible reconstruir el contenido sin la llave del dueño.

Este diseño significa que ChainMemory puede proveer verificación criptográfica sin comprometer la privacidad. La blockchain prueba que un estado existió, no qué contenía.

EXTENSIÓN CHROME

Instalación

  1. Ir a la Chrome Web Store
  2. Click en "Agregar a Chrome"
  3. El icono de ChainMemory aparece en la barra de extensiones
  4. Click en el icono y elegí cómo empezar: "Generate API Key automatically" (gratis, recomendado) o "I already have a key" para pegar una existente
  5. Reclamá AIC gratis en el faucet para poder guardar e inyectar
No hay recuperación de clave Si generás una clave automáticamente, guardala en un gestor de contraseñas en ese momento. La clave es tu identidad y tu acceso a tus memorias. Nadie puede restaurártela — nosotros tampoco.
Versión actual v3.1.3 — elimina el límite de caracteres al guardar, muestra el costo de cada guardado antes de confirmarlo, y corrige el fee de inyección que se le informaba al usuario. Ver Changelog para el historial completo.

Guardar memorias

Desde cualquier chat de IA soportado, la extensión agrega un botón "Save to ChainMemory" a las respuestas del modelo. Un clic extrae el texto de esa respuesta y lo guarda como memoria.

Lo que cuesta, antes de hacer clic

Pasando el mouse sobre el botón, muestra el largo de la respuesta y el costo estimado — por ejemplo Save · 0.0074 AIC. Después de guardar, la confirmación dice cuántos caracteres se almacenaron y cuánto se cobró. Guardar cuesta un fee de protocolo de 0.001 AIC más el almacenamiento on-chain, que crece con el largo; ver Costos.

Las respuestas se guardan completas. El techo es lo que entra en una transacción de red: 20.000 bytes de contenido cifrado. Eso equivale a unos 20.000 caracteres en texto ASCII simple, pero a menos cuando el texto lleva acentos o emoji, porque cada uno ocupa de 2 a 4 bytes. Si una respuesta no entra, la extensión te avisa en vez de cortarla en silencio.

Rescatar tu historial

No tenés que empezar de cero. Abrí una conversación pasada en ChatGPT, Claude o Gemini, scrolleá para que carguen los mensajes viejos, y el botón "Save to ChainMemory" aparece en cada respuesta igual que en un chat en vivo. El conocimiento que acumulaste antes de instalar ChainMemory se vuelve memoria portable desde el primer día.

En Perplexity, sólo la última respuesta Perplexity re-renderiza su página continuamente, así que la extensión mantiene un único botón de Guardar al final de la conversación en vez de uno por respuesta. Guardar respuestas anteriores ahí todavía no está soportado. El guardado masivo de conversaciones pasadas, en todas las plataformas, está en desarrollo.

Organizar lo que guardaste

El popup de la extensión no guarda memorias — las organiza. Desde ahí podés filtrar por proyecto, agregar o quitar tags en memorias individuales, etiquetar varias a la vez, y archivar lo que ya no querés ver. Las memorias archivadas siguen en el registro y siguen siendo verificables; simplemente dejan de aparecer en listados e inyecciones.

Cada memoria guardada recibe:

  • Huella criptográfica — SHA-256 de su texto, sin separador de dominio, única de su contenido. No confundir con el hash del Project State, que sí es SHA3-256 con separador de dominio CM_PROJECT_STATE_V<schema_version>
  • Número secuencial dentro de tu cuenta (#1, #2, #3...) — tu propia numeración, no una global
  • Tags para organización, asignados por vos o por coincidencia automática con las palabras clave de tus proyectos
  • Categoría (decisión, aprendizaje, milestone, error, estado, interacción, o custom — el valor por defecto si no mandás ninguno)
  • Timestamp del momento de guardado
  • Anclaje on-chain, dentro de unos 30 segundos

Inyectar contexto

Antes de empezar una conversación con cualquier IA, ChainMemory puede inyectar el contexto que elijas en el campo de texto del chat, para que la conversación nueva arranque con lo que las anteriores dejaron establecido.

Cómo funciona

  1. Click en el botón flotante "Inject memory" en cualquier plataforma soportada
  2. El panel lista tus memorias, filtrables por proyecto, con una estimación de tokens en cada una
  3. Seleccionás las que querés y confirmás
  4. El texto se inserta al principio del campo del chat. Si el campo de la plataforma no puede detectarse — raro, y pasa cuando una plataforma cambia su HTML — el texto se copia al portapapeles

La inyección es optimista: el texto llega enseguida y el pago on-chain se confirma en segundo plano. Cuesta 0.1 AIC por inyección, sin importar cuántas memorias hayas seleccionado, hasta 50. Si tu saldo no alcanza, el panel te ofrece cargar en el faucet antes de cobrarte.

Cotizala primero Desde el servidor MCP o la API podés llamar a quote_inject para ver el costo exacto, qué ids existen y si tu saldo alcanza — sin cargo — antes de pagar la inyección.

Project State desde la extensión

Un clic inyecta el estado consolidado de tu proyecto en el chat: no una pila de memorias, sino la vista estructurada que se construyó con ellas. Lo que viaja es lo que está vigente:

  • Visión, fase y foco actual — hacia dónde va el proyecto y en qué está trabajando ahora
  • Decisiones vigentes — las superseded se omiten, con un contador para que sepas que existen
  • Riesgos abiertos con su severidad — los cerrados no se inyectan
  • Prioridades activas, ordenadas por score
  • Constraints y vocabulario clave del proyecto
  • Su anclaje on-chain — bloque, transacción y un state_hash abreviado, para que el modelo reciba la prueba junto con el contenido

El estado inyectado tiene un tope de 7.000 caracteres para que entre en el campo de texto de todas las plataformas soportadas, e inyectarlo es gratis. La historia completa — decisiones superseded, riesgos cerrados, milestones, métricas — queda en el Project State y viaja por el servidor MCP o la API.

La extensión lee el estado; no lo construye Consolidar memorias en un Project State lo hace un modelo de IA a través del servidor MCP o la API — es la arquitectura "el cliente consolida, la cadena verifica". Desde la extensión podés inyectar un estado existente, no crear uno. El nombre del proyecto se configura en Settings → Project Brain; no hay uno por defecto.

Plataformas soportadas

La extensión inyecta sus botones en estas cuatro plataformas:

  • ChatGPT — chatgpt.com y chat.openai.com
  • Claude — claude.ai
  • Gemini — gemini.google.com
  • Perplexity — perplexity.ai (guardado limitado a la última respuesta)
Otros clientes, por el servidor MCP La extensión es una de las tres formas de acceso, y cubre los chats web. Cualquier cliente compatible con MCP llega a la misma cuenta y a las mismas memorias sin la extensión: Claude Desktop, Cursor, Hermes Agent y OpenClaw, entre otros. Ver Servidor MCP.

Permisos que pide la extensión, y para qué:

PermisoPara qué es
storageguardar tu API key y tus preferencias
clipboardWritealternativa cuando el campo de texto de una plataforma no puede detectarse
acceso a las cuatro plataformasinsertar el botón de Guardar y el panel de memorias en la página
acceso a chainmemory.ai, api.chainmemory.ai, faucet.chainmemory.aihablar con la API y abrir el faucet

Sin analytics, sin telemetría, sin publicidad. Tu API key se guarda en chrome.storage.sync, que Chrome sincroniza entre los navegadores donde iniciaste sesión con tu cuenta de Google.

SERVIDOR MCP

Configuración

El servidor MCP le permite a Claude Desktop, Cursor, Windsurf, Hermes Agent, OpenClaw y cualquier cliente compatible con MCP usar ChainMemory como herramienta nativa.

Instalación

Agregá esta configuración a tu claude_desktop_config.json:

JSON
{
  "mcpServers": {
    "chainmemory": {
      "command": "npx",
      "args": ["-y", "chainmemory-mcp"],
      "env": {
        "CHAINMEMORY_API_KEY": "tu-api-key"
      }
    }
  }
}

Reiniciá el cliente después. Publicar una versión nueva en npm no actualiza a los clientes que ya están corriendo: el paquete se descarga cuando el cliente arranca.

Conseguir tu API Key En la extensión Chrome, click en "View key" para ver y copiar la clave completa. La pestaña Settings la muestra abreviada, sólo para identificarla.
Servicio externo ChainMemory es un protocolo independiente. No es parte de Claude, ChatGPT, Cursor ni de ningún proveedor de IA. Cualquier cliente compatible con MCP se conecta con una API key. Tus memorias son tuyas, no del proveedor de IA.

Herramientas disponibles

La versión actual expone 34 herramientas. Leer es gratis; las operaciones que cuestan AIC están marcadas. Ver Costos para la tabla completa.

Memoria

HerramientaQué haceCosto
chainmemory_rememberGuarda una memoria vinculada a un proyecto, con tags, categoría e importancia (1–10)0.001 AIC + almacenamiento
chainmemory_recallDevuelve tus memorias más recientes, de la más nueva a la más vieja. No busca: lista. Devuelve vistas previas de 80 caracteresgratis
search_memoriesBúsqueda semántica sobre tus memorias, devolviendo el texto completo de cada coincidenciagratis
get_memoryLee una memoria completa, descifrada desde la cadena, con verificación de integridad contra su hash ancladogratis
list_memories_filteredLista memorias por proyecto y estado de archivado. Devuelve vistas previas de 80 caracteresgratis
update_memory_tagsReemplaza los tags de una memoriagratis
archive_memory · unarchive_memoryOculta una memoria de listados e inyecciones, o la restaura. En los dos casos sigue en el registrogratis
chainmemory_sealSella una memoria de forma permanente on-chain para que ya no pueda modificarse. Requiere clave de wallet0.001 AIC

Verificación

HerramientaQué haceCosto
get_memory_proofLa prueba de anclaje compartible de una memoria: su event_hash y sus coordenadas on-chain. Un tercero la verifica sin tu API key, y el contenido nunca se exponegratis
verify_project_statePrueba pública y sin autenticación de un Project State: cada versión anclada con su state_hash, id de ancla, transacción y bloque, más cómo verificarlo vos mismo en el contratogratis
audit_memoryAuditoría forense de una memoria: recomputa su hash desde el contenido guardado y lo compara contra el anclado0.1 AIC — gratis con dry_run
audit_stateAuditoría completa de un Project State: recomputa el state_hash con el motor determinista y devuelve el ancla más el historial de versiones5 AIC — gratis con dry_run

Project State

HerramientaQué haceCosto
get_project_stateEl estado consolidado: visión, fase, foco actual, decisiones, riesgos, supuestos, preguntas abiertas, prioridades, constraints, métricas, vocabulario y entorno de trabajo — más su state_hash y su ancla on-chain. Con include_roles: false omite el texto de los contratos de rolgratis
update_project_statePropone operaciones de la gramática de 29 ops. El servidor valida, las aplica con el builder determinista, recomputa el hash y persiste0.05 AIC + 0.005 por op aplicada

Verifiable Role Contracts

HerramientaQué haceCosto
list_role_contractsLista los roles definidos en un proyecto con su versión y estado. Llamala primero: los ids de rol no se adivinangratis
get_role_contractLee el contrato de un rol: propósito, reglas con sus checks y severidad, protocolo de trabajo. Acepta version para auditar uno anteriorgratis
assume_roleAbre una sesión de rol auditada bajo un contrato activo. Fija el hash del contrato y el state_hash del Brain, y entrega el entorno de trabajo declarado por el dueño0.001 AIC
release_roleCierra una sesión con un resumen de lo hecho y lo pendiente. Las sesiones se auto-liberan a los 60 minutosgratis
list_role_sessions · get_role_sessionEl rastro de auditoría: quién asumió qué rol, cuándo, cómo cerró, y a qué hashes quedó atada la sesióngratis

Inyección

HerramientaQué haceCosto
quote_injectCotiza una inyección antes de pagarla: qué ids existen y cuáles no, total de caracteres, costo exacto con su reparto, y si tu saldo alcanzagratis
inject_memoriesInyecta hasta 50 memorias en la conversación actual. Optimista: el texto vuelve enseguida y el pago se confirma en segundo plano0.1 AIC por llamada
get_inject_balance · get_inject_historyTu saldo de AIC y para cuántas inyecciones alcanza; el historial de inyecciones con su costogratis
get_my_contextTu memoria reciente como contexto portable listo para inyectar, entre todas las plataformasgratis

Proyectos e identidad

HerramientaQué haceCosto
list_projects · create_project · delete_projectGestión de tus proyectos y sus palabras clave de auto-etiquetadogratis
list_project_templates · add_project_from_templatePlantillas incluidas: general, development, blockchain, business, personal, researchgratis
chainmemory_registerRegistra una identidad de IA en la cadena. Necesario una vez antes de escribir memoriasgratis
chainmemory_profile · chainmemory_statsEl perfil de tu identidad y las estadísticas de la redgratis

Consolidación autónoma

Cualquier cliente de IA puede consolidar el estado del proyecto de forma autónoma con update_project_state. Ésta es la arquitectura "el cliente consolida, la cadena verifica": el modelo propone, el servidor valida, y recién ahí se convierte en estado.

1

Leer el estado actual

Llamar a get_project_state para cargar el estado consolidado y su marca de agua consolidated_until_event.

2

Analizar lo nuevo

Con list_memories_filtered o search_memories, leer las memorias creadas después de la marca de agua para identificar qué cambió.

3

Proponer las operaciones

Armar un array de operaciones de la gramática de 29 ops y enviarlo por update_project_state.

4

El servidor valida y persiste

Cada operación se valida contra la gramática, se aplica con el builder determinista, se computa el nuevo state_hash (SHA3-256), se vincula la evidencia con árboles Merkle, y se persiste la versión. Las operaciones inválidas se rechazan individualmente — las válidas se aplican igual.

Gramática de operaciones (29 ops)

Cada operación tiene un tipo (op) y sus propios argumentos. Usá evidence_memory_ids — un array de números de memoria — para vincular la evidencia que la respalda; el servidor resuelve los event hashes automáticamente.

OperaciónCampos requeridosDescripción
add_decisiontitle, statementRegistra una decisión. Sin status se crea como proposed
set_decision_statusid, toCambia el estado (proposed / confirmed / superseded)
supersede_decisionid, by_idMarca una decisión como reemplazada por otra
add_milestonetitleRegistra un milestone
set_milestone_statusid, toActualiza su estado
add_risktitle, severityDocumenta un riesgo
set_risk_statusid, toCambia su estado (open / closed)
add_assumptionstatementRegistra un supuesto
invalidate_assumptionidMarca un supuesto como inválido
add_open_questionquestionRegistra una pregunta abierta
answer_open_questionid, answerLa responde
add_prioritytitle, priority_scoreAgrega un ítem priorizado
set_priority_statusid, toCambia su estado (active / done)
reorder_priorityid, priority_scoreCambia su score
set_focusvalueActualiza el foco actual
set_phasevalueActualiza la fase del proyecto
set_visionstatementActualiza la visión
add_vocabulary · update_vocabularyterm, definitionDefine o redefine un término
add_constraintstatementAgrega una restricción
remove_constraintidQuita una restricción
set_metricname, valueFija o actualiza una métrica. No acepta evidence_memory_ids
add_env_host · add_env_service · add_env_repo · add_env_rulevarían según el tipoDescriben dónde y cómo trabaja el dueño: hosts, servicios, repositorios y reglas operativas
set_env_status · verify_env · supersede_envidActualizan, confirman como vigente, o retiran un ítem del entorno
Los nombres de campo son exactos La causa más común de rechazo es un nombre de argumento equivocado. set_metric usa name, no key. supersede_decision usa by_id, no superseded_by. Y set_metric rechaza evidence_memory_ids, que el resto de las operaciones aditivas sí acepta. Como el fee tiene una base fija por llamada, mandar todo en una sola llamada sale más barato que descubrir firmas de a una.
Entorno: topología, nunca credenciales Las siete operaciones *_env_* describen dónde trabaja el dueño para que una IA lo sepa desde su primer mensaje. Guardan sólo topología: hosts, puertos, rutas, reglas. El servidor rechaza credenciales, claves y contraseñas.

Ejemplo

JSON — llamada a update_project_state
{
  "project": "mi-proyecto",
  "ops": [
    {
      "op": "add_decision",
      "title": "Migrar a PostgreSQL",
      "statement": "SQLite no soporta escrituras concurrentes a la escala actual",
      "evidence_memory_ids": [142, 145]
    },
    {
      "op": "set_metric",
      "name": "db_migration_status",
      "value": "planning"
    },
    {
      "op": "add_milestone",
      "title": "Migración a PostgreSQL aprobada por el equipo",
      "status": "done",
      "evidence_memory_ids": [145]
    }
  ],
  "consolidated_until_event": 150
}
Procesamiento resiliente Las operaciones se aplican de a una. Si una falla la validación, se rechaza y el resto se aplica igual. La respuesta incluye applied_count y el detalle de cada rechazo. Sólo se cobran las operaciones aplicadas, y si el estado resultante es idéntico al anterior, no se cobra nada.

Flujo de trabajo

El flujo típico con MCP:

1

Inicio de sesión

Pedile a tu IA que cargue el contexto del proyecto. Llama a get_project_state y arranca sabiendo en qué estás trabajando. Nada se inyecta solo: el modelo decide cuándo usar las herramientas.

2

Trabajo normal

Trabajás con tu IA como siempre. Cuando pasa algo importante — una decisión, un descubrimiento, un cambio de arquitectura — guarda la memoria con chainmemory_remember.

3

Consolidación

Al final, la IA propone operaciones con update_project_state: qué se decidió, qué riesgo se abrió, qué prioridad cambió. Eso es lo que convierte una pila de conversaciones en estado.

4

Continuidad

En la sesión siguiente, en este modelo o en cualquier otro, el estado consolidado ya está. No se pierde nada en el medio.

Flujos avanzados

Claude Desktop — sesiones de arquitectura

Claude es muy bueno en diseño de alto nivel. Usá ChainMemory para preservar las decisiones de arquitectura entre sesiones:

Patrón de prompt — Claude Desktop
"Antes de empezar, cargá el estado de mi proyecto desde ChainMemory.
Después diseñemos el sistema de autenticación.

Cuando decidamos, guardá las decisiones clave con tags 'architecture'
y 'auth'. Usá importancia 9 para todo lo que afecte a otros
miembros del equipo, y después propone las operaciones para
consolidar el estado."

Claude lee el estado con get_project_state, trabaja con vos en el diseño, guarda las decisiones con chainmemory_remember, y propone la consolidación con update_project_state. En la sesión siguiente, la arquitectura de auth ya es parte del estado.

Cursor — código con memoria

La integración MCP de Cursor le permite a tu IA de código recordar por qué el código se escribió de cierta manera. La configuración es la misma que para Claude Desktop, en settings.json.

Un flujo efectivo:

  • Inicio de sesión — "Cargá el estado del proyecto": decisiones vigentes, riesgos abiertos y prioridades
  • Durante el desarrollo — "Guardá: implementé el handler de webhooks con reintentos, 3 intentos con backoff exponencial"
  • Corrección de bugs — "Guardá: arreglé la race condition en el procesamiento de pagos — el webhook de Stripe llegaba antes de que la transacción de DB commiteara"
  • Fin de sesión — "Consolidá lo que cambió hoy", que propone las operaciones y actualiza el estado

Patrón de memoria agéntica

El patrón más potente de MCP es la memoria agéntica, donde la IA gestiona su propio conocimiento:

System prompt para memoria agéntica
Tenés acceso a ChainMemory por MCP. Seguí estas reglas:

1. Al inicio de sesión: llamá a get_project_state para cargar el
   estado consolidado del proyecto.
2. Cuando tomes una decisión significativa: guardala con
   chainmemory_remember.
   - Incluí POR QUÉ elegiste ese camino
   - Etiquetala con el dominio relevante
   - Importancia 1-10: usá 7 o más para decisiones, 5 para
     observaciones
3. Cuando completes un milestone: guardalo y decí qué sigue.
4. Cuando identifiques un riesgo: guardalo con su severidad.
5. Al cerrar la sesión: proponé la consolidación con
   update_project_state. No cierres ni supersedas ítems
   existentes sin aprobación del dueño: agregá en estado
   propuesto y dejá que un humano confirme.
Traspaso entre herramientas El mismo proyecto de ChainMemory funciona en Claude, Cursor, Windsurf, Hermes Agent, OpenClaw y cualquier cliente compatible con MCP. Diseñás en uno, implementás en otro, revisás en un tercero — todos compartiendo el mismo estado. Ver Sistemas multi-agente.
Trabajar bajo un contrato de rol Para equipos y trabajo auditado, ChainMemory soporta Verifiable Role Contracts: reglas escritas por humanos y firmadas por el dueño, que un modelo lee antes de trabajar. assume_role abre una sesión atada al hash del contrato y al hash del estado, y release_role la cierra con un resumen. El modelo lee el contrato; nunca lo escribe.

API REST

Autenticación

Todas las llamadas a la API requieren autenticación mediante API Key en el header:

HTTP
x-api-key: tu-api-key

Base URL: https://api.chainmemory.ai/v1

Seguridad Nunca expongas tu API Key en código frontend o repositorios públicos. Usala solo en backend o en variables de entorno.

Memorias

POST /v1/memory

Crea una nueva memoria.

bash
curl -X POST https://api.chainmemory.ai/v1/memory \
  -H "x-api-key: tu-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "summary": "Decidimos usar PostgreSQL en vez de MongoDB",
    "category": "decision",
    "importance": 8,
    "platform": "manual"
  }'
javascript
const res = await fetch('https://api.chainmemory.ai/v1/memory', {
  method: 'POST',
  headers: {
    'x-api-key': 'tu-api-key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    summary: 'Decidimos usar PostgreSQL en vez de MongoDB',
    category: 'decision',
    importance: 8,
    platform: 'api'
  })
});
const memory = await res.json();
// { id: 207, hash: '0x4f2a...', memory_number: 42 }
python
import requests

res = requests.post(
    'https://api.chainmemory.ai/v1/memory',
    headers={'x-api-key': 'tu-api-key'},
    json={
        'summary': 'Decidimos usar PostgreSQL en vez de MongoDB',
        'category': 'decision',
        'importance': 8,
        'platform': 'api'
    }
)
memory = res.json()
# {'id': 207, 'hash': '0x4f2a...', 'memory_number': 42}

Parámetros

ParámetroTipoDescripción
summary*stringTexto de la memoria. El único campo obligatorio
projectstringProyecto al que vincularla. Opcional: sin esto, los tags se infieren de las palabras clave de tus proyectos
tagsstring[]Tags para organización (máximo 10)
platformstringEtiqueta de origen: manual, extension, mcp, api. Por defecto api
categorystringDECISION, LEARNING, INTERACTION, STATE, ERROR, MILESTONE o CUSTOM. Por defecto CUSTOM
importancenumberDe 1 a 10, acotado a ese rango. Por defecto 5
GET /v1/memories/list

Lista memorias con filtros opcionales.

ParámetroTipoDescripción
projectstringFiltrar por proyecto
tagsstringFiltrar por tags (separados por coma)
searchstringBúsqueda en contenido
limitnumberCantidad máxima (default: 20)
offsetnumberPaginación
GET /v1/memories/search

Búsqueda semántica por contenido, tags, proyecto o rango de fechas.

Proyectos

GET /v1/projects

Lista todos los proyectos del usuario.

GET /v1/project/:name/state

Obtiene el estado consolidado del proyecto (decisiones, hitos, riesgos, stack).

Respuesta
{
  "project": "chainmemory",
  "version": 3,
  "state": {
    "context": {
      "summary": "Plataforma de memoria IA con verificación blockchain",
      "goals": ["Memoria persistente cross-model", "Pista de auditoría criptográfica"]
    },
    "decisions": [
      {
        "id": "d001",
        "title": "Usar Clique PoA",
        "statement": "Consenso PoA para blockchain soberana",
        "status": "confirmed",
        "evidence": ["#12", "#45"]
      }
    ],
    "milestones": [
      {
        "id": "m001",
        "title": "MVP API desplegado",
        "status": "completed",
        "date": "2026-04-15",
        "evidence": ["#5", "#18"]
      }
    ],
    "risks": [
      {
        "id": "r001",
        "title": "Latencia del motor de consolidación a escala",
        "severity": "medium",
        "status": "open",
        "mitigation": "Evaluar modelos más grandes al escalar infra",
        "evidence": ["#33"]
      }
    ],
    "stack": [
      {
        "name": "Node.js",
        "category": "runtime",
        "evidence": ["#2"]
      },
      {
        "name": "Geth (Clique PoA)",
        "category": "blockchain",
        "evidence": ["#12"]
      }
    ]
  },
  "state_hash": "a7b3c9f2...",
  "anchor": {
    "status": "anchored",
    "tx_hash": "0xce55a800...",
    "block_number": 123539
  }
}

Inyección

POST /v1/inject

Obtiene memorias relevantes formateadas para inyección en un prompt.

ParámetroTipoDescripción
memory_ids*number[]Tus números de memoria (#N), de 1 a 50. Las archivadas y en cuarentena se excluyen solas
project_filterstringEtiqueta de proyecto opcional que queda registrada con la inyección
target_platformstringEtiqueta de destino opcional (chatgpt, claude, gemini...)
optimisticbooleanDevolver el texto enseguida y confirmar el pago on-chain en segundo plano

Respuesta

El endpoint devuelve las memorias seleccionadas formateadas para inyección. Cada memoria llega con su número visible para el usuario y una referencia de verificación, de modo que una IA puede citar la memoria exacta detrás de cualquier afirmación — y vos podés rastrear esa cita hasta su evidencia on-chain. Una afirmación deja de ser "confiá en mí" y pasa a ser "acá está la memoria, verificala vos mismo."

Verificación

GET /v1/project/:name/state/anchor

Verifica el ancla on-chain del estado de un proyecto. Endpoint público, no requiere autenticación.

ParámetroTipoDescripción
versionnumberVersión específica (default: última)
Respuesta
{
  "project": "chainmemory",
  "projectId": "0x77f7d980...",
  "version": 3,
  "state_hash": "a7b3c9f2...",
  "anchor": {
    "status": "anchored",
    "tx_hash": "0xce55a800a2a4e30b...",
    "block_number": 123539,
    "contract": "0xa7A8BA51950255b3e223a6745597C67009Fe7875"
  }
}
Verificación independiente Cualquier persona puede verificar el estado llamando a este endpoint y comparando el state_hash con el registrado en el contrato on-chain. No necesita cuenta ni API key.

Códigos de error

CódigoSignificadoSolución
401API Key inválida o ausenteVerificá tu header x-api-key
402insufficient_aic — saldo insuficiente para una operación pagaLa respuesta incluye balance_aic, required_aic y faucet_url. Cargá en el faucet
403Sin permisos para este recursoVerificá que el proyecto te pertenece
404Recurso no encontradoVerificá el nombre del proyecto o ID
429Rate limit excedidoEsperá y reintentá. Límite: 30–600 req/min según plan
500Error internoReintentá. Si persiste, contactá soporte

Equivalencia de funciones: Extensión ↔ MCP ↔ API

No todas las funciones están disponibles en todos los métodos de integración. Esta tabla muestra qué hay disponible dónde:

FunciónExtensiónMCPAPI REST
Guardar memoria✓ 1-clic✓ chainmemory_remember✓ POST /v1/memory
Recordar memorias✓ Lista✓ chainmemory_recall✓ GET /v1/memories/list
Buscar memorias~ Filtro básico✓ search_memories✓ GET /v1/memories/search
Inyectar contexto✓ Auto-inyección✓ inject_memories✓ POST /v1/inject
Ver Project State✓ Project Brain✓ get_project_state✓ GET /v1/project/:name/state
Seal (anclar on-chain)✗ No disponible✓ chainmemory_seal✓ POST /v1/seal/:id
Estadísticas de cuenta✓ Dashboard✓ chainmemory_stats✓ GET /v1/stats
Info de perfil✓ Configuración✓ chainmemory_profile✓ GET /v1/profile
Listar proyectos✓ Selector✓ list_projects✓ GET /v1/projects
Crear proyecto✓ New Project✓ create_project✓ POST /v1/projects
Verificar ancla~ Vía Explorer✓ verify_project_state, get_memory_proof✓ GET /v1/project/:name/state/anchor
Archivar memoria✓ archive_memory✓ POST /v1/memories/:id/archive
Actualizar tags✓ update_memory_tags✓ PUT /v1/memories/:id/tags
Paridad total de la API Todas las funciones de esta tabla se pueden usar desde la API REST. Las brechas que quedan están del lado de la Extensión: no sella memorias, y su búsqueda es un filtro local sobre la lista, no la búsqueda semántica. Las dos están disponibles por el servidor MCP y por la API.

Confianza y Gobierno

Cada memoria lleva un estado de confianza desde el momento en que se escribe: trusted, tentative (marcada al escribirse por reglas de evaluación deterministas), o quarantined (condenada por el dueño). Las tentative siempre se entregan marcadas — el agente ve la marca y decide. Las quarantined se excluyen de context, inject, quotes y consultas al oracle, mientras su huella on-chain permanece como evidencia inmutable. Todas las respuestas de lectura incluyen el campo trust.

POST /v1/memories/:id/trust

Gobernar el estado de confianza de una memoria. Solo el dueño.

bash
curl -X POST https://api.chainmemory.ai/v1/memories/487/trust \
  -H "x-api-key: tu-api-key" \
  -H "Content-Type: application/json" \
  -d '{"action": "quarantine"}'

Acciones: approve → trusted · quarantine → quarantined · tentative → tentative. La respuesta incluye el estado anterior para auditoría.

GET /v1/memory/:id/forensics

Biografía completa de una memoria como línea de tiempo ordenada. Solo el dueño.

bash
curl https://api.chainmemory.ai/v1/memory/485/forensics \
  -H "x-api-key: tu-api-key"

Eventos: born, trust, batched, checkpoint_anchored, recalled (cada lectura, con endpoint y consulta), injected (cada entrega, con plataforma destino), cited_as_evidence (ítems del Project Brain que citan esta memoria). Incluye contadores con verificación cruzada y prueba de anclaje on-chain. Responde la pregunta forense: qué memoria causó qué, cuándo entró, quién la leyó y a dónde llegó.

POST /v1/project/:name/state/rollback

Restaurar el estado de un proyecto a una versión anterior, de forma verificable. Fee: 0.1 AIC

bash
curl -X POST https://api.chainmemory.ai/v1/project/miproyecto/state/rollback \
  -H "x-api-key: tu-api-key" \
  -H "Content-Type: application/json" \
  -d '{"to_version": 35}'

Restauración append-only: volver a la versión N jamás borra nada — crea una versión nueva cuyo contenido es byte-idéntico a N. Como los hashes se computan sobre bytes canónicos, el hash de la versión nueva es igual al ya anclado on-chain para N: la fidelidad de la restauración es un hecho matemático, no una promesa. Antes de restaurar, el servidor recomputa el hash del contenido almacenado y se niega (HTTP 409) si no coincide — la corrupción nunca puede restaurarse. La historia jamás se muta.

RED

Datos de la red

CampoValor
NetworkChainMemory
Chain ID202604
RPC URLhttps://rpc.chainmemory.ai
MonedaAIC (nativa)
Decimales18
Block time~15 segundos
ConsensoClique PoA (3 signers activos)
Explorerchainmemory.ai/explorer

Contratos desplegados

ContratoDirecciónPropósito
ProjectStateAnchor 0xa7A8BA51950255b3e223a6745597C67009Fe7875 Ancla el state_hash de cada versión del Project State. anchorState(projectId, version, stateHash) lo guarda verbatim y emite StateAnchored; un par (projectId, version) no se puede volver a anclar nunca. Se lee con getStateAnchor(projectId, version) o getAnchorById(anchorId). Acá projectId es keccak256(projectName), y stateHash es el SHA3-256 canónico que calcula el engine: el contrato lo almacena, no lo recalcula. Es el contrato detrás del endpoint público GET /v1/project/:name/state/anchor.
CheckpointAnchor 0x1706946365B455f66B92C05d641c6fDB897D0791 Ancla la raíz Merkle agregada de un grupo de lotes de memorias, con metadata de auditoría: inicio y fin de época, cantidad de lotes, motivo del disparo y hash del snapshot. Emite CheckpointAnchored; se lee con getCheckpoint(checkpointId). Una vez anclado, un checkpoint es inmutable.
MemoryV2 (active) 0xE84224e2660fd620aA6d09522718Ae0e5cF33F7d Contrato de memorias activo: todas las memorias nuevas se escriben acá. Verificable de forma independiente por hash contra el registro on-chain.
AIMemoryRegistry (v1, legacy) 0x7a50ed017E175Eb4549d3BDd7DBCF319F9f30160 Registro global de hashes de memorias de IA. Permite que cualquier memoria sea verificada independientemente comparando su hash SHA-256 contra el registro on-chain.
AIIdentityProtocol 0xe8E195ba416Fb25F4FC3d0E7908ff9e8666dbb4A Capa de identidad para agentes de IA. Registra instancias de IA con su tipo de modelo, capacidades y propiedad, habilitando trust scoring y rastreo de procedencia entre interacciones.

El Token AIC es la moneda nativa de la red (no es un contrato ERC-20). Se usa para pagar el fee de protocolo de toda operación de escritura. Cada fee se parte por la mitad: el 50% se quema de forma permanente y el 50% va a la tesorería del ecosistema.

Fee Schedule v1.0

Toda operación de escritura paga un fee de protocolo. El 50% se quema de forma permanente (presión deflacionaria) y el 50% va a la tesorería. Las lecturas y el registro de identidad son gratis.

OperaciónFee (AIC)QuemaTesorería
Inyectar contexto — enviar memorias a un LLM0.10.050.05
Anclar estado — anclar el project state on-chain0.10.050.05
Auditar memoria — verificar su integridad (gratis con dry_run)0.10.050.05
Consulta al oráculo ciego — consulta derivada con prueba0.10.050.05
Consolidación del Brain — Project Brain state/ops0.05 + 0.005/op50%50%
Auditar estado — auditoría completa del proyecto (gratis con dry_run)5.02.52.5
Escribir memoria — guardar una memoria0.0010.00050.0005
Sellar memoria — hacerla inmutable0.0010.00050.0005
Registrar IA — crear identidad de IAGratis
Todas las lecturas — listar, buscar, verificarGratis
Economía del faucet Con 1 AIC del faucet podés hacer: 10 inyecciones, 10 anclajes, 8 consolidaciones del Brain (15 ops cada una), o alrededor de 1.000 escrituras de memoria contando solo el fee de protocolo de 0,001 AIC. Guardar una memoria también paga el almacenamiento on-chain, que crece con su longitud, así que la cantidad real de memorias por AIC es menor y depende de cuán largas sean. El registro y las lecturas son siempre gratis.
Costos de gas Anclar un estado paga un fee de protocolo de 0,1 AIC: 0,05 se queman y 0,05 van a la tesorería. A eso se suma el gas de red de la transacción. Con 1 AIC del faucet alcanza para 10 anclajes.

Conectar MetaMask

Para agregar ChainMemory a MetaMask:

  1. Ir a chainmemory.ai/network
  2. Click en "Add ChainMemory to MetaMask"
  3. Confirmar en MetaMask

O agregala manualmente con los datos de la tabla anterior.

Faucet

El faucet entrega AIC gratis para que puedas interactuar con la blockchain:

  • URL: faucet.chainmemory.ai
  • Cantidad: 1 AIC por claim
  • Cooldown: 72 horas entre claims
  • Requisito: Resolver un challenge simple (anti-bot)
Seguridad del wallet El faucet genera wallets 100% en tu navegador. Tu private key nunca sale de tu dispositivo. Recomendamos descargar el keystore encriptado (JSON) para mayor seguridad en vez de guardar la private key como texto plano.

PROTOCOLO DE IDENTIDAD IA

Cada agente de IA que usa ChainMemory obtiene una identidad única e intransferible en la blockchain — un Soulbound Token (SBT) que prueba quién escribió una memoria, cuándo y desde qué modelo. Esta es la base de la confianza en un mundo multi-agente.

El Problema

En los sistemas de IA actuales, no hay forma de responder preguntas fundamentales:

  • ¿Qué IA escribió esta respuesta? ¿Fue Claude, GPT-4, o un modelo fine-tuned?
  • ¿Es el mismo agente con el que trabajé ayer, o una instancia diferente?
  • ¿Puedo confiar en la memoria de este agente si no conozco su identidad?
  • ¿Cómo pruebo la procedencia cuando múltiples agentes colaboran?

Sin identidad, no hay responsabilidad. Sin responsabilidad, no hay confianza.

Cómo Funciona

1

Registro

Cuando un usuario crea una cuenta o un agente se conecta vía API/MCP, el sistema registra una identidad on-chain a través del contrato AIIdentityProtocol. Esto crea un Soulbound Token — un NFT que no puede ser transferido. Queda permanentemente vinculado a la wallet de ese agente.

2

Metadatos de Identidad

Cada identidad registrada almacena:

  • Dirección de wallet — La dirección única del agente en la blockchain
  • Tipo de modelo — claude-sonnet-4, gpt-4o, gemini-2.0, etc.
  • Capacidades — Qué puede hacer este agente (remember, recall, consolidate, seal)
  • Propietario — La persona u organización que controla este agente
  • Bloque de registro — Prueba inmutable de cuándo se creó esta identidad
3

Atribución de Memorias

Cada memoria escrita en ChainMemory incluye el ai_id del agente que la creó. Esto significa que cualquier memoria puede rastrearse hasta una identidad de IA específica y verificada.

Detalles del Contrato

CampoValor
ContratoAIIdentityProtocol
Dirección0xe8E195ba416Fb25F4FC3d0E7908ff9e8666dbb4A
RedChainMemory (ID 202604)
Tipo de tokenSoulbound (ERC-721 no transferible)
EstándarEIP-5192 (Minimal Soulbound NFTs)

Trust Score (Roadmap)

El protocolo de identidad habilita un futuro AI Trust Score — una métrica de reputación basada en interacciones verificables:

  • Cantidad de memorias — ¿Cuántas memorias verificadas ha producido este agente?
  • Consistencia — ¿Con qué frecuencia las memorias del agente pasan la validación anti-alucinación?
  • Tasa de anclaje — ¿Qué porcentaje de memorias están respaldadas por pruebas on-chain?
  • Historial de colaboración — ¿Ha participado este agente en workflows multi-agente?
¿Por qué Soulbound? Los NFTs regulares pueden venderse o transferirse, lo que permitiría suplantación de identidad. Los Soulbound Tokens están permanentemente vinculados a la wallet que los creó. Un agente de IA no puede hacerse pasar por otro comprando su token de identidad. Esto es crítico para los registros de auditoría — necesitás saber con certeza qué agente escribió qué memoria.

Identidad en Workflows Multi-Agente

Cuando múltiples agentes colaboran en el mismo proyecto (ver Sistemas Multi-Agente), las contribuciones de cada agente se atribuyen individualmente:

Cadena de evidencia
Proyecto: "payment-system-v2"
├── Memoria #1 por Claude (ai_id: 0xA1...) — "Usar Stripe para pagos"
├── Memoria #2 por GPT-4 (ai_id: 0xB2...) — "Agregar capa de detección de fraude"
├── Memoria #3 por Cursor (ai_id: 0xC3...) — "Implementado handler de webhooks"
└── Estado v4 anclado — los 3 agentes contribuyeron, todo verificable

La identidad de cada agente es verificable independientemente on-chain. No hay ambigüedad sobre quién contribuyó qué.

Verificar una Identidad

Podés verificar cualquier identidad de IA usando la blockchain directamente:

JavaScript (ethers.js)
const { ethers } = require('ethers');
const provider = new ethers.JsonRpcProvider('https://rpc.chainmemory.ai');

const IDENTITY_CONTRACT = '0xe8E195ba416Fb25F4FC3d0E7908ff9e8666dbb4A';
const ABI = ['function balanceOf(address) view returns (uint256)'];

const contract = new ethers.Contract(IDENTITY_CONTRACT, ABI, provider);
const hasIdentity = await contract.balanceOf(agentWallet);

console.log(hasIdentity > 0 ? 'Identidad IA verificada' : 'Sin identidad registrada');
Sin identidad = sin confianza Si un agente no tiene una identidad registrada on-chain, sus memorias no pueden ser atribuidas. ChainMemory requiere registro de identidad antes de permitir escritura de memorias. Esto asegura que cada memoria en el sistema tiene un autor verificable.

SISTEMAS MULTI-AGENTE

ChainMemory fue diseñado desde cero para un mundo donde múltiples agentes de IA colaboran en el mismo proyecto. Cada agente lee el mismo Project State, cada contribución se atribuye individualmente, y cada handoff es trazable.

El Problema Multi-Agente

Los flujos de trabajo de desarrollo modernos ya involucran múltiples agentes de IA:

  • Claude diseña la arquitectura y escribe documentación
  • Cursor implementa el código con asistencia IA inline
  • GPT-4 revisa PRs y analiza implicaciones de seguridad
  • Gemini procesa codebases grandes para sugerencias de refactoring

Sin memoria compartida, cada agente empieza de cero. Las decisiones tomadas en Claude son invisibles para Cursor. La arquitectura acordada en GPT es desconocida para Gemini. Vos te convertís en el cuello de botella — constantemente re-explicando contexto.

Cómo ChainMemory Resuelve Esto

Project State Compartido

Todos los agentes conectados al mismo proyecto ven el mismo estado consolidado: decisiones, hitos, riesgos, stack y contexto. Cuando Claude marca una decisión como "active", Cursor la ve inmediatamente.

Flujo de Estado Compartido
┌──────────┐    ┌──────────────────────────┐    ┌──────────┐
│  Claude  │───▶│                          │◀───│  Cursor  │
│  (MCP)   │    │   Proyecto ChainMemory   │    │  (MCP)   │
└──────────┘    │                          │    └──────────┘
                │  decisions: [d001, d002]  │
┌──────────┐    │  milestones: [m001]      │    ┌──────────┐
│  GPT-4   │───▶│  risks: [r001, r002]     │◀───│  Gemini  │
│  (API)   │    │  stack: [Node, Redis]    │    │  (API)   │
└──────────┘    └──────────────────────────┘    └──────────┘

Patrón Agent Handoff

Cuando el trabajo pasa de un agente a otro, ChainMemory proporciona transferencia de contexto sin fricciones:

1

Claude diseña la arquitectura

Claude guarda decisiones clave vía MCP: elección de base de datos, estructura de API, estrategia de autenticación. Cada memoria se atribuye al ai_id de Claude.

Claude guarda
chainmemory_remember({
  content: "Usar PostgreSQL con row-level security para aislamiento multi-tenant",
  tags: ["architecture", "database", "security"],
  importance: 0.9
})
2

Cursor toma la implementación

Cuando abrís Cursor, inyecta el contexto del proyecto automáticamente. Cursor conoce la elección de base de datos, la estructura de API, y por qué se tomaron esas decisiones — sin que repitas nada.

Cursor recibe (via inject)
Project State v3:
- Decisión d001: "Usar PostgreSQL con RLS" (active, evidence: #12, #15)
- Decisión d002: "API REST con endpoints versionados" (active, evidence: #18)
- Hito m001: "Schema de BD completo" (pendiente)
- Riesgo r001: "Performance de RLS en tenants grandes" (medio, evidence: #15)
3

Cursor implementa y guarda progreso

Mientras Cursor implementa, guarda memorias de implementación. Estas se atribuyen al ai_id de Cursor y alimentan el estado compartido.

4

GPT-4 revisa con contexto completo

Un agente GPT-4 revisando el PR puede consultar ChainMemory para entender por qué se tomó cada decisión, quién la tomó, y qué evidencia la respalda.

Patrones de Handoff

Patrón Flujo Caso de Uso
Secuencial Claude → Cursor → GPT-4 Diseño → Implementar → Revisión
Paralelo Claude + Cursor + Gemini simultáneamente Múltiples developers, mismo proyecto
Especialista Cualquier agente → Agente seguridad → Vuelve Expertise específica on demand
Supervisión Humano + Claude supervisan, Cursor ejecuta Human-in-the-loop con delegación

Resolución de Conflictos Entre Agentes

Cuando dos agentes toman decisiones contradictorias, la Resolución de Conflictos de ChainMemory aplica las mismas reglas:

  • Precedencia temporal — La decisión más reciente gana, sin importar qué agente la tomó
  • Peso de evidencia — Una decisión respaldada por 5 memorias de 3 agentes es más fuerte que una con una sola memoria
  • Supersesión explícita — Cualquier agente puede explícitamente reemplazar una decisión anterior referenciándola
  • Auditoría completa — Tanto la decisión original como la que la reemplaza se preservan con su respectiva atribución de ai_id
Ningún punto único de verdad — excepto la cadena En un sistema multi-agente, ningún agente individual es dueño de la "verdad". El Project State es una vista materializada derivada de las contribuciones de todos los agentes. El ancla on-chain es la única marca temporal autoritativa. Esto significa que incluso si un agente alucina o comete un error, la cadena de evidencia permite que otros agentes (o humanos) lo rastreen y corrijan.

Configurar Multi-Agente

No se necesita configuración especial. Cualquier agente conectado al mismo proyecto participa automáticamente en la colaboración multi-agente:

  1. Crear un proyecto vía Extension, MCP, o API
  2. Usar la misma API key en todos los agentes (o crear keys específicas por agente bajo la misma cuenta)
  3. Cada agente usa inject_memories al inicio de sesión para cargar contexto compartido
  4. Cada agente usa chainmemory_remember para guardar contribuciones
  5. El Motor de Consolidación fusiona todas las contribuciones en el Project State unificado
Mejor práctica Usá tags descriptivos que identifiquen el rol del agente: ["architecture", "claude-design"], ["implementation", "cursor-code"], ["review", "gpt4-security"]. Esto facilita el filtrado por rol de agente sin necesidad de parsear el ai_id directamente.

HERMES AGENT

Hermes Agent es un framework de agentes IA open-source y agnóstico al proveedor. ChainMemory se integra por dos vías: el servidor MCP (herramientas nativas dentro del chat) o el wrapper cm.py CLI (control total desde terminal).

Requisitos previos

  • Hermes Agent instalado (Windows, macOS, Linux, WSL)
  • Cuenta ChainMemory con API key (formato: aic_...)
  • Python 3.10+ (para wrapper cm.py)

Obtener tu API Key

Las cuentas ChainMemory se crean exclusivamente desde la Extensión Chrome:

  1. Instalá la Extensión ChainMemory
  2. Abrí el popup desde la barra del navegador
  3. Elegí "Generar API Key automáticamente" (wallet gratis + 1 AIC) o "Ya tengo una key"
  4. Andá a Configuración → Conexión y hacé clic en "Ver" para copiar tu key

Importante: El Faucet (faucet.chainmemory.ai) solo distribuye tokens AIC para operaciones on-chain, no emite API keys. La API key se obtiene únicamente desde la Extensión.

Opción A: Servidor MCP (Flujo de chat)

El servidor MCP expone ChainMemory como herramientas nativas dentro del chat de Hermes. Después de configurar, podés decir cosas como "Recordá: decidimos usar PostgreSQL" y Hermes llamará la herramienta automáticamente.

Configuración

Editá ~/.hermes/config.yaml y agregá:

YAML — ~/.hermes/config.yaml
mcp_servers:
  chainmemory:
    command: "python"
    args: ["C:\\Users\\<usuario>\\.hermes\\skills\\chainmemory-mcp\\chainmemory_mcp_server.py"]
    env:
      CHAINMEMORY_API_KEY: "aic_..."
      CHAINMEMORY_BASE_URL: "https://api.chainmemory.ai/v1"
      CHAINMEMORY_DEFAULT_PROJECT: "default"

Reiniciá Hermes después de editar. Las herramientas aparecen como mcp_chainmemory_* en el chat.

Herramientas MCP Disponibles

HerramientaQué hace
mcp_chainmemory_save_memoryGuardar una memoria
mcp_chainmemory_list_memoriesListar / buscar memorias
mcp_chainmemory_get_profileInfo de cuenta (tier, contadores)
mcp_chainmemory_list_projectsListar todos tus proyectos
mcp_chainmemory_get_balanceSaldo AIC + URL del faucet
mcp_chainmemory_get_blockchain_statsAltura de chain, total de anclajes
mcp_chainmemory_update_memory_tagsRetaguear una memoria
mcp_chainmemory_archive_memoryArchivar / desarchivar

Opción B: Wrapper cm.py (CLI / Scripts)

cm.py es un CLI Python que envuelve la API REST. Maneja headers de auth, pacing y reintentos. Instalalo via el skill de ChainMemory:

bash
hermes skills install chainmemory

Luego configurá tu key:

bash
chmod 600 ~/.hermes/chainmemory.env

Comandos

ComandoQué hace
cm whoamiMostrar cuenta, tier, cuota
cm projectsListar todos los proyectos
cm save "texto" --project mi-appGuardar una memoria
cm recall --project mi-appRecuperar memorias recientes
cm search "query" --project mi-appBúsqueda semántica
cm state mi-appProject State (decisiones, riesgos, hitos, stack)
cm seal mi-appAnclar estado on-chain (irreversible)
cm verify mi-appVerificación pública (sin auth)

Opción C: API REST Directa

Cualquier cliente HTTP funciona. URL base: https://api.chainmemory.ai/v1. Header de auth: x-api-key: aic_... (no Authorization: Bearer).

Notas importantes

  • Header de auth: Usá x-api-key, no Authorization: Bearer.
  • Rate limits: 30–600 req/min según plan.
  • El estado no se construye solo: no hay consolidación en el backend ni disparador automático. El Project State cambia únicamente cuando un cliente propone operaciones vía update_project_state (MCP) o POST /v1/project/:name/state/ops (API). Esperar no va a producir un estado — pedirlo, sí.
  • Qué significa "seal" acá: en la API y el servidor MCP de ChainMemory, seal vuelve permanentemente inmutable una sola memoria (POST /v1/seal/:id, que toma tu número de memoria). El Project State se ancla como parte de la consolidación, no sellando. cm.py es un wrapper de terceros y puede mapear sus comandos de otra forma.
  • Paths en Windows: En config.yaml, usá doble backslash: C:\\Users\\<usuario>\\...

Verificar la configuración

bash
# vía MCP (en chat)
"Guardá esto: decidimos usar PostgreSQL para la base primaria"

# vía CLI
cm whoami
cm save "Decidimos usar PostgreSQL para DB primaria" --project mi-app --tags decision,stack
cm state mi-app
cm verify mi-app

GUÍA DE AUDITORÍA

Una de las capacidades más poderosas de ChainMemory es permitir auditorías verificables de decisiones de proyecto asistidas por IA — sin exponer el contenido privado de las conversaciones.

Dos niveles de auditoría

Nivel 1 — Auditoría externa (sin acceso del dueño)

Cualquiera puede verificar que un estado de proyecto fue anclado en un momento específico, sin ver qué contiene. Es como ver un sello notarial cerrado — sabés que existe, no sabés qué dice adentro.

Lo que un auditor externo ve (público, on-chain):

DatoVisibleRevela contenido?
state_hash✓ PúblicoNo — SHA3-256 es irreversible
tx_hash✓ PúblicoNo — solo prueba que la transacción ocurrió
block_number✓ PúblicoNo — solo prueba cuándo se ancló
project ID (hasheado)✓ PúblicoNo — el nombre del proyecto está hasheado
número de versión✓ PúblicoNo — solo muestra cuántas consolidaciones hubo
Contenido de memorias~ El texto cifrado sí está on-chainNo — AES-256-GCM, ilegible sin la llave del dueño
Detalle de decisiones✗ PrivadoNunca on-chain
Project State✗ PrivadoNunca on-chain
Nivel 1 — Endpoint público
GET /v1/project/nova-logistics/state/anchor

Respuesta:
{
  "project": "nova-logistics",
  "projectId": "0x77f7d980...",     // hasheado — nombre original no se revela
  "version": 5,
  "state_hash": "a7b3c9f2e1...",   // prueba que el estado existió, no revela contenido
  "anchor": {
    "status": "anchored",
    "tx_hash": "0xce55a800...",
    "block_number": 125000,
    "contract": "0xa7A8BA51...e7875"
  }
}
Qué demuestra esto Un estado de proyecto con hash a7b3c9f2e1... fue registrado en el bloque 125000 de la blockchain ChainMemory. Nada sobre el contenido se revela. No se necesita API key.

Nivel 2 — Auditoría con disclosure selectivo (el dueño comparte datos)

El dueño del proyecto elige qué compartir con el auditor. El auditor verifica los datos compartidos contra la prueba on-chain. Esta es la auditoría poderosa: demostrás que los datos son auténticos sin intermediarios.

El dueño controla exactamente qué se revela:

Nivel de disclosureQué ve el auditorCaso de uso
Solo estadoDecisiones, hitos, riesgos, stack — sin texto de conversacionesDue diligence de inversores
Estado + memorias seleccionadasDecisiones con extractos de conversaciones de soporteRevisión de compliance
Exportación completaTodas las memorias, estado completo, historial completoAuditoría interna, descubrimiento legal

Proceso de auditoría paso a paso

Ejemplo: NovaTech, una startup construyendo un SaaS de logística. Después de 4 meses usando ChatGPT y Claude alternadamente, el CTO necesita demostrar trazabilidad del proyecto a inversores.

1

El dueño exporta el Project State

El CTO llama a la API con su key y exporta el estado JSON:

bash
curl -H "x-api-key: cto-api-key" \
  https://api.chainmemory.ai/v1/project/nova-logistics/state
    

Resultado: 12 decisiones activas, 3 reemplazadas, 8 hitos completados, 2 riesgos abiertos. El CTO comparte este JSON con el inversor.

2

El auditor calcula el hash

El inversor guarda el JSON recibido como state.json y calcula el state hash. El hash es SHA3-256 sobre un prefijo de dominio (CM_PROJECT_STATE_V<schema_version>) más la forma canónica del objeto state (claves ordenadas recursivamente, separadores compactos, UTF-8, campo state_hash excluido). El verificador de referencia abierto lo hace en un comando — solo librería estándar de Python, sin dependencias:

bash
curl -sO https://docs.chainmemory.ai/verify_state.py
python3 verify_state.py state.json
# computed state_hash : 0xa7b3c9f2e1d4...
# declared state_hash : 0xa7b3c9f2e1d4... -> MATCH
# on-chain state_hash : 0xa7b3c9f2e1d4... -> ON-CHAIN MATCH
    

El verificador son ~90 líneas de código auditable: recomputa el hash de forma independiente y además lo contrasta contra el ancla pública on-chain. No requiere confiar en ChainMemory.

3

El auditor verifica contra la blockchain

El inversor llama al endpoint público de verificación (no necesita API key):

bash
curl https://api.chainmemory.ai/v1/project/nova-logistics/state/anchor
# Retorna: state_hash: "a7b3c9f2e1d4..."
    

Si los hashes coinciden: el estado es auténtico y no fue modificado desde la fecha de anclaje.

4

El auditor rastrea una decisión específica (opcional)

Si el CTO también compartió acceso a memorias, el inversor puede profundizar en cualquier decisión:

Decisión d005: "Migrar de REST a GraphQL" tiene evidence: ["#45", "#67", "#82"]. El inversor recupera esas 3 memorias:

  • Memoria #45 — Sesión con ChatGPT discutiendo cuellos de botella de performance de la API
  • Memoria #67 — Sesión con Claude comparando trade-offs REST vs GraphQL
  • Memoria #82 — Decisión final documentada con justificación

Cada memoria tiene su propio hash SHA-256 de su texto, sin separador de dominio — no confundir con el hash SHA3-256 con dominio del Project State. Contenido verificado, procedencia confirmada.

Lo que el inversor puede afirmar ahora "En el bloque 125000 del 10 de junio de 2026, el proyecto de NovaTech tenía 12 decisiones activas respaldadas por 82 memorias de conversaciones con IA. Cada decisión se rastrea a conversaciones específicas. El state hash que verifiqué on-chain coincide exactamente. Nada fue alterado después del anclaje."

Garantías de privacidad durante la auditoría

La garantía crítica: el dueño siempre controla el disclosure.

  • Los inversores ven decisiones e hitos — no las conversaciones crudas de IA que las produjeron
  • La blockchain prueba autenticidad sin revelar contenido
  • El texto de memorias (contenido real de conversaciones) solo es visible si el dueño lo exporta explícitamente
  • El registro on-chain contiene hashes más el contenido cifrado de las memorias — aunque la blockchain sea pública, sin tu llave nada de eso es legible
  • Ningún tercero, incluyendo ChainMemory mismo, puede forzar el disclosure del contenido de memorias
Distinción importante La blockchain prueba que un estado existió en un momento dado. No revela qué contenía el estado. El dueño cierra la brecha compartiendo selectivamente datos con el auditor. Sin la cooperación del dueño, los datos on-chain son opacos por diseño.

QUÉ PREVIENE CHAINMEMORY

Entender contra qué protege ChainMemory es tan importante como entender qué hace.

Pérdida de contexto

Cada conversación de IA hoy es efímera. Cerrás la pestaña y todo lo discutido — decisiones, elecciones de arquitectura, hallazgos de investigación — desaparece. ChainMemory captura esto como memorias permanentes y recuperables. Tu próxima sesión arranca donde terminó la anterior.

Vendor lock-in

Si el conocimiento de tu proyecto existe solo dentro del historial de conversaciones de ChatGPT, estás atrapado. ChainMemory almacena conocimiento independientemente de cualquier proveedor de IA. Cambiá de ChatGPT a Claude a Gemini sin perder una sola decisión o contexto.

Manipulación retroactiva

Sin prueba criptográfica, cualquiera podría afirmar "decidimos X" cuando la decisión real fue Y. El anclaje on-chain de ChainMemory crea un registro a prueba de manipulación. El state hash en el bloque 123539 prueba exactamente cuál era el estado del proyecto en ese momento. No se puede alterar después del hecho.

Fragmentación de conocimiento

Equipos que usan IA terminan con conocimiento crítico disperso en docenas de conversaciones desconectadas, en diferentes herramientas, con diferentes modelos. ChainMemory consolida todo en un único Project State estructurado — sin importar qué IA o herramienta produjo la conversación original.

Dependencia de una sola IA

Cuando un proveedor de IA se cae, cambia su API, o depreca una funcionalidad, proyectos que dependen exclusivamente de ese proveedor pierden continuidad. La arquitectura cross-model de ChainMemory asegura que tu conocimiento acumulado es accesible desde cualquier sistema de IA compatible.

Deriva invisible de decisiones

En proyectos de largo plazo, las decisiones evolucionan durante meses. Sin un sistema que rastree qué cambió, cuándo, y por qué, los equipos pierden el hilo de su propio razonamiento. El ciclo de vida de decisiones del Motor de Consolidación (vigente → reemplazada) con cadenas de evidencia hace cada evolución rastreable.

La garantía fundamental ChainMemory asegura que el conocimiento asistido por IA — las decisiones, descubrimientos y contexto que tu equipo construye durante semanas y meses de trabajo con IA — nunca se pierde, nunca queda encerrado, nunca es falsificable, y siempre es portable.

MODELO DE CONFIANZA

Qué podés — y qué no podés — confiar

ChainMemory combina una API centralizada con verificación descentralizada. Entender los límites de confianza es crítico para evaluar si ChainMemory cumple tus requisitos de seguridad.

Tabla de garantías

PreguntaRespuestaCómo se aplica
¿Puede el operador borrar un evento después de registrarlo? Sí, de la base de datos Pero el ancla on-chain preserva el hash del estado. La eliminación es detectable: recalcular el hash de los eventos restantes produce una discrepancia con el hash anclado.
¿Puede el operador modificar un estado pasado? Sí, en la base de datos Pero cualquier modificación cambia el hash del estado. Comparar el hash recalculado contra el ancla on-chain revela manipulación inmediatamente.
¿Puede el operador falsificar un ancla? No Los anclas son transacciones on-chain. El smart contract registra el hash del estado de forma inmutable. Falsificar requiere controlar la blockchain — económicamente inviable con consenso PoA y múltiples validadores.
¿Puede un tercero verificar sin confiar en ChainMemory? El endpoint de verificación es público y sin autenticación. Cualquiera también puede leer el smart contract directamente usando Web3/Ethers.js.
¿Pueden otros usuarios leer mis memorias? No El contenido de las memorias está limitado al dueño de la API Key. Lo público on-chain es texto cifrado, no texto plano: descifrarlo requiere la llave derivada de la API Key del dueño.
¿Se almacena el texto plano de las memorias on-chain? No Lo que se escribe on-chain es el texto cifrado AES-256-GCM de cada memoria (MemoryV2.writeMemory), junto con su categoría, importancia y largo del texto plano. El texto plano nunca sale de la base de datos de la API, y sin la llave del dueño nadie puede descifrarlo — que es justamente lo que te permite recuperar una memoria años después desde otro dispositivo. El Project State consolidado se ancla solo como hash SHA3-256.
¿Pueden los validadores ver el contenido de las memorias? No Para un ancla de estado la carga es solo el id del proyecto y el hash. Para una memoria es texto cifrado AES-256-GCM más su categoría, importancia y largo: los validadores pueden ordenarla y validarla, no pueden leerla.
¿Qué pasa si ChainMemory se cae? Las memorias son temporalmente inaccesibles Pero todos los anclas on-chain siguen siendo verificables de forma independiente. La blockchain continúa operando incluso si la API está caída. Los usuarios pueden exportar sus datos en cualquier momento.

Niveles de confianza

Confianza total (criptográfica) Integridad del estado y timestamp. Una vez anclado, el hash en el bloque N es inmutable. Nadie — ni siquiera ChainMemory — puede alterar lo que fue registrado.
Confianza operacional (dependiente de la API) Almacenamiento de memorias, recuperación, inyección y consolidación. Estos dependen de que la API de ChainMemory esté disponible y sea honesta. El mecanismo de anclaje actúa como control: cualquier manipulación del lado del servidor es detectable.
Sin confianza necesaria Verificación independiente. Cualquiera con una librería Web3 puede leer el smart contract directamente y comparar hashes. Cero dependencia de la infraestructura de ChainMemory.

Soberanía — no-custodial

ChainMemory está migrando a un modelo no-custodial donde tu llave vive en tu cliente, no en el servidor. Vos firmás tus propias escrituras on-chain; el servidor guarda el texto cifrado y verifica las firmas, pero nunca tiene tu llave privada. Esto se probó de punta a punta — una memoria escrita 100% del lado del cliente, con el servidor sin tocar nunca la llave.

Qué significa no-custodial acá Las llaves se generan del lado del cliente y el servidor guarda solo tu dirección (POST /v1/keys/register-pubkey). El cliente firma y transmite cada escritura; el servidor solo adjunta el registro (POST /v1/memory/attach). Las API keys están cifradas en reposo (AES-256-GCM) con una master key fuera de la app.
En progreso Bóveda ciega: derivar la llave de cifrado de contenido de tu llave privada para que el servidor no pueda leer el contenido ni en teoría. La extensión Chrome publicada todavía firma del lado del servidor (custodial); el camino no-custodial llega en una versión nueva. La capacidad está probada y la migración está en curso.

MODELO DE AMENAZAS

Ataques, detección y lo que está fuera de alcance

Ningún sistema es invulnerable. Esta sección mapea la superficie de ataque, qué detecta o previene ChainMemory, y qué sigue siendo responsabilidad del usuario.

Vectores de ataque

AtaqueObjetivoDetección / PrevenciónSeveridad
Modificación retroactiva del estado Base de datos API ✓ Detectado — el hash recalculado no coincide con el ancla on-chain Crítica
Eliminación silenciosa de eventos Base de datos API ✓ Detectado — los eventos faltantes cambian la cadena de hashes Crítica
Ancla falsa (falsificar tx hash) Capa de verificación ✓ Prevenido — los anclas son on-chain; falsificar requiere controlar la blockchain Crítica
Robo de API Key Credenciales del usuario ~ Responsabilidad del usuario — usá variables de entorno, rotá las keys, nunca expongas en frontend Alta
Man-in-the-middle en llamadas API Red ✓ Prevenido — todo el tráfico de la API usa HTTPS/TLS Alta
Inyección maliciosa de memorias Estado del proyecto ~ Mitigado — las memorias están limitadas al dueño de la API Key; el Motor de Consolidación valida coherencia semántica Media
Colusión de validadores (>50% firmantes) Consenso blockchain ~ Mitigado — Clique PoA requiere mayoría; el set de validadores se expandirá a 21 asientos Media
Ataque de replay (reenviar ancla vieja) Smart contract ✓ Prevenido — el contrato rastrea números de versión; la misma versión no puede re-anclarse Media
Inferencia de contenido desde hashes Privacidad ✓ Prevenido — SHA-256 es unidireccional; el contenido no puede revertirse desde el hash Baja
DDoS a la API Disponibilidad ~ Mitigado — rate limiting (30–600 req/min según plan); blockchain no se ve afectada Media

Fuera de alcance

ChainMemory no protege contra:

  • Usuario almacenando información falsa — si guardás una mentira como memoria, ChainMemory la ancla fielmente. El sistema garantiza integridad (los datos no cambiaron), no veracidad (los datos eran correctos).
  • Dispositivo del usuario comprometido — si tu máquina tiene malware, tu API Key y datos locales están expuestos antes de llegar a ChainMemory.
  • Alucinaciones de la IA — ChainMemory almacena lo que vos guardás, no lo que una IA genera. No valida si la salida de la IA fue precisa.
Defensa en profundidad El modelo de seguridad de ChainMemory sigue defensa en profundidad: incluso si la API centralizada es comprometida, la capa on-chain provee un mecanismo de verificación independiente. Ningún punto único de falla puede corromper silenciosamente el historial del proyecto.

VERIFICACIÓN INDEPENDIENTE

Verificá anclas on-chain sin confiar en nadie

No necesitás la API de ChainMemory para verificar que un estado de proyecto fue anclado en un bloque específico. Esta página muestra cómo verificar directamente contra la blockchain usando herramientas Web3 estándar.

Qué necesitás

  • El hash del estado del proyecto (de la API o compartido por alguien)
  • El hash de la transacción o número de bloque del ancla
  • Node.js con ethers instalado — o cualquier librería Web3

Paso 1 — Obtener los datos del ancla

Usá el endpoint público (sin autenticación) de ChainMemory o recibilos de quien compartió la prueba:

bash
curl https://api.chainmemory.ai/v1/project/chainmemory/state/anchor
Respuesta
{
  "project": "chainmemory",
  "projectId": "0x77f7d980...",
  "version": 8,
  "state_hash": "0xa6c45d1db753b1ec96240d169b2d91fb0ce76112558b302a8822b2988aeb8212",
  "anchor": {
    "status": "anchored",
    "onchain_anchor_id": 8,
    "tx_hash": "0x95b732d20b8935a2...",
    "block_number": 173831,
    "contract": "0xa7A8BA51950255b3e223a6745597C67009Fe7875"
  },
  "verify": "ProjectStateAnchor.getStateAnchor(projectId, version)"
}

Paso 2 — Verificar on-chain con Ethers.js

Conectate directamente al RPC de ChainMemory y leé el smart contract. Sin API Key, sin cuenta, sin confianza requerida.

javascript
import { ethers } from 'ethers';

// Conectar al RPC de ChainMemory — sin API Key necesaria
const provider = new ethers.JsonRpcProvider('https://rpc.chainmemory.ai');

// Contrato ProjectStateAnchor
const CONTRACT = '0xa7A8BA51950255b3e223a6745597C67009Fe7875';
const ABI = [
  'function getStateAnchor(bytes32 projectId, uint64 version) view returns (bytes32 stateHash, uint256 anchoredAt, address anchoredBy, uint256 anchorId)'
];

const contract = new ethers.Contract(CONTRACT, ABI, provider);

// El project ID es el keccak256 del nombre del proyecto
const projectId = ethers.keccak256(ethers.toUtf8Bytes('chainmemory'));
const version = 8;

// Leer directamente de la blockchain
const [stateHash, anchoredAt, anchoredBy, anchorId] = await contract.getStateAnchor(projectId, version);

console.log('Hash on-chain del estado:', stateHash);
console.log('ID de ancla:', anchorId.toString());
console.log('Anchored at:', new Date(Number(anchoredAt) * 1000).toISOString());

// Comparar con el hash que recibiste
const expectedHash = '0xa6c45d1db753b1ec96240d169b2d91fb0ce76112558b302a8822b2988aeb8212';
if (stateHash === expectedHash) {
  console.log('VERIFICADO — el estado coincide con el ancla on-chain');
} else {
  console.log('DISCREPANCIA — el estado fue manipulado');
}
javascript
const Web3 = require('web3');

const web3 = new Web3('https://rpc.chainmemory.ai');

const CONTRACT = '0xa7A8BA51950255b3e223a6745597C67009Fe7875';
const ABI = [{
  name: 'getStateAnchor',
  type: 'function',
  stateMutability: 'view',
  inputs: [
    { name: 'projectId', type: 'bytes32' },
    { name: 'version', type: 'uint64' }
  ],
  outputs: [
    { name: 'stateHash', type: 'bytes32' },
    { name: 'anchoredAt', type: 'uint256' },
    { name: 'anchoredBy', type: 'address' },
    { name: 'anchorId', type: 'uint256' }
  ]
}];

const contract = new web3.eth.Contract(ABI, CONTRACT);

const projectId = web3.utils.keccak256('chainmemory');

const result = await contract.methods.getStateAnchor(projectId, 8).call();
console.log('Hash on-chain del estado:', result.stateHash);
console.log('ID de ancla:', result.anchorId);

Paso 3 — Verificar la transacción

También podés verificar la transacción cruda que creó el ancla:

javascript
// Leer la transacción directamente
const tx = await provider.getTransaction('0x95b732d20b8935a286869d90e60a40f5c31d350a94e27bfd7845770fe0c3e2c3');
console.log('From:', tx.from);       // Debería ser un validador conocido
console.log('To:', tx.to);           // Debería ser la dirección del contrato
console.log('Block:', tx.blockNumber);

// Leer el bloque para confirmar timestamp
const block = await provider.getBlock(tx.blockNumber);
console.log('Hora del bloque:', new Date(block.timestamp * 1000).toISOString());
Verificación zero-trust Todo este proceso requiere cero interacción con los servidores de ChainMemory. Te conectás directamente al endpoint RPC de la blockchain y leés el smart contract. Incluso si la API de ChainMemory estuviera comprometida o caída, los datos on-chain siguen siendo verificables.
Alternativa con MetaMask También podés verificar visualmente: agregá la red ChainMemory a MetaMask, navegá a la dirección del contrato en el Explorer, e inspeccioná los datos de la transacción manualmente.

FAQ

Generales

ChainMemory es gratis?

Sí. El plan Faucet es gratuito e incluye almacenamiento de memorias, inyección de contexto, y Project Brain (el visor de Project State). El faucet te da AIC gratis para interactuar con la blockchain.

Mis memorias son privadas?

Sí. Tus memorias solo son accesibles con tu API key. Lo único público son los hashes on-chain (que no revelan contenido) y el endpoint de verificación (que solo expone metadata, nunca contenido).

Qué pasa si la IA generó contenido incorrecto en una memoria?

Las memorias capturan lo que se dijo en la conversación. Si la IA generó información incorrecta y vos la guardaste, esa memoria reflejará el error. Podés archivar memorias incorrectas y el Motor de Consolidación priorizará las más recientes.

Puedo usar ChainMemory con modelos locales?

Sí, vía API REST. Cualquier aplicación que haga llamadas HTTP puede guardar y recuperar memorias. También podés configurar el servidor MCP con modelos locales o self-hosted.

Qué es el Motor de Consolidación?

Es un pipeline que analiza tus memorias usando un modelo de IA y extrae información estructurada: decisiones, hitos, riesgos, stack. El resultado es el Project State, cuyo hash se ancla on-chain.

Qué pasa si mi IA dice cosas contradictorias entre sesiones?

El Motor de Consolidación maneja contradicciones vía precedencia temporal: las memorias más nuevas reemplazan a las más viejas. Las decisiones reemplazadas permanecen en el estado con status "reemplazada", así siempre tenés el historial completo. Ver Resolución de conflictos para más detalles.

Puedo exportar mis datos?

Sí. Todas tus memorias y estados de proyecto son accesibles vía la API REST. Podés obtenerlos en formato JSON y procesarlos como necesités.

Planes, límites y cuotas

RecursoFreeStarterProTeamEnterprise
Precio$0$9/mes$29/mes$79/mes planodesde $299/mes
Memorias/mes1005005.00050.000Ilimitadas
Injects/mes5151001.000Ilimitados
Proyectos31025IlimitadosIlimitados
Usuarios111Hasta 10Ilimitados
Retención90 días1 añoIlimitadaIlimitadaIlimitada
Requests API/min3060120300600
Créditos AIC/mes (uso + obsequio)1 de bienvenida30 + 60120 + 250600 + 1.300Custom
RBAC + audit trail compartido4 roles4 roles + SSO

Las memorias nunca se borran: al superar la ventana de retención de tu plan se archivan, y su hash on-chain existe para siempre. Al subir de plan recuperás el acceso completo a tu historial. El AIC de obsequio se acumula mes a mes, no expira y se libera según el calendario del protocolo.

LÍMITES Y CUOTAS

Los fees de protocolo en AIC son idénticos en todos los planes: una cuenta Free y una Enterprise pagan lo mismo por operación. Lo que cambia el plan es el volumen — y cuánto de ese volumen el sistema hace cumplir hoy. Las dos cosas están abajo, separadas a propósito.

Límites por plan

LímiteFreeStarterProTeamEnterprise
Memorias por mes1005005.00050.000ilimitado
Inyecciones por mes5151001.000ilimitado
Proyectos simultáneos31025ilimitadoilimitado
Usuarios11110ilimitado
Claves de proyecto0005ilimitado
Retención90 días365 díasilimitadailimitadailimitada
Requests por minuto3060120300600
AIC mensuales — uso + obsequio30 + 60120 + 250600 + 1.300a medida

Estos son los valores de la tabla tier_entitlements que el servidor lee en tiempo de ejecución, no un resumen de marketing. Un valor ilimitado se guarda como -1, y el chequeo se saltea por completo.

Qué se reinicia, y cuándo

  • Las memorias y las inyecciones son mensuales. El contador vuelve a empezar el primer día de cada mes a las 00:00 UTC. Free te da 100 memorias por mes, no 100 en total.
  • Los proyectos son un tope simultáneo, no una cuota mensual: es cuántos podés tener a la vez. Borrar uno libera un lugar.

Qué se hace cumplir hoy

El servidor chequea tres operaciones contra tu plan: guardar una memoria, inyectar contexto y crear un proyecto.

Hoy los límites avisan, no bloquean Cuando pasás un límite, el evento queda registrado y la respuesta trae una cabecera X-Plan-Limit-Warning — pero el pedido se completa igual. El bloqueo llega junto con el cobro real; cuando cambie, esta página lo va a decir.

Con el bloqueo activo, pasarse de un límite devuelve 402 con plan_limit_reached, el límite, tu consumo y un enlace para subir de plan. Un límite nunca toca tus datos: leer, verificar y exportar siguen funcionando igual.

Qué está declarado pero todavía no se aplica

Estos valores están publicados, los devuelve la API y son parte del plan — pero nada actúa sobre ellos todavía. Los listamos acá en vez de dejar que se descubran solos:

  • Requests por minuto — el número es real y está documentado, pero hoy ningún limitador lo lee.
  • Retención — no se archiva ni se elimina nada cuando vence el período. Las memorias no se borran nunca en ningún caso, y la huella on-chain es permanente sin importar el plan.
  • Usuarios y claves de proyecto — el módulo de organizaciones los emite; el tope no se chequea al emitirlos.
  • Asignación mensual de AIC — los montos están definidos pero la acreditación no está implementada. La propia API lo dice: crediting: "Sprint B3 (pendiente)".
Verificá tus propios números GET /v1/billing/status devuelve tu tier efectivo y de dónde sale, el modo de enforcement vigente, todos los límites de arriba, y tu consumo en lo que va del mes. Lee la misma fuente que describe esta página, así que las dos no pueden separarse.

Changelog

MCP v2.4.0 (Junio 2026)

  • Nuevo tool: update_project_state — Consolidación autónoma vía MCP. Cualquier cliente de IA puede proponer operaciones estructuradas para actualizar el Project Brain; el servidor valida, aplica y ancla on-chain.
  • Gramática de 22 operaciones para mutaciones de estado (decisiones, hitos, riesgos, métricas, vocabulario, y más)
  • Procesamiento resiliente: las ops inválidas se rechazan individualmente, las válidas se aplican igual
  • Vinculación de evidencia vía evidence_memory_ids — el servidor resuelve event hashes y construye pruebas Merkle automáticamente
  • Arquitectura: “el cliente consolida, la cadena verifica”

Plataforma — Junio 2026

  • Project Brain consolidado y anclado on-chain (versiones v1–v8, verificable públicamente)
  • Búsqueda semántica reescrita (más rápida, ~2.4s)
  • Escritura no-custodial probada end-to-end (el cliente firma, el server nunca tiene la llave)
  • Cifrado en reposo (AES-256-GCM) de las API keys
  • Endpoint de verificación pública: GET /v1/verify/:name

v3.0.9 (Junio 2026)

  • Fix: Project Brain muestra decisiones y riesgos correctamente (schema Fase 2)
  • Fix: Numeración de memorias muestra número secuencial del usuario

v3.0.0 (Mayo 2026)

  • Project Brain: visualización del estado consolidado
  • Motor de Consolidación: pipeline completo
  • Anclaje on-chain de Project State
  • API de verificación pública

v2.0.0 (Abril 2026)

  • Servidor MCP para Claude Desktop y Cursor
  • Inyección de contexto automática
  • Soporte para 5 plataformas de IA