Skip to the text
Scholaris

Scholaris on your computer, or in your own Cloudflare account

The same app with SQLite and your disk: on Node, in Docker, as a desktop executable or deployed to your Cloudflare account. What stays on your machine and what still needs the cloud.

Reviewed on This page as Markdown

Four ways

The instance at scholaris.joseluissaorin.com is the hosted version, the one paid for with the Pro plan. The same code also runs on your computer:

HowWhat it isWhere your data lives
NodeThe same API on Node, SQLite (with sqlite-vec for vectors) and the disk, with a queue that resumes if interrupted; listens on port 8790The folder you choose
DockerThe same in a container with ffmpeg; a variant adds InferBox, a model server with an NVIDIA GPUA Docker volume
DesktopA single executable (Bun) for macOS, Windows and Linux, with the web app inside, that opens the browser on start~/Scholaris
Your Cloudflare accountA script creates the database, storage, vector index and queue, and deploys the Worker (needs paid Workers)Your account

The home version has no quotas: the "local" plan does not limit documents, pages or searches, and takes files up to 16 GB. It can have a single user, several without an external account, or use Clerk to sign in.

Open source

The code will be published under the EUPL-1.2 at github.com/joseluissaorin/scholaris-v2. While the review is finished the repository is private: we are not giving a date. The exact installation commands will be in its README, which takes precedence over this page. The Python SDK already carries the same licence.

What stays on your machine and what does not

In the home version, your files, your library, the vectors and the index live on your disk. But Scholaris does not work fully offline: to read pages it needs at least one cloud reader.

PieceOfflineWith a cloud provider
Reading pages (scans, photos, slides)No local reader yetGemini, OpenRouter (Mistral OCR) or Workers AI
VectorsInferBox (Qwen3-VL Embedding, 2048 dimensions)Gemini Embedding 2
Reranking and judgingInferBoxJev (TypeSafe) or Workers AI
TranscribingInferBoxGemini Transcribe or Whisper on Workers AI
Drafting answersInferBoxGemini or OpenRouter
Searching and citing what is already readYes: word search always; search by meaning, with InferBox

In practice the Gemini key is the only required one; OpenRouter, TypeSafe, Workers AI and OpenAlex are optional. What does work fully offline is opening and searching an .spdf that has already been read with the Python SDK (see The SPDF format).

The same from outside

The home version speaks the same API (v1 and v2) and the same MCP as the cloud, so the Python SDK, the examples in the API guide and agents work the same pointed at http://localhost:8790.