Base de conocimiento con un asistente de IA que funciona en tu propio servidor con un LLM local.

Las personas de tu empresa preguntan en lenguaje natural y reciben respuestas basadas en tus propios documentos, con las fuentes a la vista. El modelo de IA funciona en tu servidor, así que no dependes de ningún proveedor de IA. Ningún proveedor puede subirte el precio, y ninguna pregunta ni respuesta sale de tu red.

Gratis bajo la Apache License 2.0

$ git clone https://github.com/deformator852/archfold && cd archfold$ cd backend && uv run install && cd ..$ deploy/deploy.sh build && deploy/deploy.sh up$ deploy/deploy.sh admin you@company.com
El asistente de Archfold responde a una pregunta sobre un contrato con un proveedor e indica su fuente. A una segunda pregunta responde «No lo sé: ninguno de los documentos a los que tienes acceso responde a esto».
  • Respuestas que puedes comprobarCada respuesta cita sus fuentes y avisa cuando ningún documento tiene la respuesta.
  • Acceso según tus reglasCada persona solo recibe respuestas de los documentos que puede leer, y cada lectura queda registrada.
  • Un servidor corrienteDocker Compose en una máquina Linux, desde 16 GB de RAM y sin GPU.
  • Código abiertoApache 2.0, con todo el código en GitHub y sin servidor de licencias.

Haz una pregunta y recibe una respuesta que puedes comprobar.

Archfold es un asistente privado para los documentos de tu empresa. Subes contratos, políticas y manuales, y la gente le pregunta en un chat, como le preguntaría a un compañero.

Cada respuesta muestra de dónde sale

Cada respuesta enumera los documentos que ha usado. Abre uno para ver el pasaje exacto, con las palabras coincidentes marcadas.

Cuando ningún documento responde a la pregunta, Archfold lo dice en lugar de inventarse algo. Cada respuesta está marcada como escrita por IA.

El chat de Archfold con una fuente abierta encima: un pasaje del contrato de suministro de Northwind, página 11, con las palabras usadas marcadasEl chat de Archfold con una fuente abierta encima: un pasaje del contrato de suministro de Northwind, página 11, con las palabras usadas marcadas
Búsqueda
Híbrida: búsqueda vectorial por significado y coincidencia exacta de palabras clave, para encontrar nombres, códigos y números tal cual
Modelo
Funciona en Ollama en tu servidor, llama3.1:8b por defecto
Respuestas
Transmitidas por WebSockets y marcadas como ai_generated en la API

Lee los archivos que ya tienes

PDF, Word, OpenDocument, Excel, CSV, JSON, XML, Markdown y texto plano. Sube hasta 50 archivos a la vez, de 32 MB cada uno, y sigue el procesamiento en directo.

Las tablas, los títulos y las filas de las hojas de cálculo conservan su estructura, así que una respuesta puede citar una celda o una cláusula.

La biblioteca de documentos: siete documentos de ejemplo con sus niveles de acceso y el progreso del procesamientoLa biblioteca de documentos: siete documentos de ejemplo con sus niveles de acceso y el progreso del procesamiento
Procesamiento
Un worker de Celery con RabbitMQ extrae el texto, lo corta por los límites de sección, genera los embeddings y lo indexa
Índice
Qdrant, con un modelo abierto de embeddings de Hugging Face
Fragmentos
CHUNK_SIZE=800, CHUNK_OVERLAP=150, modificables sin perder documentos

La administración diaria se hace en el navegador

Los administradores añaden personas, asignan roles, revisan el historial de chats y las valoraciones de las respuestas, y comprueban que todo funciona, todo desde la interfaz web.

Ajustes como el modelo de IA o los idiomas se cambian con un solo comando: uv run configure.

La página de estado del sistema con datos de ejemplo: base de datos, índice de búsqueda, almacenamiento de archivos, cola, modelos de IA y disco, todo en funcionamientoLa página de estado del sistema con datos de ejemplo: base de datos, índice de búsqueda, almacenamiento de archivos, cola, modelos de IA y disco, todo en funcionamiento

Se inicia sesión con la cuenta de trabajo

El inicio de sesión único funciona con Microsoft Entra ID, ADFS, Keycloak, Okta y otros. Los roles siguen a los grupos de tu directorio, y desactivar a un usuario termina sus sesiones al instante.

Los administradores conservan una contraseña, para poder entrar aunque el proveedor no funcione.

backend/.env, written by the guided setup
OIDC_ISSUER=https://login.example.comOIDC_CLIENT_ID=archfoldOIDC_GROUPS_CLAIM=groupsOIDC_ROLE_MAP=Archfold Admins=admin;Legal=legal

En el idioma de tu equipo

