Saltar al texto
Scholaris

Scholaris en tu ordenador o en tu propia cuenta de Cloudflare

La misma aplicación con SQLite y tu disco: en Node, en Docker, como ejecutable de escritorio o desplegada en tu cuenta de Cloudflare. Qué se queda en tu máquina y cómo funciona sin conexión.

Revisado el Esta página en Markdown

Cuatro maneras

La instancia de scholaris.joseluissaorin.com es la versión alojada, la que se paga con el plan Pro. El mismo código funciona también en tu ordenador:

CómoQué esDónde quedan tus datos
NodeLa misma API sobre Node, SQLite (con sqlite-vec para los vectores) y el disco, con una cola que se reanuda si se corta; escucha en el puerto 8790La carpeta que elijas
DockerLo mismo en un contenedor con ffmpeg; una variante lo monta sin conexión con sus modelos (Ollama, EmbeddingGemma 2 y Whisper), con o sin GPU NVIDIAUn volumen de Docker
EscritorioUn solo ejecutable (Bun) para macOS, Windows y Linux, con la web dentro, que abre el navegador al arrancar~/Scholaris
Tu cuenta de CloudflareUn guion crea la base de datos, el almacenamiento, el índice de vectores y la cola, y despliega el Worker (necesita Workers de pago)Tu cuenta

La versión local no tiene cuotas: el plan «local» no limita documentos, páginas ni búsquedas, y admite ficheros de hasta 16 GB. Puede tener un solo usuario, varios sin cuenta externa o usar Clerk para iniciar sesión.

Código abierto

El código se publicará con licencia EUPL-1.2 en github.com/joseluissaorin/scholaris-v2. Mientras se termina de revisar, el repositorio es privado: no damos fecha. Las órdenes exactas de instalación estarán en su README, que manda sobre esta página. El SDK de Python ya tiene esa misma licencia.

Qué se queda en tu máquina y qué no

En la versión local, tus ficheros, tu biblioteca, los vectores y el índice viven en tu disco. La inteligencia se elige:

  • Con tus claves (Gemini; OpenRouter, TypeSafe y Workers AI opcionales): lo más rápido y lo más fiel. Las páginas, el audio y los pasajes van a esos proveedores, con sus condiciones.
  • Sin conexión (SCHOLARIS_SIN_CONEXION=1): ninguna clave de nube. Todo corre en tu máquina o en tu red y nada sale a internet; una guardia de red bloquea y anota cualquier intento, y una prueba de punta a punta lo comprueba.
PiezaSin conexiónCon un proveedor en la nube
Leer páginas (escaneados, fotos, diapositivas)Un modelo de visión propio: Qwen3-VL 8B Instruct en Ollama, llama.cpp o vLLMGemini, OpenRouter (Mistral OCR) o Workers AI
VectoresEmbeddingGemma 2 (texto, imagen, audio y vídeo, 768 dimensiones), en un servidor propio o en InferBoxGemini Embedding 2
Reordenarbge-reranker-v2-m3Jev (TypeSafe) o Workers AI
Juzgar citas y redactarEl mismo modelo de visión, con probabilidades de los logprobsJev, Gemini u OpenRouter
TranscribirWhisper large-v3-turbo (whisper.cpp) o Parakeet en InferBoxGemini Transcribe o Whisper en Workers AI
Fichas bibliográficasSolo lo que dice el documento (los catálogos en línea se abren con SCHOLARIS_CATALOGOS=1)Crossref, OpenAlex, Open Library, Wikidata

Lo que cuesta, medido en un Mac con M4 Max: una página escaneada del siglo XVIII tarda unos 26 s (la nube lee el libro entero en 13-20 s), con un CER de 0,06 en la página transcrita a mano frente a 0,006 con Gemini; 19 minutos de audio quedan listos en 2 min 34 s; la búsqueda da 0,804 de nDCG@10 frente a 0,899; y las citas que acepta son todas correctas y ninguna inventada, aunque deja sin cita más afirmaciones que la nube (61,5 % de exhaustividad frente a 100 %). Solo con CPU, leer escaneados se mide en minutos por página. El informe completo, con cómo reproducirlo, está en el repositorio (packages/proveedores/SIN-CONEXION.md), y el Docker de todo junto en deploy/docker/compose.sin-conexion.yml.

Además, abrir y buscar un .spdf ya leído funciona sin nada de lo anterior, con el SDK de Python (ver El formato SPDF).

Lo mismo por fuera

La versión local habla la misma API (v1 y v2) y el mismo MCP que la nube, así que el SDK de Python, los ejemplos de la guía de la API y los agentes funcionan igual apuntando a http://localhost:8790.