OpenLore
oficialServidor de conocimiento nativo para agentes. Sirve documentación a agentes de IA a través de SSH y MCP con vistas con alcance de identidad, escritura gobernada y metadatos estructurados. Binario único, sin configuración.
¿Qué puedes hacer con OpenLore MCP?
-
Explora la documentación vía SSH — Pídele a tu asistente que use
sshpara entrar a OpenLore y use comandos conocidos comols,catogreppara buscar y leer documentación en Markdown. -
Consulta metadatos de documentos — Usa el comando
lore metapara inspeccionar el frontmatter como NDJSON y filtra los resultados conjqpara una recuperación estructurada de conocimiento. -
Publica contenido con aprobación — Haz que tu asistente escriba o actualice archivos Markdown usando
publish,patchosed -i, con intercambios atómicos y revisión humana opcional para rutas sensibles. -
Gestiona el acceso con ámbito de identidad — Configura docsets, roles y permisos para que cada agente o usuario solo vea las bases de conocimiento y rutas que está autorizado a acceder.
-
Valida paquetes de conocimiento — Ejecuta
lore validatepara comprobar el cumplimiento del Formato Abierto de Conocimiento de Google (OKF) y detectar frontmatter malformado antes de que se confirme.
Documentación
📜 OpenLore
Sirve tu documentación a agentes de IA a través de SSH.
OpenLore es una base de conocimiento mínima, extensible y nativa para agentes que mantiene el contexto compartido actualizado e inspeccionable.
Acerca de
Los agentes de codificación de IA ya saben explorar archivos con ls, cat, grep,
find, tuberías y bucles de shell. OpenLore les ofrece esa misma interfaz a través de
SSH, respaldada por tu documentación en lugar de una máquina real.
Agent ──SSH or MCP──▶ OpenLore ──▶ docs, knowledge, and artifacts
Comienza como un servidor de documentación de un solo binario, sin configuración y de solo lectura. Cuando necesitas una base de conocimiento en vivo, puedes agregar acceso con identidad, publicación controlada, escrituras atómicas, validación y aprobación humana sin cambiar cómo los agentes leen o navegan el contenido.
Almacenar y recuperar Markdown
Coloca documentación, runbooks, contexto de proyecto o notas creadas por agentes en archivos Markdown comunes. No hay canal de ingesta: apunta OpenLore a un directorio y sirve la jerarquía existente directamente. Organiza documentos con carpetas, conéctalos con enlaces Markdown estándar y agrúpalos en conjuntos de documentos cuando diferentes personas o agentes necesiten acceso distinto. OpenLore es de solo lectura por defecto; habilita la escritura cuando quieras que los agentes también creen y actualicen Markdown.
Inicio rápido
El camino más rápido es dejar que tu agente configure OpenLore:
# Teach your agent how to install, configure, and bundle OpenLore
ssh openlore.sh teach | your-agent-cli
# Add documentation access instructions to AGENTS.md
ssh openlore.sh agents >> AGENTS.md
O instálalo y ejecútalo directamente:
go install github.com/aakarim/go-openlore/cmd/openlore@latest
openlore ./docs
ssh -p 2222 localhost
ssh -p 2222 localhost "grep -r 'authentication' /docs"
Por defecto, esto inicia:
- SSH en
localhost:2222 - la vista web para humanos en
http://localhost:8080 - MCP sobre HTTP en
http://localhost:8080/mcp
Consulta Instalación para más formas de instalar y empaquetar OpenLore.
Características
- Recuperación nativa para agentes — Los agentes usan las herramientas de shell y los patrones de composición que ya entienden en lugar de aprender una API de recuperación personalizada.
- Una superficie de conocimiento, múltiples transportes — Sirve el mismo sistema de archivos virtual a través de SSH, SFTP/SSHFS, MCP y una vista web amigable para humanos.
- Conocimiento vivo y gobernado — Mantén el contenido de solo lectura, permite publicación con alcance o habilita escrituras completas por conjunto de documentos. Las escrituras son atómicas, conscientes de conflictos y pueden requerir aprobación humana.
- Vistas con identidad — Dale a cada persona o agente solo los conjuntos de documentos que
necesita, con permisos basados en roles
ro,publishyrw, alias de rutas y directorios de inicio privados. - Seguro por construcción — El shell es un intérprete Go en memoria, no un shell real del sistema operativo. No hay escape de shell, ejecución de procesos arbitrarios ni acceso de red ambiental en una sesión normal.
- Paquetes de conocimiento portátiles — Incrusta documentos en un binario autocontenido, crea paquetes multiplataforma con la GitHub Action o empaquétalos como una extensión MCP de escritorio.
- Conocimiento estructurado sin un nuevo lenguaje de consulta — Inspecciona el frontmatter
como NDJSON con
lore meta, consúltalo conjqy valida los paquetes Open Knowledge Format (OKF) de Google y las habilidades de agente cerca de la ruta de escritura. - Política y procesamiento extensibles — Los complementos pueden agregar validación, permisos, middleware de lectura/escritura, metadatos y procesamiento posterior a la confirmación mientras preservan la misma interfaz de sistema de archivos.
Casos de uso
- Repositorio de aprendizaje continuo — almacena sesiones y aprendizajes en un servidor compartido. Agrega métricas para poder optimizar. Permite que los agentes compartan aprendizajes entre sí manteniendo el aislamiento de usuarios.
- Repositorio de artefactos de equipo — comparte documentos Markdown, HTML, JSON, Excel, etc. que hayas creado manteniendo controles de acceso. Mucho más natural que git, más nativo para agentes que Confluence/Notion.
- Documentación para agentes de codificación — Coloca documentación de API interna, runbooks, contexto de producto y notas de arquitectura detrás de una interfaz familiar y greppable.
- Una memoria viva compartida para equipos de agentes — Dale a los agentes conjuntos de documentos separados o compartidos para que puedan publicar hallazgos, transferir trabajo y acumular contexto duradero entre sesiones.
- Sitio de documentación pública — agrega cualquier archivo a tu conjunto de documentos público, habilita el acceso público y se mostrará a cualquier agente que encuentre tu sitio. Mejora AEO/GEO sin necesidad de editar tu documentación existente.
- Compartir habilidades — Publica habilidades de agente en colecciones compartidas para que cada agente autorizado pueda descubrir y usar los mismos procedimientos gobernados.
- Repositorio de complementos de agente — Fija por versión los repositorios de Agent Plugins desde GitHub y sírvelos a los agentes de tu equipo. Las habilidades empaquetadas en el estándar abierto se mantienen actualizadas automáticamente.
- Contribución de conocimiento gobernada — Permite que los contribuyentes publiquen en bandejas de entrada mientras reservas rutas sensibles para aprobadores y previenes sobrescrituras accidentales.
- Revisión remota de artefactos de agentes — Expón informes, registros, capturas de pantalla y archivos generados a través del navegador o SSH sin crear un visor de artefactos personalizado ni otorgar acceso a la máquina del agente.
- Espacios de trabajo específicos por identidad — Monta un inicio privado para cada agente más conocimiento de equipo compartido, todo a través de un servidor y un modelo de autorización.
- Conocimiento portátil de clientes o proyectos — Envía un ejecutable versionado con los documentos relevantes incrustados, o distribuye el mismo conocimiento como una extensión de escritorio MCPB.
- Catálogos de conocimiento validados — Aplica convenciones de frontmatter y paquetes, inspecciona metadatos de forma económica y detén conocimiento malformado en el momento de admisión.
Cómo funciona
OpenLore está construido sobre Wish para el transporte SSH. Una conexión se maneja completamente contra un sistema de archivos virtual:
- Autenticar — conéctate sin clave o resuelve una clave SSH, certificado, passkey o inicio de sesión OAuth a una identidad.
- Componer una vista — monta solo los conjuntos de documentos y rutas otorgados a esa identidad.
- Explorar — ejecuta comandos de shell implementados como funciones Go puras sobre esa
vista, o usa la herramienta MCP equivalente
shell. - Contribuir de forma segura — si la escritura está habilitada, autoriza y valida un cambio de archivo completo antes de confirmarlo atómicamente o enrutarlo para aprobación.
Los clientes OAuth usan identidades delegadas, por lo que la procedencia de escritura duradera distingue
el trabajo directo de adil del trabajo realizado como adil/claude@claude.ai. Los delegados
no pueden heredar más autoridad que su principal y pueden limitarse por
listas de denegación de conjuntos de documentos y capacidades. Los clientes CIMD también pueden autenticarse
con metadatos alojados por el proveedor y private_key_jwt; consulta
Clientes OAuth autenticados.
El shell normal no puede invocar bash, exec, curl ni procesos
arbitrarios del host. La documentación incrustada siempre es de solo lectura. Las identidades
explícitamente confiables pueden recibir procesamiento asíncrono con alcance limitado a través de la
capacidad spawn.
Escritura gobernada
OpenLore es de solo lectura por defecto. Los despliegues con escritura mantienen una única
ruta de escritura controlada por política para redirecciones, anexos, tee, patch, sed -i,
movimientos de archivos, publicación y trabajos externos aprobados.
echo "# Research" | publish backend findings.md
cat change.diff | patch /backend/api.md
sed -i 's/old/new/g' /backend/runbook.md
Las escrituras son intercambios atómicos de objeto completo. La protección de comparar-y-intercambiar rechaza ediciones
obsoletas por defecto, los permisos de conjuntos de documentos restringen el destino y las rutas seleccionadas pueden
producir cambios revisables bajo /requests en lugar de confirmar directamente.
Consulta Escritura y publicación para la configuración orientada al usuario y Internos del sistema de escritura para el modelo de implementación.
Instalación
Instalar con Go
Requiere Go 1.26 o posterior:
go install github.com/aakarim/go-openlore/cmd/openlore@latest
Compilar desde el código fuente
git clone https://github.com/aakarim/go-openlore.git
cd go-openlore
go build -o openlore ./cmd/openlore
Incrustar documentos en un binario
Coloca la documentación en assets/lore/ y compila. El binario resultante contiene
los documentos y los sirve de solo lectura en /docs cuando se ejecuta sin argumento
de directorio:
go build -o my-docs ./cmd/openlore
Compilar con la GitHub Action
Produce binarios multiplataforma con tus documentos incrustados:
- uses: aakarim/openlore@v1
with:
docs-dir: ./docs
config: ./openlore.yml
Consulta Formas de usar OpenLore para MCP stdio, empaquetado de escritorio MCPB, SSHFS y uso de la biblioteca Go.
Crear un despliegue personalizado
Usa la habilidad incluida setup para crear <team>-lore, un repositorio pequeño
propiedad del cliente que contiene openlore.yml, un Containerfile delgado fijado a una
versión oficial de OpenLore y artefactos de despliegue. Compila un servidor local
funcional y verifica HTTP, MCP, SSH autenticado, escrituras y persistencia antes del
despliegue:
ssh openlore.sh setup | amp
El repositorio generado mantiene la política inicial de lore.json y los archivos visibles por SSH
bajo .local/ ignorado por git. El primer despliegue inicializa un volumen persistente vacío
desde ese estado. El openlore.yml raíz sigue siendo la autoridad de Git/IaC y se
despliega por separado en /var/lib/openlore/config/openlore.yml; no está incluido
en la imagen. Los cambios posteriores de lore.json y del sistema de archivos en el servidor son
autoritativos y nunca se sobrescriben con actualizaciones de imagen.
Los comandos de instrucción adicionales admiten el ciclo de vida completo:
onboardingagrega identidades, roles, inicios y carpetas iniciales localmente;deployselecciona Fly.io, Railway, AWS, Google Cloud, Azure, DigitalOcean o un despliegue personalizado y verifica un contrato compartido de persistencia/red;upgradeprepara solo el cambio de versión de imagen base fijada para que el CD existente pueda desplegarlo.
Los despliegues de proveedores requieren HTTPS/MCP, SSH OpenLore autenticado,
acceso administrativo al shell y un volumen persistente /var/lib/openlore. Cuando el
proveedor lo admite, el despliegue configura el puerto público 22 para reenviar a
OpenLore puerto 2222. De lo contrario, informa el puerto asignado y recomienda un
sistema externo de reenvío TCP.
El contenedor publicado contiene solo OpenLore. Deliberadamente no contiene
política de incorporación ni configuración de servidor. Antes de que el servicio se inicie, el
despliegue debe colocar openlore.yml y lore.json en el directorio de configuración
persistente y ejecutar:
./out --config /var/lib/openlore/config/openlore.yml
Esto mantiene la configuración desplegable de forma independiente: un despliegue simple puede
copiar openlore.yml en el volumen, mientras que Kubernetes puede proyectar el mismo archivo
desde un ConfigMap. Usa la habilidad deploy para Fly.io, Railway, AWS, Google Cloud,
Azure, DigitalOcean o infraestructura personalizada. Los archivos Railpack y
Fly del repositorio proporcionan la imagen, el volumen persistente y el cableado de puertos; no
siembran ni mutan la configuración al iniciar el proceso.
Railway asigna a su proxy TCP SSH un nombre de host y puerto públicos. El puerto SSH estándar 22 requiere un balanceador de carga TCP sin procesar externo. Fly.io puede mapear el puerto público 22 al puerto interno 2222 de OpenLore con una dirección dedicada. El SSH sin procesar no tiene nombre de host ni enrutamiento SNI, por lo que un solo listener no puede enrutar múltiples dominios en el puerto 22.
El flujo de trabajo del contenedor publica latest desde main; las versiones también publican
VERSION, vVERSION, etiquetas de imagen mayor y menor.
Cargas HTTP a la bandeja de entrada
Configura un conjunto de documentos inbox y un rol con su permiso publish, luego crea una
credencial para una identidad existente (la configuración del servidor debe nombrar
auth_file para que la CLI pueda validarla):
openlore inbox token create --identity alice --label webhook --config openlore.yml
curl -H 'Authorization: Bearer olin_ID_SECRET' -H 'Content-Type: text/markdown' \
--data-binary @note.md 'https://docs.example.com/inbox/docs?name=note.md'
POST /inbox/{docset} acepta credenciales de portador o un HMAC de cuerpo exacto usando
X-OpenLore-Token-Id y X-OpenLore-Signature. Los tokens de acceso OAuth se usan
solo para POST/GET /inbox/tokens y DELETE /inbox/tokens/{id}; las credenciales de la bandeja
de entrada son separadas y revocables. Consulta
Configuración e identidad.
Documentación
| Guía | Contenido |
|---|---|
| Formas de usar OpenLore | SSH, MCP, web, SSHFS, binarios integrados, GitHub Action, MCPB y uso como biblioteca |
| Referencia de comandos | Referencia completa de shell, introspección, publicación, sintaxis, comandos CLI y banderas |
| Configuración e identidad | openlore.yml, autenticación, roles, docsets, alias, directorios personales y verificación de host |
| Federación de identidad de cargas de trabajo | Autentica CI y agentes con tokens de identidad externos de corta duración |
| Escritura y publicación | Modos de escritura, bandejas de entrada, manejo de conflictos, aprobaciones y trabajos |
| Plugins y formatos de conocimiento | Instalación de plugins, interfaces, validación OKF, lore validate y lore meta |
| Internos del sistema de escritura | Capas del sistema de archivos, costura de escritura, conjuntos de cambios, hooks y trabajos asíncronos |
| Evaluación de seguridad | Modelo de amenazas y propiedades de seguridad |
Seguridad
- Los comandos se ejecutan en un intérprete puro de Go, no a través de
os/exec. - El sistema de archivos virtual limpia rutas y hace cumplir los límites de los docsets.
- Los patrones de archivos permitidos y los directorios ignorados mantienen los secretos fuera de la vista.
- RBAC controla lecturas, publicación, escrituras, aprobaciones y capacidades de confianza.
- El endpoint web puede publicar la clave de host SSH a través de TLS para evitar confianza ciega en el primer uso; también se admiten certificados de usuario y host SSH.
Consulta SECURITY.md para la evaluación de seguridad completa.
Licencia
MIT — Adil Karim
OpenLore incluye componentes de código abierto de terceros. Sus licencias y avisos
requeridos se enumeran en
assets/legal/THIRD_PARTY_NOTICES.md, con
textos de licencia completos en assets/legal/licenses/. Estos están
integrados en el binario y son servidos por el servicio en ejecución en /legal.