La interfaz y el asistente funcionan en inglés, español y francés. Usa un solo idioma o deja que cada persona elija el suyo en la cabecera. Todos pueden cambiar además entre el modo claro y el oscuro.

backend/.env
APP_LANGUAGE=enAPP_LANGUAGES=en,es,fr

Elige un modelo que responda bien en todos los idiomas que actives.

Todo funciona en un solo servidor que tú controlas.

Archfold es un stack de Docker Compose en un único servidor Linux. Crece en vertical: un servidor más potente, con una GPU mayor y un modelo más grande, atiende a más personas.

Tus preguntas se quedan dentro de tu empresa

Un asistente en la nube envía tus preguntas, y los documentos en los que se basan, a los servidores de otro, bajo las condiciones y la política de retención de ese proveedor. Según el proveedor y el plan, también pueden usarse para entrenar modelos.

En Archfold no interviene ningún proveedor. El modelo de IA funciona en tu servidor y, una vez instalado, el sistema no tiene ruta a Internet.

Archfold comparado con un asistente en la nube
Asistente en la nube Archfold
El modelo de IAEn los servidores del proveedorEn tu servidor
Su precioLo fija el proveedor, y puede cambiarSin cuota por usuario ni por pregunta: tu coste es el servidor
Tus preguntas y documentosSe envían al proveedor, bajo sus condicionesSe quedan en tu red
Entrenamiento con tus datosDepende del proveedor y del planNingún proveedor recibe tus datos
InternetNecesario para cada respuestaNecesario solo para instalar

El servidor no tiene salida

Después de la instalación, ninguna parte de Archfold puede llegar a Internet. La gente llega a un solo servicio, el servidor web, por HTTPS.

Las únicas excepciones son las que conectas tú: HashiCorp Vault, tu proveedor de SSO y tu almacenamiento S3, cada uno mediante un túnel a esa única dirección. Los archivos de documentos llegan a S3 ya cifrados.

Navegador
Internet

Tu servidor. Redes internas de Docker, sin ruta a Internet.

CaddyServidor web, el único servicio publicado
FastAPIAPI del backend
RabbitMQCola
CeleryWorker de documentos
OllamaModelo de IA local
PostgreSQLUsuarios, chats, auditoría
QdrantÍndice de búsqueda
Disco o S3Archivos de documentos

Cada persona solo recibe respuestas de lo que puede leer

Cada documento tiene uno de cuatro niveles de acceso: estándar, restringido, confidencial o secreto. El asistente responde solo a partir de los documentos que la persona que pregunta puede leer.

El registro de auditoría guarda quién leyó qué, incluidos los documentos que leyó el asistente para escribir una respuesta.

El registro de auditoría con datos de ejemplo: el chat de una persona leyó un contrato confidencial, otra abrió un documento secreto y un inicio de sesión fallido aparece en rojoEl registro de auditoría con datos de ejemplo: el chat de una persona leyó un contrato confidencial, otra abrió un documento secreto y un inicio de sesión fallido aparece en rojo
Niveles
Se aplican en la lista de documentos, en la búsqueda y en cada respuesta
Roles
Se construyen con permisos, sin posibilidad de conceder más de lo que se tiene
Auditoría
Inicios de sesión, cambios, lecturas de documentos y lecturas de chats de otros usuarios

Tus datos se cifran con tu clave

Los documentos, los chats y las copias de seguridad se guardan cifrados y no se pueden leer sin tu clave. Guarda una copia de la clave en un lugar seguro fuera del servidor.

Archfold no cifra algunas cosas, y aquí están enumeradas. Para ellas, guarda los datos del servidor en un disco cifrado.

Lee el resumen de seguridad

Se cifra

  • Archivos de documentos
  • Texto de documentos
  • Texto de los fragmentos de búsqueda
  • Chats
  • Registro de errores
  • Copias de seguridad

Archfold no lo cifra

  • Nombres de documentos
  • Correos de usuarios
  • Registro de auditoría
  • Vectores de búsqueda

Guárdalos en un disco cifrado, con LUKS.

Algoritmo
AES-256-GCM
Clave
En backend/.env o en HashiCorp Vault. Archfold se niega a arrancar con una clave que no coincide con los datos.
Rotación
deploy/deploy.sh rotate-key vuelve a cifrarlo todo

Tus desarrolladores pueden ampliarlo sin hacer un fork

Tus funciones propias viven en dos carpetas que las actualizaciones nunca tocan, así que sigues recibiendo actualizaciones.

Eso incluye endpoints de API, permisos, tablas y migraciones de base de datos, tareas en segundo plano, páginas, enlaces de la barra lateral, traducciones y temas.

Lee la guía de personalización

backend/src/custom/crm/__init__.py
from fastapi import APIRouter, Depends

