Engraphis
Motor de memoria AI local-first para agentes de codificación con decaimiento de Ebbinghaus, hechos bi-temporales y recuperación híbrida.
Documentación
Engraphis
https://discord.com/invite/Wfr2ejBmY
Dale a tus agentes de IA una memoria. Mírala, búscala y mantenla, todo en una hermosa interfaz web en tu propia máquina.
Grafo de conocimiento · ejecuta engraphis-dashboard para verlo en vivo
Fundamentado, no adivinado. Memoria con recibos. Local por defecto. Explora la galería de pruebas o lee la guía de campaña.
Límite de núcleo abierto: este repositorio contiene el motor local gratuito, el panel de control, el servidor MCP y los clientes del lado del cliente. Los servicios alojados de sincronización, análisis, automatización y equipo se ejecutan en el servicio alojado oficial; sus implementaciones de servidor no se distribuyen aquí.
Apoya el desarrollo continuo de Engraphis con Pro. Inicia una prueba de Pro de 3 días o suscríbete a Pro.
Ahorros medidos de tokens y contexto
Estimador en tiempo de ejecución
Las vistas de Resumen y Auditoría/Recibos del panel también muestran una estimación respaldada por recibos de las entregas de contexto reales. Compara el historial del host o la línea base de fuentes recuperadas con el contexto que Engraphis realmente emitió, mantiene los contadores de tokens y las versiones de lanzamiento separados, y etiqueta las reducciones de historial adaptativo por separado de los ahorros de empaquetado. Los recibos sin metadatos de estimador permanecen históricos/sin clasificar. Esto mide la reducción estimada del contexto del prompt; no mide la facturación del proveedor. La API /context-savings y la herramienta MCP engraphis_context_savings agregan el historial completo en todos los espacios de trabajo visibles de forma predeterminada, o aceptan un espacio de trabajo explícito más filtros opcionales de from_ts, to_ts y release_version.
Menos historial repetido significa más espacio para la tarea, las herramientas y la evidencia útil.
Consulta los detalles de referencia y reproduce los resultados
Ejemplo controlado de antes y después
| Modo de recuperación | Contenido medio de memoria devuelto | Recall@5 |
|---|---|---|
| Documentos completos | 740.3 tokens | 1.000 |
| Fragmentos conscientes de la estructura de Engraphis | 214.3 tokens | 1.000 |
El modo fragmentado devuelve el pasaje relevante en lugar del documento completo: 526.0 tokens menos por pregunta. Bajo el mismo presupuesto de contexto del modelo, eso deja aproximadamente 526 tokens para instrucciones de tarea u otra evidencia relevante. Esta es la ID de evidencia offline-chunking en el artefacto registrado a continuación.
Detalles de medición y reproducibilidad
La tabla a continuación contiene cada agregado exacto de tokens/contexto publicado actualmente aquí y mantiene explícito su límite de conteo.
| Qué se cuenta | Comparación | Reducción medida | Calidad mantenida constante |
|---|---|---|---|
| Contenido de memoria top-5 recuperado, promediado por pregunta | Documentos completos: 740.3 tokens → fragmentos conscientes de la estructura: 214.3 tokens | 526.0 tokens menos por pregunta (71.1% menos, aproximadamente 3.5× más pequeño) | Recall@5 1.000 en ambos modos en 6 documentos y 18 preguntas |
| Memoria devuelta más pequeña que contiene la evidencia de referencia | Documentos completos: 162.2 tokens → fragmentos: 42.4 tokens | 119.8 tokens menos hasta la evidencia (73.9% menos, aproximadamente 3.8× más pequeño) | Las mismas 18 preguntas tuvieron una memoria con evidencia devuelta en ambos modos |
| Proxy de carga útil de recuperación completa versus compacta en una pasada de 26 preguntas dentro de una ejecución de CodeMem de 260 recuperaciones cronometradas | Proxy completo: 23,810 tokens engraphis.regex.v1 → proxy compacto: 10,202 tokens | 13,608 tokens de proxy evitados (57.15% menos) | 26 muestras de carga útil; 260 recuperaciones cronometradas; Recall@5, hit@5 y recall de tokens de respuesta todos 1.000 |
| Uso de contexto de prompt empaquetado en la misma pasada de muestra de CodeMem de 26 preguntas | Presupuesto duro: 1,500 tokens; media observada: 85.38; máximo observado: 108 | Un límite duro evita que una recuperación exceda su presupuesto de contexto configurado | Esto es contabilidad de uso, no una comparación de ahorro antes/después |
Estos valores son las ID de evidencia offline-chunking y offline-performance en offline-fixtures-v1.json, SHA-256 c3a74f1770ad3f868f55261ba11680e2dadca30167082ac2cb6669f9e3bdfad2. BENCHMARKS.md registra el resumen del conjunto de pruebas correspondiente, los comandos exactos y los resúmenes de configuración por comando. Los resultados externos, dependientes del modelo, de consolidación, productividad y latencia permanecen sin publicar hasta que exista la misma evidencia para ellos.
La forma de carga útil compacta evita duplicar cuerpos de memoria completos cuando el contexto empaquetado y la lista de fuentes son suficientes. El evaluador tokeniza proxies de carga útil completos y compactos con forma JSON construidos a partir de resultados de recuperación; no serializa el sobre MCP ni mide una respuesta de transporte. Por lo tanto, el fixture no mide cargos del proveedor de modelos, tiempo de tarea de extremo a extremo ni ahorro de costos del cliente.
Las medidas son deliberadamente separadas y no deben sumarse: el fragmentado cuenta el contenido de los registros de memoria recuperados antes de ContextPacker, mientras que la recuperación compacta cuenta un proxy de carga útil con forma JSON serializada. "Tokens hasta la evidencia" es el tamaño del registro de memoria recuperado más pequeño que contiene la evidencia de referencia; no es latencia ni precisión de respuesta de extremo a extremo. El fragmentado crea registros almacenados más enfocados, por lo que este es un resultado de eficiencia de contexto, no una afirmación de reducción de almacenamiento.
Reproduce las mediciones registradas de calidad y tokens/contexto sin conexión de red ni clave API:
python -m eval.grounded
python -m eval.chunking_eval --dataset eval/datasets/longdoc.jsonl --k 5
python -m eval.performance --dataset eval/datasets/codemem.jsonl --k 5 --iterations 10 --json
Estos son fixtures pequeños y deterministas de corrección y eficiencia, no puntuaciones oficiales de QA de LoCoMo / LongMemEval ni un resultado de tabla de clasificación de terceros. Los conteos de respuesta compacta usan el contador exacto engraphis.regex.v1; la evaluación de fragmentado usa su estimador documentado y determinista de caracteres normalizados. El fragmentado mide el contenido de memoria recuperado, mientras que la recuperación compacta mide un proxy de carga útil con forma JSON serializada, no una respuesta de transporte MCP. Consulta el artefacto registrado y BENCHMARKS.md para definiciones, limitaciones y requisitos canónicos de evaluación externa.
Instalación completa de Engraphis: pip install "engraphis[all]"
La instalación completa de engraphis[all] es la forma predeterminada de usar Engraphis: incluye el panel local, el servidor Smart MCP, documentos, el cliente de Cloud Sync y las integraciones opcionales compatibles. Se requiere Python 3.10+.
pip install "engraphis[all]"
engraphis-dashboard
El panel se abre en http://127.0.0.1:8700. La memoria local no necesita cuenta ni clave API.
Opciones de instalación más pequeñas
Usa un paquete más pequeño solo cuando necesites intencionalmente una superficie limitada. El núcleo solo con NumPy continúa soportando Python 3.9+.
| Objetivo | Instalar | Iniciar |
|---|---|---|
| Panel local y API REST | pip install "engraphis[server]" | engraphis-dashboard |
| Memoria para agentes de codificación sobre Smart MCP | pip install "engraphis[mcp]" | codex mcp add engraphis -- engraphis-mcp |
| Aceleración vectorial nativa de SQLite | pip install "engraphis[vector]" | Los puntos de entrada del servidor lo seleccionan automáticamente |
| Biblioteca Python sin conexión | pip install engraphis | MemoryService.create("engraphis.db") |
Para clientes MCP distintos de Codex, configura un servidor stdio cuyo comando sea engraphis-mcp; consulta la guía de conexión de agentes.
Actualización
Usa engraphis-update para actualizar la instalación usando su método de instalación detectado. Los metadatos del paquete no registran qué extras se seleccionaron, por lo que el actualizador usa por defecto el superconjunto seguro engraphis[all] en lugar de eliminar silenciosamente una superficie opcional. Para una selección deliberada, establece ENGRAPHIS_UPDATE_EXTRAS a una lista separada por comas (por ejemplo server,mcp), o establécelo a none solo para el paquete base.
Actualización a 1.4:
engraphis-mcpahora expone la puerta de enlace Smart de nueve herramientas. Las integraciones que requieren los 34 nombres de herramientas directos anteriores deben ejecutarengraphis-mcp-classic. El esquema SQLite en la versión 1.4.0 era la versión 9. Las bases de datos existentes v7-a-v8 ya contienenconfidenceypinned_at/unpinned_at; v9 agrega la columna/tabla de alcance de repositoriomemory_tombstonesy realiza una reparación de canonización de entidades de una sola vez, luego migra automáticamente en la primera apertura. Una tumba con unrepo_idconocido es terminal solo en ese repositorio; las tumbas heredadas sin repositorio permanecen globales. Consulta las notas de la versión 1.4.0.
Actualización a 1.5: el esquema 10 limita el estado de retención heredado y el esquema 11 rellena la aprobación explícita solo para memorias locales previas a la revisión elegibles. La evidencia pendiente y en cuarentena permanece bloqueada. Las bases de datos 1.4.x existentes migran automáticamente cuando Engraphis 1.5 las abre; consulta las notas de la versión 1.5.
Actualización a 1.6: las bases de datos 1.5 existentes migran automáticamente a través del esquema 12, que clasifica los marcadores de borrado sin contenido antes de la sincronización: los marcadores existentes se vuelven
never_exportsolo locales, mientras que los nuevos borrados seguros se vuelvenremote_erasuresolo para registrosworkspace/repono secretos ya elegibles para compartir. El esquema 13 agrega relojes lógicos híbridos por memoria para la sincronización determinista de estado descriptivo y prueba duradera sin contenido de que una memoria cruzó un límite de sincronización. El esquema 14 agrega la colección de Obsidian y los manifiestos de importación; el esquema 15 los generaliza a documentos locales neutrales en cuanto a fuente, preserva el linaje temporal de la fuente a través de reimportaciones, vincula adaptadores y alcances objetivo, y retiene solo metadatos de formato/resultado por trabajo acotados y sin contenido. La migración del esquema 16 persiste el objetivo de sesión opcional de cada trabajo de importación y requiere que el linaje de fuente y los adjuntos de elementos de trabajo permanezcan en esa sesión exacta. Consulta las notas de la versión 1.6.
Qué le da Engraphis a un agente
Un agente no debería tener que reconstruir un proyecto a partir de historiales de chat dispersos en cada tarea. Engraphis convierte el conocimiento local del proyecto en memoria con alcance y consciente del tiempo; recupera la evidencia que respalda la pregunta actual; y devuelve un paquete de contexto acotado y atribuible.
La tarea central es la continuidad: recuperar la decisión actual y respaldada del proyecto sin arrastrar todo el historial al siguiente prompt. Consulta ahorros medidos de tokens y contexto para la versión corta de cuánto menos historial tiene que llevar un agente.
| Necesidad del agente | Qué cambia Engraphis |
|---|---|
| Recordar un proyecto entre sesiones | Almacena memoria tipada en una jerarquía workspace → repo → session y proporciona una transferencia de última sesión. |
| Encontrar soporte para la tarea actual | Fusiona recuperación vectorial, léxica, de grafo y consciente del código en lugar de depender de una sola señal de búsqueda; fast puede omitir el recorrido del grafo para bóvedas pequeñas o sensibles a la latencia. |
| Saber qué es verdad ahora y qué cambió | Preserva el historial bi-temporal y las cadenas de supersesión en lugar de sobrescribir silenciosamente un hecho. |
| Evitar conjeturas confiadas | Devuelve evidencia citada o se abstiene explícitamente cuando el soporte es demasiado débil. |
| Evitar arrastrar todo el proyecto a cada prompt | Empaqueta el contexto a un presupuesto duro configurado y puede devolver una respuesta MCP compacta. |
| Mantener el conocimiento bajo el control del operador | Funciona local-primero y capaz sin conexión, con alcances, registros de auditoría y recibos opcionales seguros para la privacidad. |
Panel y UI local
El panel de Engraphis se abre http://127.0.0.1:8700. La memoria local no necesita cuenta en la nube, registro ni clave API, y permanece en un archivo SQLite en tu máquina.
Ledger es la interfaz local principal para recuperación, memorias, exploración de grafos, procedencia, espacios de trabajo y consolidación manual. Classic preserva el conjunto completo de herramientas anterior; ambos usan los mismos datos locales. Cambia en Manage → Settings → Interface (Ledger) o Settings → Appearance & Engine (Classic).
Inícialo en todas las plataformas
| Plataforma | Cómo |
|---|---|
| Windows | Haz doble clic en Engraphis Dashboard en tu Escritorio o Menú Inicio (instalación: engraphis-dashboard --install-shortcuts) |
| macOS | Haz doble clic en Engraphis Dashboard.app en tu Escritorio (instalación: mismo comando) |
| Linux | Entrada de escritorio en Aplicaciones → Desarrollo (GNOME/KDE/etc.) |
| Docker | docker compose up: consulta docker-compose.yml para el despliegue de un solo comando |
| Cualquiera | engraphis-dashboard en una terminal |
En un checkout de código fuente, scripts/launch_dashboard.ps1 es solo un envoltorio de conveniencia para Windows. Delega la configuración, el estado de salud de inicio, la apertura del navegador y el ciclo de vida del proceso al mismo punto de entrada engraphis-dashboard en lugar de mantener una segunda ruta de comportamiento.
Inspección accesible primero, integrada
Inspecciona memorias, diffs de supersesión, puntuaciones de recuerdo, líneas de tiempo, enlaces, consolidación y registros de auditoría en el panel. El renderizador de grafos offline está incluido, y la interfaz es navegable por teclado con temas claro y oscuro. La exploración de grafos ofrece una vista enfocada de Alta calidad y una vista explícita respaldada por workers de Mostrar todos los nodos para proyecciones completas de entidades de hasta 20,000 nodos y 200,000 relaciones; consulta los perfiles de rendimiento de grafos.
Cómo funciona
Engraphis brinda a los agentes conocimiento de proyecto duradero, con alcance y explicable. El motor local combina decaimiento de Ebbinghaus, hechos bi-temporales y recuerdo híbrido vectorial/léxico/grafo; se ejecuta offline con SQLite, embeddings locales y solo numpy.
- Fundamentado y gobernado: resolución determinista de conflictos, respuestas citadas o abstención, corrección/promoción/olvido explícitos e historial completo.
- Listo para agentes: herramientas MCP, paquetes de contexto con presupuesto estricto, traspasos y recuperación consciente del código.
- Auditable: cadenas de recibos sin contenido, procedencia y relaciones temporales/entidad/código.
- Práctico: ingesta de archivos y código locales, PDF/OCR/transcripción opcionales y SQLCipher en reposo.
Proveedores de LLM opcionales
El motor de memoria, los embeddings, la resolución de conflictos y el recuerdo permanecen locales sin un LLM. Un proveedor configurado explícitamente añade extracción estructurada, síntesis citada, consolidación y supervisión de retención. Configúralo en Configuración → Conectar un LLM. La vista de actividad registra resultados, nunca claves, prompts ni respuestas crudas del proveedor. Consulta la guía de proveedores de LLM para opciones de configuración y privacidad.
Límite de privacidad: el texto enviado a un proveedor seleccionado explícitamente sale del proceso local bajo los términos de ese proveedor. Usa
ENGRAPHIS_RETENTION_SUPERVISOR=none(el predeterminado) y el extractor offlinechunkcuando la ingesta deba permanecer completamente local.
Elige y configura un LLM externo con la guía de proveedores de LLM, incluyendo OpenAI, Anthropic, Google, OpenRouter, Ollama, Cohere Command, Command Code Provider y otros endpoints compatibles. La guía también cubre conexiones MCP de suscripción Codex.
Instalación
pip install "engraphis[all]" # self-hosted dashboard, MCP, code graph, documents, transcription, PostgreSQL, and Cloud Sync
pip install "engraphis[server]" # dashboard + REST API
pip install "engraphis[mcp]" # MCP server only
pip install "engraphis[documents]" # PDF + image OCR bindings
pip install "engraphis[transcription]" # faster-whisper audio/video
pip install "engraphis[postgres]" # PostgreSQL schema introspection
pip install "engraphis[code]" # tree-sitter code graph indexing
pip install "engraphis[vector]" # native sqlite-vec exact-KNN acceleration
pip install "engraphis[cloud-sync]" # Cloud Sync client crypto/runtime
pip install "engraphis[encryption]" # SQLCipher encryption-at-rest extra
pip install engraphis # core library: numpy only, fully offline
La imagen oficial de Docker incluye el ejecutable local de Tesseract para OCR de imágenes. Fuera de Docker, el extra documents instala sus enlaces de Python; instala también Tesseract a través de tu sistema operativo si habilitas OCR de imágenes.
La biblioteca principal solo con NumPy es compatible con Python 3.9+. Las versiones parcheadas actuales de la pila WebUI, el SDK de MCP, el analizador de imágenes y el cliente de Cloud Sync requieren Python 3.10+, así que usa Python 3.10 o más reciente para las rutas de instalación server, mcp, documents, cloud-sync o all.
El NumpyVectorIndex predeterminado realiza un escaneo completo exacto. No hay un límite universal de recuento de memoria porque la latencia depende del tamaño del vector, el hardware, los filtros y el resto del pipeline de recuerdo. Mide tu máquina con python -m eval.vector_scale --backend numpy y luego ejecuta python -m eval.performance en un corpus representativo. Si los escaneos exactos no cumplen tu objetivo de latencia, instala engraphis[vector], crea el motor con vector_backend="sqlite-vec" y vuelve a medir. El backend estable sqlite-vec vec0 ejecuta KNN exacto en código nativo; es aceleración, no una afirmación de escalado ANN sublineal. Consulta BENCHMARKS.md para los comandos reproducibles y los límites de informes.
Los puntos de entrada de Dashboard, REST y MCP usan por defecto ENGRAPHIS_VECTOR_BACKEND=auto: usan sqlite-vec cuando el extra vector está instalado y es compatible, y luego recurren de forma segura a NumPy. Los MemoryEngine.create() y MemoryService.create() programáticos conservan el predeterminado determinista numpy a menos que se solicite un backend explícitamente. Usa python -m eval.vector_scale --backend sqlite-vec para una comparación de búsqueda directa con entrada idéntica; el tiempo de configuración/construcción del índice se excluye explícitamente del envoltorio de búsqueda cronometrado.
Los vectores persistentes fallan de forma cerrada a menos que el embedder pueda publicar una huella de espacio duradera y sin secretos. Sentence Transformers usan el commit de Hub cargado o un manifiesto de artefactos locales; cuando no se puede resolver la identidad inmutable de un modelo remoto, el recuerdo vectorial persistente permanece bloqueado en lugar de mezclar espacios. Para embeddings programáticos compatibles con OpenAI, construye ApiEmbedder con un space_version de operador/proveedor; sin él, el adaptador sigue siendo utilizable solo para embeddings efímeros. Su base_url puede ser una raíz de proveedor o una raíz /v1 y se normaliza a exactamente un endpoint /v1/embeddings.
sqlcipher3-binary publica ruedas CPython manylinux x86-64. En ese objetivo, engraphis[encryption] instala el controlador. El extra multiplataforma all lo omite deliberadamente para que all siga siendo resoluble en macOS, Windows, Linux ARM y musl; en esos objetivos, aprovisiona un controlador SQLCipher compatible por separado antes de habilitar una clave de base de datos. El núcleo programático permanece en texto plano a menos que se configure una clave de base de datos. Para una base de datos nueva, engraphis-init habilita SQLCipher automáticamente cuando hay un controlador compatible disponible, crea un sidecar de clave privada y se puede anular con --no-encryption.
Linux / macOS: si
pip installfalla conerror: externally-managed-environment, tu Python del sistema está marcado como de solo lectura (PEP 668). Instala en un entorno virtual en su lugar. Ejecutapython3 -m venv venv && source venv/bin/activate && pip install "engraphis[server]". Alternativamente, usa Docker (docker compose up).pipx install "engraphis[server]"también funciona.
La primera ejecución descarga
all-MiniLM-L6-v2(~80 MB). Sin él, el motor recurre al hashing de características determinista para que siempre se ejecute offline. Esa alternativa captura superposición léxica, no significado: el recuerdo y las respuestas MCP fundamentadas establecendegraded_mode=trueysemantic_support=false, y deshabilitan la recuperación vectorial más la evidencia de coseno semántico. Instala un modelo de embeddings declarado para la recuperación semántica.
Para requerir un modelo que ya esté local, establece
ENGRAPHIS_EMBED_MODEL=local:/absolute/model/patholocal:<cached-model-id>. Esta ruta nunca descarga un modelo. Si no está disponible, Engraphis entra explícitamente en modo degradado léxico en lugar de presentar puntuaciones de vectores hash como semánticas.
Inicio rápido: panel
pip install "engraphis[server]"
engraphis-dashboard # → http://127.0.0.1:8700
engraphis-dashboard --install-shortcuts # → Desktop + Start Menu icons
Docker
docker compose up # → http://127.0.0.1:8700
Para la persistencia de Docker Compose y la configuración del puerto de loopback, consulta la guía de despliegue de Docker. engraphis-server y engraphis server son alias de compatibilidad sin interfaz para este mismo servicio v2, por lo que cada superficie pública tiene el mismo modelo de recuerdo con alcance y retención.
Para exposición opcional en LAN, configuración de tokens y configuración de MCP HTTP, consulta la guía de despliegue de Docker.
Establece ENGRAPHIS_API_TOKEN para requerir autenticación de API y ENGRAPHIS_DB_KEY para cifrar la base de datos local en reposo. Las credenciales del plan alojado configuran clientes de clientes; no instalan implementaciones premium de servidor en esta imagen. Consulta docker-compose.yml para opciones.
Inicio rápido: servidor MCP (para agentes de codificación)
pip install "engraphis[mcp]"
engraphis-init # writes ~/.engraphis/config.env + prints config snippets
claude mcp add engraphis -- engraphis-mcp
codex mcp add engraphis -- engraphis-mcp # Codex subscription
Para la configuración y verificación de la suscripción Codex, consulta la guía de conexión de agentes y la guía de proveedores de LLM.
engraphis-mcp es Smart MCP de configuración cero: los agentes comienzan con nueve herramientas compactas para sesiones, recuerdo listo para prompts, memoria duradera, lectura/actualización de registros gobernada, revisión de conflictos, descubrimiento de acciones y ejecución segura. Para grafos de código, gobernanza, auditoría u otro trabajo avanzado, el agente llama a engraphis_discover_actions y luego al ejecutor de lectura o acción indicado; no se requiere selección de perfil. La puerta de enlace valida la capacidad descubierta nuevamente antes de ejecutarla, y los clientes siguen siendo responsables de su límite normal de aprobación de acciones destructivas.
Los clientes existentes que fijan las 34 herramientas históricas con nombre pueden usar engraphis-mcp-classic (o engraphis-mcp-http --classic). El inventario clásico completo, incluyendo engraphis_check_update, está en la referencia de herramientas MCP.
Extensión Pi
Para instalación, configuración, comandos de ciclo de vida y el límite de confianza local, consulta la guía de extensión Pi.
Proveedor Hermes
Engraphis también incluye un plugin nativo de proveedor de memoria Hermes con prefetch local, captura de turno limitada, recuerdo con alcance y borrado seguro explícito. Instala Engraphis en el entorno Python de Hermes, copia el proveedor y luego selecciónalo con hermes memory setup. Consulta la guía de integración de Hermes. El proveedor nunca se instala a sí mismo ni descarga un modelo de embeddings.
Inicio rápido: grafo de repositorio
pip install "engraphis[code]"
engraphis-graph index -w acme -r api --root .
engraphis-graph search -w acme -r api "UserService"
# `query`/`explain` blend code search with your stored memories: query matches symbol
# and file NAMES (a full question sentence won't match anything), and explain's answer
# is drawn from memories recorded against the repo; both are empty on a fresh index.
engraphis-graph query -w acme -r api "UserService"
engraphis-graph explain -w acme -r api "why does deploy depend on approval?"
engraphis-graph path -w acme -r api UserService DatabasePool
engraphis-graph impact -w acme -r api --root . --git-range origin/main...HEAD
engraphis-graph prs -w acme -r api --base main --head HEAD
engraphis-graph export -w acme -r api -o engraphis-graph-out
engraphis-graph install-merge-driver --root .
La exportación contiene graph.json, un graph.html autocontenido y GRAPH_REPORT.md. La indexación admite Python, JavaScript, TypeScript, Go, Rust, Java, C#, C, C++, SQL y Terraform. Tree-sitter se usa cuando está disponible; el backend de regex sin dependencias sigue siendo una alternativa funcional. Se indexan definiciones, métodos, llamadas, importaciones, propiedad, variables, herencia/implementación y docstrings/comentarios. La indexación es incremental por hash de contenido, respeta .engraphisignore y no sigue enlaces simbólicos de archivos fuera de la raíz del repositorio. Los bordes de llamadas se basan en nombres y son de mejor esfuerzo en lugar de resueltos por tipo. El controlador de fusión Git opcional valida JSON de grafo limitado y une nodos y bordes de forma determinista en lugar de elegir un lado de exportación.
Para una API de recuerdo y grafo de solo lectura que se pueda compartir sin exponer operaciones de escritura:
pip install "engraphis[server]"
engraphis-graph-server # API at http://127.0.0.1:8720; schema at /openapi.json
Un enlace no loopback falla de forma cerrada a menos que se establezca ENGRAPHIS_GRAPH_TOKEN (o ENGRAPHIS_API_TOKEN). Consulta el documento de arquitectura/diseño v3.
Inicio rápido: biblioteca de Python
from engraphis.service import MemoryService
mem = MemoryService.create("engraphis.db")
mem.remember("Auth migrated from JWT to PASETO.", workspace="acme", repo="api")
hit = mem.recall("why did we change auth?", workspace="acme", repo="api")
print(hit["context"])
El mismo MemoryService respalda el panel y el servidor MCP.
Las nuevas escrituras admiten visibilidad session, repo y workspace. scope="user" está reservado y rechazado hasta que los registros lleven una identidad de propietario inmutable; no debe tratarse como memoria privada por persona. Las filas históricas de alcance de usuario permanecen vinculadas al espacio de trabajo por compatibilidad.
Después de una actualización, stats() informa recuentos de elegibilidad para prompts y cobertura activa del espacio de embeddings. El recuerdo de cero resultados identifica un alcance con revisión de puerta en lugar de parecer vacío silenciosamente, y engraphis-cli review list|approve proporciona un flujo de trabajo local masivo con prueba previa. Los cambios de modelo de embeddings activan una reconstrucción protegida; el recuerdo vectorial permanece deshabilitado hasta que cada vector almacenado coincida con la nueva huella. Consulta recuperación de recuerdo.
Los hosts de agentes pueden evitar la recuperación cuando su historial existente ya encaja:
decision = mem.adaptive_context(
"what should the agent do next?",
current_history,
workspace="acme",
repo="api",
max_context_tokens=8_192,
retrieval_token_budget=1_024,
)
prompt_context = decision["context"]
La decisión es history_bypass cuando el historial encaja, retrieval cuando la evidencia compacta es fuerte y history_fallback cuando la recuperación débil debería ampliarse de nuevo al historial crudo reciente.
Para un prompt de agente, prefiere engraphis_recall_context: devuelve un context empaquetado con presupuesto estricto más sources compacto, contabilidad determinista usage (budget_tokens, context_tokens, source_tokens, saved_tokens, savings_ratio, packed_count, omitted_count y
token_counter), y diagnósticos opcionales. La contabilidad es exacta para el contador nombrado; inyecta el
tokenizador del lector cuando se requiera paridad de tokens del modelo lector. engraphis_recall sigue siendo la superficie compatible de recuperación completa;
usa response_mode="compact" cuando el contexto empaquetado sea suficiente y los cuerpos de memoria completos
lo duplicarían. Para configuración avanzada de planificación de consultas, consulta la
guía de arquitectura.
Para lecturas bi-temporales, valid_at selecciona lo que era verdadero en una marca de tiempo Unix y known_at selecciona
lo que Engraphis había aprendido entonces. as_of sigue siendo un alias de compatibilidad para valid_at; proporcionar
ambos solo está permitido cuando coinciden.
Para una afirmación mutable, pasa un subject_key estable y un claim_kind opcional, como
subject_key="api.rate_limit", claim_kind="configured_value". La resolución de conflictos sin conexión
agrega, refuerza, relaciona o reemplaza registros de manera determinista mientras preserva el historial
temporal; no necesita un LLM. Las identidades de afirmación coincidentes le permiten reemplazar sustancialmente
hechos mutables reformulados. Sin ellas, el incrustador léxico sin dependencias no puede inferir de manera confiable
que una paráfrasis es una contradicción, así que conserva ambos registros o usa una operación explícita de correct.
Gobernar memorias sin perder historial
Engraphis separa la resolución automática de escritura de la gobernanza humana explícita:
| Operación | Úsala cuando | Qué sucede con el historial |
|---|---|---|
remember | Agregar o reformular un hecho | Agrega, refuerza, reemplaza de manera segura o relaciona un vecino incierto |
correct | Reemplazar una memoria conocida como incorrecta | Cierra la ventana de validez anterior y vincula el reemplazo |
promote | Un aprendizaje limitado ahora aplica más ampliamente | Escribe un sucesor de alcance más amplio y cierra/vincula la fuente en lugar de editar el alcance en el lugar |
merge | Combinar dos o más memorias superpuestas | Retira cada fuente y crea una memoria que reemplaza a todas |
retire | Eliminar una memoria de la recuperación en vivo | La cierra bi-temporalmente; el registro de auditoría/historial permanece |
consolidate | Destilar memorias episódicas recurrentes automáticamente | Crea resúmenes semánticos vinculados; los episodios fuente permanecen en vivo |
La fusión manual N→1 está disponible a través de MemoryService.merge() y POST /api/merge:
a = mem.remember("Deploys happen Friday at 3pm.", workspace="acme")
b = mem.remember("We deploy Fridays around 15:00.", workspace="acme")
merged = mem.merge(
[a["id"], b["id"]],
"Deploys ship every Friday at approximately 15:00.",
workspace="acme",
reason="deduplicate the deployment schedule",
)
print(merged["compaction"])
retire intencionalmente no es eliminación: preserva el historial temporal, FTS y evidencia
vectorial para lecturas históricas. Si se capturó una credencial, las nuevas escrituras se bloquean antes del
almacenamiento; para una fuga heredada usa el explícitamente destructivo MemoryService.secure_erase() o
POST /api/secure-erase/engraphis_secure_erase. Ese flujo elimina la única memoria y las filas locales de
FTS/índice vectorial y de grafo/enlaces derivados, ejecuta borrado seguro de SQLite, punto de control WAL y
VACUUM, y escanea copias de seguridad de recuperación SQLite locales reconocidas. No puede borrar exportaciones, instantáneas
del sistema de archivos, pares remotos, copias de seguridad desconocidas o información que un agente en ejecución/comprometido
ya leyó; rota la credencial. Consulta límites de borrado seguro. forget
sigue siendo un alias de compatibilidad obsoleto para retire.
Todas las fuentes deben pertenecer al espacio de trabajo nombrado. El resultado hereda la sensibilidad de fuente más estricta, permanece no confiable si alguna fuente no era confiable y permanece fijado si alguna fuente estaba fijada. La cadena completa de múltiples predecesores permanece visible a través de inspección, Why y Timeline.
Gratis para siempre vs. planes alojados
El motor central, el panel local, el servidor MCP y la consolidación manual son Apache-2.0 y gratuitos. Pro y Team son servicios que proporcionan acceso opcional al servicio alojado oficial; su plano de control, facturación, retransmisión, cómputo y módulos de identidad de Team viven en un repositorio privado. No limitan el núcleo local. Consulta planes alojados, licencias y Cloud Sync para límites de servicio, ciclo de vida y precios.
Suscríbete a Pro para apoyar el proyecto y agregar servicios alojados.
Compara planes alojados cuando estés listo para evaluar el límite de servicio y las opciones de facturación.
| Gratis (disponible ahora) | Pro: $10/mes o $100/año | Team: $20/asiento/mes o $200/asiento/año | |
|---|---|---|---|
| Panel WebUI (con inspector integrado) | ✓ | ✓ | ✓ |
| Motor de memoria + Smart MCP (compatibilidad clásica de 34 herramientas) | ✓ | ✓ | ✓ |
| Diferencias de cadena de versiones, grafo de conocimiento sin conexión | ✓ | ✓ | ✓ |
| Consolidación local manual (simulación por defecto) | ✓ | ✓ | ✓ |
| Exportación de espacio de trabajo local (JSON v2 portátil: memorias, manifiestos de fuente, evidencia de grafo/código, sesiones, auditoría y recibos) | ✓ | ✓ | ✓ |
| Cloud Sync alojado | ✓ | ✓ | |
| Analítica alojada | ✓ | ✓ | |
| Auto consolidación alojada + política de retención | ✓ | ✓ | |
| Auto Dreaming alojado + propuestas gestionadas | ✓ | ✓ | |
| Soporte prioritario | ✓ | ✓ | |
| Panel multiusuario alojado: invitaciones, inicios de sesión, roles, gestión de asientos | ✓ | ||
| Registro de auditoría de Team alojado + exportación CSV | ✓ | ||
| Invitaciones pendientes de 72 horas (reenviar/revocar) | ✓ | ||
| Tokens de agente y sincronización por usuario con alcance y caducidad | ✓ |
Herramientas MCP
Engraphis expone una puerta de enlace Smart MCP de configuración cero más un servidor de compatibilidad clásica de 34 herramientas en memoria, recuperación, grafos de código, gobernanza, sesiones y recibos de auditoría seguros para la privacidad. La referencia de herramientas MCP es la fuente para el inventario completo y los parámetros.
Grafos y recibos seguros para la privacidad
Las relaciones de memoria, entidad y código viven en un solo grafo local. Engraphis también proporciona recibos de operación sin contenido para evidencia de auditoría inspeccionable. Consulta la arquitectura, la referencia de herramientas MCP y la política de seguridad para el modelo de datos, herramientas y garantías.
Sincronización en la nube
Cloud Sync es un servicio alojado opcional de Pro/Team. El paquete público incluye el cliente del cliente y la implementación de fusión determinista; la retransmisión alojada y las operaciones de cuenta son separadas. Consulta Cloud Sync para configuración, cifrado, comportamiento de fusión e intercambio de carpetas local.
Seguridad y límites de confianza
Engraphis es local-primero y se vincula a loopback por defecto. Lee la política de seguridad antes de implementación remota o integración de recursos externos; cubre versiones compatibles, protecciones de datos, modelo de amenazas y reporte de vulnerabilidades.
Cifrado en reposo
Establece ENGRAPHIS_DB_KEY (o ENGRAPHIS_DB_KEY_FILE) e instala el extra:
pip install "engraphis[encryption]"
Todo el archivo de base de datos de memoria principal se cifra de manera transparente con AES-256 mediante SQLCipher; la búsqueda de texto completo, el grafo y cada consulta siguen funcionando sin cambios. La autenticación del cliente y el estado del servicio gestionado usan sus respectivas protecciones de implementación. Cuando se establece una clave para la base de datos principal, Engraphis falla cerrado con un error en lugar de volver silenciosamente a texto plano. Genera una clave fuerte:
python -c "import secrets; print(secrets.token_hex(32))"
Cuando uses ENGRAPHIS_DB_KEY_FILE, provisiona un archivo secreto regular legible solo por la
identidad del servicio. Engraphis rechaza enlaces, puntos de reanálisis, enlaces duros, texto malformado y
archivos de clave sobredimensionados en lugar de seguir un objeto del sistema de archivos inesperado.
Una base de datos de texto plano existente no se puede abrir con una clave: migrarla (volcado → importación en una base de datos nueva con clave). Consulta
.env.examplepara todas las opciones de cifrado.
Importar archivos y carpetas
El núcleo universal sin dependencias escanea Markdown, texto plano, RST, HTML, JSON/JSONL, CSV/TSV, texto de configuración/XML, código fuente, RTF, DOCX/ODT, XLSX/ODS, PPTX/ODP y EPUB en la ruta normal de memoria v2. Los adaptadores de recursos locales instalados agregan texto PDF, OCR de imágenes y transcripción de audio/video explícitamente con modelos locales. Comienza con una vista previa de cero escrituras, luego confirma la misma colección de fuentes explícitamente:
engraphis import documents /path/to/collection --workspace acme --dry-run
engraphis import documents /path/to/collection --workspace acme --repo product --yes
La CLI nunca descarga un modelo de incrustación durante la importación. Usa un modelo que ya esté en caché,
establece ENGRAPHIS_EMBED_MODEL=local:/absolute/model/path o establece explícitamente
ENGRAPHIS_EMBED_MODEL a un valor vacío para usar hashing determinista sin dependencias en
modo degradado léxico.
El flujo Importar documentos locales del panel ofrece la misma vista previa, alcance objetivo, etiqueta de fuente, política de conflictos, cancelación y progreso reanudable. Las reimportaciones son idempotentes, preservan el historial temporal y reportan eliminaciones de fuentes sin eliminar memorias de manera permanente. Obsidian sigue siendo el adaptador Markdown enriquecido para frontmatter, alias, wikilinks y referencias de adjuntos:
engraphis import obsidian /path/to/vault --workspace acme --dry-run
Consulta la guía de importación de documentos para formatos compatibles, seguridad de fuentes, comportamiento de reanudación y conflictos, adaptadores opcionales y limitaciones; consulta la guía del adaptador de Obsidian para el comportamiento específico de Markdown.
Consolidación y automatización
La consolidación manual es gratuita, local y con simulación por defecto; usa el panel, SDK, CLI o MCP. La automatización alojada de Pro y Team es cómputo gestionado opcional que produce propuestas revisables en lugar de cambiar datos locales silenciosamente. Consulta planes alojados, licencias y la referencia de herramientas MCP para alcance y uso.
Configuración
Los valores provienen del entorno del proceso. Engraphis también carga el ~/.engraphis/config.env privado del propietario; ENGRAPHIS_ENV_FILE puede seleccionar otro archivo regular privado del propietario absoluto.
Nunca busca en el directorio de trabajo .env, y las variables de proceso explícitas ganan.
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
ENGRAPHIS_ENV_FILE | ~/.engraphis/config.env | Hoja de configuración confiable opcional seleccionada antes de que se carguen los valores confiables. Su analizador acotado sin dependencias no realiza interpolación. Un valor explícito debe ser una ruta absoluta a un archivo regular privado del propietario; los archivos .env arbitrarios del directorio de trabajo se ignoran. |
ENGRAPHIS_DB_PATH | Fuente: <repo>/engraphis.db; instalado: directorio de datos de usuario de la plataforma | Archivo de base de datos SQLite. Los valores predeterminados instalados son %LOCALAPPDATA%\engraphis\engraphis.db (Windows), ~/Library/Application Support/engraphis/engraphis.db (macOS) y $XDG_DATA_HOME/engraphis/engraphis.db o ~/.local/share/engraphis/engraphis.db (Linux). La variable de entorno anula todos los valores predeterminados; un valor relativo se resuelve desde el directorio confiable ~/.engraphis/config.env para que el CWD de lanzamiento no pueda seleccionar una base de datos de espacio de trabajo diferente. |
ENGRAPHIS_HOST | 127.0.0.1 | Dirección de enlace del servidor |
ENGRAPHIS_PORT | 8700 | Puerto del panel |
ENGRAPHIS_SERVICE_MODE | customer | El paquete público solo admite customer; los roles de proveedor alojado, retransmisión, cómputo y trabajador no se distribuyen aquí |
ENGRAPHIS_API_TOKEN | No establecido | Credencial de portador opcional para este nodo de cliente local de un solo usuario; nunca reutilices una credencial alojada |
ENGRAPHIS_CORS_ORIGINS | loopback en ENGRAPHIS_PORT | Lista de permitidos CORS REST separada por comas; predeterminada a 127.0.0.1 y localhost en el puerto configurado |
ENGRAPHIS_INDEX_ROOTS | Directorios de trabajo, inicio y temporales | Lista de permitidos de rutas absolutas opcional separada por separadores de ruta que reemplaza las raíces predeterminadas aceptadas por la indexación de código local |
ENGRAPHIS_HTTP_INDEX_ROOT | Primera entrada de ENGRAPHIS_INDEX_ROOTS, o directorio actual | Raíz única para el panel y REST POST /api/code/index; las rutas enviadas se resuelven debajo de ella. Una raíz explícita (o entrada de respaldo) debe ser absoluta; una raíz HTTP explícita se incluye en el conjunto aprobado por el motor. La indexación MCP y CLI continúan usando ENGRAPHIS_INDEX_ROOTS. |
ENGRAPHIS_DB_KEY | No establecido | Cifra la base de datos en reposo (SQLCipher). O usa ENGRAPHIS_DB_KEY_FILE |
ENGRAPHIS_EMBED_MODEL | sentence-transformers/all-MiniLM-L6-v2 | Modelo sentence-transformers |
ENGRAPHIS_EMBED_REVISION | No establecido | Commit inmutable opcional de Hugging Face en minúsculas de 40 hex para el modelo de incrustación. Los commits de Hub cargados o los manifiestos de artefactos locales identifican espacios vectoriales persistentes; las identidades mutables no resueltas mantienen la recuperación vectorial con fallo cerrado. |
ENGRAPHIS_RERANK_MODEL | No establecido | Reranker cross-encoder opcional de sentence-transformers |
ENGRAPHIS_RERANK_REVISION | No establecido | Commit opcional inmutable de Hugging Face en minúsculas de 40 caracteres hexadecimales para el reranker |
ENGRAPHIS_REQUIRE_IMMUTABLE_MODELS | false | Cuando está habilitado, se requiere un commit de 40 caracteres hexadecimales antes de cargar modelos de embedding remotos, rerankers o tokenizadores de fragmentos; local: selectores y rutas de sistema de archivos siguen permitidos |
ENGRAPHIS_EXTRACTOR | none | none = verbatim; chunk = fragmentos estructurados sin conexión; llm = hechos LLM de formato libre; llm_structured = hechos validados por esquema + metadatos de grafo |
ENGRAPHIS_CHUNK_TOKENIZER_MODEL | No establecido | Tokenizador opcional de Hugging Face utilizado para hacer cumplir los presupuestos de fragmentos con la tokenización real del lector downstream; requiere el paquete opcional transformers |
ENGRAPHIS_CHUNK_TOKENIZER_REVISION | No establecido | Revisión opcional e inmutable de tokenizador/modelo registrada en la identidad del contador de fragmentos; fíjela para artefactos de benchmark reproducibles |
ENGRAPHIS_GRAPH_EXTRACTOR | regex | regex = NER heurístico sin conexión; none = deshabilitar extracción de texto heurística (los metadatos validados de llm_structured aún alimentan el grafo) |
ENGRAPHIS_RETENTION_SUPERVISOR | none | none = solo determinista; llm = envía un extracto limitado al proveedor configurado para clasificación asesora efímera/normal/crítica |
ENGRAPHIS_ALLOW_AUTOMATIC_CRITICAL_RETENTION | false | Opte solo cuando un supervisor LLM pueda asignar automáticamente la clase de larga duración critical; la retención crítica explícita seleccionada por el usuario no se ve afectada |
ENGRAPHIS_WHISPER_MODEL | No establecido | Habilita la transcripción local de audio/video con faster-whisper |
ENGRAPHIS_POSTGRES_DSN | No establecido | Fuente PostgreSQL solo CLI; se usa para la conexión y nunca se almacena |
ENGRAPHIS_POSTGRES_CONNECT_TIMEOUT | 10 | Tiempo de espera de conexión de introspección PostgreSQL en segundos (limitado a 1–120) |
ENGRAPHIS_POSTGRES_STATEMENT_TIMEOUT_MS | 30000 | Tiempo de espera de declaración PostgreSQL por introspección en milisegundos (limitado a 1–300000) |
ENGRAPHIS_GRAPH_TOKEN | No establecido | Token Bearer para engraphis-graph-server; requerido fuera del loopback |
ENGRAPHIS_GRAPH_HOST / ENGRAPHIS_GRAPH_PORT | 127.0.0.1 / 8720 | Dirección de enlace del servidor de grafo/recuperación de solo lectura |
ENGRAPHIS_LLM_PROVIDER | openai | openai | anthropic | google | openrouter | custom |
ENGRAPHIS_LLM_MODEL | gpt-4o-mini | Nombre del modelo (específico del proveedor) |
ENGRAPHIS_LLM_API_KEY | No establecido | Clave API para chat/síntesis, extracción de llm / llm_structured y consolidación estructurada |
ENGRAPHIS_LLM_BASE_URL | No establecido | URL base para endpoints compatibles con openrouter / OpenAI personalizados |
ENGRAPHIS_LLM_AUTO_EXTRACT | 0 | Opte por cambiar el motor en ejecución a llm_structured después de una prueba de conexión en vivo exitosa; el botón de extracción Desactivado del panel persiste 0, y su botón Activado restaura 1 |
ENGRAPHIS_FORWARDED_ALLOW_IPS | (ninguno) | Proxies de confianza para encabezados de cliente/TLS reenviados (* solo cuando el servicio es accesible exclusivamente a través de ese proxy) |
ENGRAPHIS_LOCAL_TRUSTED_PEERS | (ninguno) | Pares/CIDR exactos tratados como locales sin encabezados de reenvío; use solo para pares Docker/LAN de confianza, nunca para implementaciones públicas |
ENGRAPHIS_UPDATE_CACHE | 86400 | TTL de caché de verificación de actualizaciones en segundos, limitado a 1..31622400; esto nunca es una ruta de archivo de caché |
ENGRAPHIS_CLOUD_CONTROL_URL | predeterminado alojado | API oficial de control de derechos, organización y credenciales. Una credencial rotatoria guardada permanece vinculada al endpoint de control registrado para su familia; reconéctese para cambiarla. |
ENGRAPHIS_CLOUD_COMPUTE_URL | predeterminado alojado | API oficial de Analytics y automatización gestionada. Una credencial rotatoria guardada permanece vinculada a su endpoint de cómputo registrado; reconéctese para cambiarla. |
ENGRAPHIS_CLOUD_ORGANIZATION_ID | No establecido | Organización alojada vinculada a esta sesión de cliente |
ENGRAPHIS_CLOUD_REFRESH_CREDENTIAL | No establecido | Credencial alojada rotatoria solo de arranque; después del primer uso, el reemplazo de sesión en la nube solo para propietario tiene prioridad |
ENGRAPHIS_CLOUD_TOKEN_SUBJECT | member | Sujeto fijado durante el arranque alojado (device o member); establezca explícitamente con una credencial de actualización solo de entorno |
ENGRAPHIS_CLOUD_ACCESS_TOKEN | No establecido | Token de acceso de corta duración opcional para trabajos efímeros |
ENGRAPHIS_MANAGED_COMPUTE_CONSENT | (automático) | Solo anulación del operador; el valor predeterminado sigue si una sesión en la nube está configurada (conectado = permitido, solo local = nunca). 0 excluye una instalación conectada; 1 permite la preparación de instantáneas locales pero no crea una credencial en la nube ni autoriza una carga |
Consulte .env.example para el inventario completo de variables. Proporcione esos valores a través del entorno del proceso
o del archivo de configuración de confianza anterior; copiarlo a un ./.env arbitrario no hace que
Engraphis lo cargue.
Estructura del proyecto
engraphis/
├── engraphis/
│ ├── core/ # v2 engine: interfaces, store, recall, scoring, schema, sync
│ ├── backends/ # pluggable embedder / vector index / reranker / codegraph / sync transports / encryption
│ ├── factory.py # outer v2 composition root; selects and injects concrete backends
│ ├── service.py # validated MemoryService facade
│ ├── mcp_server.py # Smart MCP gateway + 34-tool Classic compatibility server
│ ├── dashboard_app.py # dashboard WebUI (FastAPI)
│ ├── dashboard_assets/ # primary Ledger interface + graph engine
│ ├── classic_assets/ # selectable full operator dashboard backup
│ ├── read_only_api.py # token-protected recall/repository-graph HTTP surface
│ ├── hosted_client.py # hosted URLs, plan labels, and endpoint validation only
│ ├── licensing.py # compatibility facade for hosted presentation metadata
│ ├── cloud_session.py # rotating hosted customer-session client
│ ├── cloud_features.py # consented managed-feature protocol client
│ ├── config.py / app.py # env settings / REST server
│ └── static/ # compatibility dashboard asset paths
├── eval/ # offline retrieval eval harness + datasets
├── tests/ # offline-first pytest suite and release/security contracts
├── scripts/ # dashboard, server, graph, CLI, connect, update, consolidation, sync
├── docs/ # product, API, hosting, sync, and provider guides
├── Dockerfile / docker-compose.yml
└── pyproject.toml
La nueva capacidad pertenece a la ruta v2 (engraphis/core/, engraphis/backends/ y
MemoryService) detrás de las interfaces en core/interfaces.py. Los módulos de algoritmos en core/
permanecen agnósticos al backend; engraphis/factory.py es la raíz de composición externa utilizada por
engraphis.create_memory_engine() y el punto de entrada de compatibilidad MemoryEngine.create(), luego
inyecta los colaboradores seleccionados en core/engine.py. El servidor v1 de espacio de nombres plano bajo
engraphis/app.py, routes/, stores/ y engines/ sigue siendo una
superficie de compatibilidad/referencia; engraphis-dashboard, el servidor MCP y el inicio rápido de Python
anterior usan v2.
Licencia
Apache-2.0. Consulte LICENSE y NOTICE. "Engraphis" es una marca comercial del
proyecto Engraphis; la licencia no otorga derechos de marca comercial. El código ya distribuido
bajo Apache-2.0 conserva esa concesión; las versiones posteriores no pueden retirarla retroactivamente. El
plano de control alojado oficial, sus credenciales y registros de producción, las operaciones gestionadas,
el soporte y los módulos comerciales futuros entregados por separado están fuera de la concesión de código fuente público.
Consulte docs/LICENSING.md para el límite completo.