El formato de la carpeta y de los objetos cifrados
Mentor 0.20.0 · 21 de octubre de 2026
Tu memoria es tuya también por esto: con lo que hay en esta página, cualquiera puede escribir un programa que la lea, la escriba o la lleve a otro sitio, sin Mentor y sin pedir permiso. La licencia de Mentor lo deja: el formato de la carpeta y el de los objetos cifrados se pueden usar libremente para leer, escribir o trasladar la memoria de cualquier persona.
Son dos cosas. La carpeta es tu memoria en claro, en cada uno de tus dispositivos. Los objetos cifrados son lo que va al almacén cuando sincronizas, y nadie puede leerlos sin tu código.
La carpeta
Una carpeta de archivos markdown, en UTF-8. Si no eliges otra, en Documentos\Mentor en Windows, y en el Mac en Mentor, dentro de tu carpeta de inicio.
| Archivo | Para qué | |
|---|---|---|
perfil.md | Obligatorio | Lo que Mentor pone al empezar cada chat: quién eres cuando trabajas. Es lo único que va a los chats sin que lo pidas. |
quien-soy.md | Obligatorio | Quién eres, lo de dentro. No va al empezar los chats: lo lee la revisión semanal, y lo puede encontrar una búsqueda que pida la IA, que ves en la caja antes de enviarla. |
aprendizajes.md | Obligatorio | El buzón: lo que la IA aprende de ti entre revisiones. Lo último apuntado va detrás del perfil, salvo que lo quites. |
perfil-<cliente>.md | Opcional | El perfil de un cliente, que va detrás de perfil.md en los chats que son para él. |
aprendizajes-<cliente>.md | Opcional | El buzón de un cliente: lo que se apunta en sus chats, que solo va a sus chats. |
bitacora/AAAA-MM.md | Opcional | Qué pasó cada día, un archivo por mes. |
instrucciones.md, rutinas/ | Opcional | Para una IA que trabaja con la carpeta entera, como Claude Code o Cowork. |
conflictos/ | La crea Mentor | La copia de un archivo que dos dispositivos cambiaron a la vez: no se pierde nada. |
| Cualquier otra cosa | Libre | Mentor no la toca. Si es markdown, la puede encontrar una búsqueda. |
Dónde va cada archivo
- Mentor busca cada archivo por su nombre. Lo normal es que esté en la raíz de la carpeta.
- Fuera de la raíz vale si hay uno solo, para que una carpeta que ya existía no tenga que mover nada. Si hay uno en la raíz y otro dentro, manda el de la raíz.
- Si no hay ninguno en la raíz y hay dos o más dentro, Mentor no sabe cuál es el bueno, y no usa ninguno.
- Lo que empieza por un punto no cuenta, sea carpeta o archivo, como
.obsidiano.git: son ajustes de otros programas, y no se sincronizan. - Los nombres van en minúsculas. Los archivos que no son markdown pueden estar, pero Mentor no los lee.
El perfil
Va entero a cada chat nuevo, menos lo que esté entre <!-- y -->: los comentarios son para quien lo escribe. Unas 300 palabras, porque va en el primer mensaje de cada chat y lo largo estorba. Nada que identifique a otras personas, porque llega a un proveedor de IA. La plantilla con la que empieza:
# Perfil <!-- Esto es lo que Mentor pone al principio de cada chat nuevo con una IA: quién eres cuando trabajas. Lo verás en la caja de texto antes de enviarlo, y ahí puedes cambiarlo para ese chat. --> ## A qué me dedico ## En qué estoy ahora ## Lo que domino y lo que no ## Cómo quiero que me respondas
Los clientes
Un cliente es un archivo perfil-<nombre>.md, y su nombre es el del archivo: perfil-envasadora.md es «envasadora». El nombre va en minúsculas, sin tildes ni espacios, con letras, números y guiones. Lo suyo se suma a lo general: en el chat de un cliente van perfil.md, lo apuntado en aprendizajes.md y, detrás, su perfil y lo apuntado en sus chats, en aprendizajes-<nombre>.md. Ningún chat ve el buzón de otro cliente.
El buzón
Cada entrada es una línea de lista, con la fecha en negrita, un punto medio entre espacios y lo aprendido en una frase. Detrás, si la hay, la frase de la persona entre comillas. Lo que es deducción de la IA, y no algo que la persona haya dicho, lleva ⚠️.
- **2026-10-05** · Los jueves por la tarde no hay hueco para nada que no sea el taller — *"El jueves ni me lo propongas."* - **2026-10-06** · ⚠️ Puede valer también para los correos a clientes
Lo demás del archivo es libre: títulos, secciones y notas no cuentan. Las entradas nuevas van al final.
Los objetos cifrados
Cuando activas la sincronización en «Tus dispositivos», cada cambio de tu carpeta va al almacén dentro de un sobre cifrado en tu dispositivo. Todo usa algoritmos estándar: HKDF-SHA256 (RFC 5869), AES-256-GCM, gzip y JSON.
El código de tu memoria
Un secreto al azar de 128 bits, que nace al instalar la app. Se guarda en el Administrador de credenciales de Windows o en el Llavero del Mac, como Mentor/boveda, y en ningún archivo. Quien tiene el código tiene la memoria.
Se enseña como 12 palabras, con las listas de BIP39, en castellano: los 128 bits y 4 de comprobación, que son los primeros del SHA-256 del código, en 12 grupos de 11 bits. De BIP39 solo se usa esa forma de escribirlo, no su frase de paso ni su semilla. Al leerlas valen en castellano o en inglés, con o sin tildes, y bastan las cuatro primeras letras de cada una.
El QR de «Tus dispositivos», para el teléfono, lleva el código en base32, sin relleno, y la dirección del almacén si no es el de Radamant:
mentor://boveda?c=<el código en base32>&a=<la dirección del almacén>
Lo que sale del código
Con HKDF-SHA256, el código como secreto, sin sal, y un nombre distinto para cada cosa. De las dos primeras no se puede volver al código ni llegar a la llave.
| Qué | info | Largo | Cómo se escribe |
|---|---|---|---|
| El identificador de la bóveda | mentor/boveda | 10 bytes | base32 en minúsculas, sin relleno: 16 letras y números |
| La credencial del almacén | mentor/credencial | 32 bytes | hexadecimal, 64 caracteres |
| La llave | mentor/llave | 32 bytes | no sale nunca de tus dispositivos |
El sobre de cada objeto
"MNT1" 4 bytes: la marca y la versión del formato sal 16 bytes al azar cifrado y etiqueta AES-256-GCM, con la etiqueta de 16 bytes al final
- La llave del objeto es HKDF-SHA256 con la llave de la bóveda como secreto, la sal del sobre como sal y
mentor/objetocomoinfo: 32 bytes. Cada objeto tiene la suya, así que el nonce de GCM es siempre de doce bytes a cero. - Los datos asociados atan el sobre a su sitio:
mentor/1, un salto de línea, el identificador de la bóveda, un salto de línea y el nombre del objeto dentro de la bóveda, comocambios/<dispositivo>/<número>. Un sobre cambiado de sitio, de otra bóveda o tocado no se abre. - Lo de dentro es JSON, comprimido con gzip.
Los objetos
Sus nombres no dicen nada de tu memoria: solo qué dispositivo los escribió, que es un número al azar de 8 bytes en base32 en minúsculas, y en qué orden.
| Nombre | Qué lleva |
|---|---|
dispositivos/<dispositivo> | {"nombre", "desde"}: cómo se llama el dispositivo y desde cuándo está. |
cambios/<dispositivo>/<número> | Un archivo que ha cambiado: {"ruta", "bases", "hora", "dispositivo", "nombre", "borrado", "datos"}. ruta, relativa a la carpeta, con «/»; datos, el archivo entero, en base64; bases, los nombres de los cambios de los que sale; hora, cuándo se escribió el archivo. |
fotos/<dispositivo>/<número>_<cubre> | La carpeta entera: {"hora", "dispositivo", "nombre", "cubre", "archivos": [{"ruta", "version", "hora", "datos"}]}. version es el nombre del cambio del que sale cada archivo. |
mudanza | Solo en la bóveda de un código cambiado: {"de", "hora", "dispositivo", "nombre"}, con las bóvedas de antes, la más reciente primero. |
- Los números van con doce cifras, para que el orden de los nombres sea el de los números. Los cambios de cada dispositivo van seguidos.
cubredice hasta qué cambio de cada dispositivo lleva la foto, comod1-12.d2-3. Va sin cifrar para que el almacén pueda quitar cambios viejos sin leer nada.- Las horas van como en JSON de siempre, en RFC 3339.
- No se sincroniza lo que empieza por un punto ni un archivo de más de 32 MB.
Cómo se juntan los cambios
- Los archivos que crecen,
aprendizajes.md, los buzones de cada cliente y lo debitacora/, se funden sumando líneas: lo que añade cada dispositivo se queda, y lo que uno borró de la versión de la que salen los dos se queda borrado. - En los demás, si dos dispositivos cambian el mismo archivo a la vez, se queda el más reciente, y el otro se guarda en
conflictos/, con la fecha, el dispositivo y el nombre. - Si un archivo se borra en un dispositivo y cambia en otro, se queda el cambiado.
El almacén
A un almacén Mentor le pide tres cosas: poner un objeto nuevo, traerlo y listar por prefijo desde un nombre. En el día a día, los dispositivos no cambian ni borran nunca un objeto que ya está; solo al cambiar el código, abajo. Hay dos formas, con los mismos objetos:
- Un almacén de bóvedas, como el de Radamant,
https://almacen.radamant.eu, que es el de serie. Habla S3:PUT,GETyListObjectsV2, con las direcciones en la ruta y la firma de AWS versión 4, en la regiónus-east-1. El cubo esmentor; cada bóveda firma con su identificador como clave de acceso y su credencial como secreto, y sus objetos van debajo de<identificador>/. Una bóveda nueva se da de alta conPOST /_bovedasy{"id", "credencial"}. Vale otro servidor que hable igual, en su dirección. - Una carpeta, como la que sincroniza el programa de tu cloud: cada objeto es un archivo con su nombre, debajo de una carpeta con el identificador de la bóveda. En la app, con «Usar otro almacén», la dirección es
carpeta:seguido de la ruta.
Lo que ve el almacén: cuánto ocupa cada objeto, cuándo llega, tu dirección IP, cuántos dispositivos tienes y cuántos cambios hace cada uno. No ve el nombre de tus archivos, ni lo que dicen, ni cuántos hay.
Cambiar el código
Con «Cambiar el código», en «Tus dispositivos», la memoria pasa a una bóveda nueva, porque el identificador, la credencial y la llave salen los tres del código. Cada objeto se abre con la llave de antes y se cierra con la nueva, con el mismo nombre, y al final se escribe el objeto mudanza. La bóveda de antes se borra.
¿Falta algo para escribir tu propio programa? Escríbenos a contacto@radamant.es.