from api.deps import require_permission

PERMISSIONS = (("crm.report", "CRM report", "View the CRM report"),)
router = APIRouter(prefix="/crm", tags=["crm"])


@router.get("/report")
async def report(_user=Depends(require_permission("crm.report"))) -> dict:
    return {"ok": True}

Se instala en un servidor Linux, con un solo script.

Puede hacerlo cualquiera que se maneje con un servidor Linux y Docker, sin Kubernetes ni equipo de DevOps. Una configuración guiada elige los modelos y genera todas las contraseñas y claves.

Qué necesitas

Servidor
Linux de 64 bits, una CPU x86-64 con AVX2 y un SSD. Consulta los tamaños en Hardware.
Software
Docker con Docker Compose v2, git y uv. Las GPU NVIDIA necesitan NVIDIA Container Toolkit.
Nombre de host
Por ejemplo, archfold.company.local
Internet
Solo durante la instalación, para descargar los modelos de IA
  1. Descarga el código y ejecuta la configuración guiada

    $ git clone https://github.com/deformator852/archfold && cd archfold$ cd backend && uv run install && cd ..# Keep the encryption key it shows in a safe place outside the server
  2. Configura la dirección y el certificado

    backend/.env
    SITE_ADDRESS=archfold.company.localTLS=internal
  3. Compila y arranca

    $ deploy/deploy.sh build$ deploy/deploy.sh up
  4. Crea el primer administrador

    $ deploy/deploy.sh admin you@company.com# then open https://archfold.company.local

Mantenerlo en marcha

Las actualizaciones, las copias de seguridad y las restauraciones usan el mismo script. Las migraciones de base de datos se ejecutan al arrancar, y tus extensiones se quedan como están.

# Update$ git pull$ deploy/deploy.sh build && deploy/deploy.sh up # Encrypted backup, and restore after checking every part of it$ deploy/deploy.sh backup /path/to/backups$ deploy/deploy.sh restore /path/to/backups # Change settings$ cd backend && uv run configure

Arranca en un servidor de 16 GB sin GPU.

Un modelo de 8B responde en un servidor corriente. Añade una GPU más adelante para obtener respuestas varias veces más rápidas, o una mayor para atender a más personas. Sin GPU, una respuesta tarda decenas de segundos.

Pequeño

Hasta 50 usuarios

Modelo de IA
llama3.1:8b (por defecto) o qwen3:8b
Mínimo
4 núcleos de CPU, 16 GB de RAM, SSD de 80 GB, sin GPU
Recomendado
8 núcleos de CPU, 32 GB de RAM, SSD de 200 GB, GPU con 12 GB de VRAM
Respuestas a la vez
De 1 a 2 en CPU, 4 con GPU

Mediano

De 50 a 500 usuarios

Modelo de IA
gemma3:12b
Mínimo
8 núcleos de CPU, 32 GB de RAM, SSD de 150 GB, GPU con 16 GB de VRAM
Recomendado
16 núcleos de CPU, 64 GB de RAM, SSD NVMe de 500 GB, GPU con 24 GB de VRAM
Respuestas a la vez
2 como mínimo, 4 recomendadas

Grande

500 usuarios o más

Modelo de IA
gemma3:27b o qwen3:32b, llama3.3:70b para las mejores respuestas
Mínimo
16 núcleos de CPU, 64 GB de RAM, SSD NVMe de 500 GB, GPU con 48 GB de VRAM
Recomendado
32 núcleos de CPU, 128 GB de RAM, SSD NVMe de 1 TB, 80 GB de VRAM o más
Respuestas a la vez
4 o más

Son estimaciones para el contexto predeterminado de 16 384 tokens. Prevé espacio en disco para las imágenes de Docker (unos 20 GB), los modelos de IA (5 GB para un modelo de 8B, unos 43 GB para uno de 70B) y aproximadamente el doble del tamaño de tus documentos. Guarda las copias de seguridad en otra máquina.

Desarrollado en abierto

Los informes de errores y los pull requests son bienvenidos. Abre una incidencia antes de un cambio grande, para no construir algo que no se pueda fusionar.

Creado y mantenido por Nikita Kostenko, desarrollador independiente: LinkedIn, GitHub, nikitakostenko.com.

README
Funciones, ajustes y todos los comandos
Guía de despliegue
Instalación, SSO, S3, copias de seguridad, cifrado de disco, Vault y resolución de problemas
Guía de personalización
Extensiones en custom/: endpoints, páginas, temas y migraciones
Registro de cambios
Qué cambia cada versión
Cómo contribuir
Las comprobaciones que hay que ejecutar y lo que debe incluir un cambio
Política de seguridad
Cómo informar de una vulnerabilidad