Skip to content

Components

The React application provides workspace navigation, document management, research conversations, source previews, working documents, profiles, and administration surfaces. At runtime it needs the public backend base URL.

The ASP.NET Core application owns authentication, authorization, workspace and organization rules, document and indexing orchestration, research conversations, citations, exports, provider selection, and the public API.

It is the security boundary between users and tenant-owned database or object-storage data.

PostgreSQL stores application records and vector embeddings. The service is private and should not be exposed publicly. The regular backend process refuses to start with pending Entity Framework migrations; migrations must be applied deliberately before serving traffic.

The Compose topology includes scheduled PostgreSQL backups with daily, weekly, and monthly retention. Operators remain responsible for protecting the backup destination and testing restoration.

Garage provides local S3-compatible storage. It can be replaced with AWS S3 or another compatible service by changing the S3 settings and credentials. Uploaded sources and extraction artifacts live here, so retention and recovery policies must cover this store as well as PostgreSQL.

Caddy provides reverse proxying and automatic TLS for a single-host deployment. It can be replaced by an existing proxy or ingress. The replacement must route both frontend and backend addresses and preserve trusted forwarded-header behavior.

Ollama provides local chat, embedding, and reranking models when configured. On macOS, native Ollama is preferred for development because Linux containers cannot use Apple Metal acceleration.

The standalone Python service uses Docling to convert supported files into structured chunks. It can run standard or vision pipelines, OCR scanned content, detect tables, and optionally enrich formulas, code, and pictures.

Each job runs in a disposable subprocess and temporary scratch directory. The production posture uses a read-only root filesystem, dropped Linux capabilities, no-new-privileges, and tmpfs mounts.

Browser
→ Reverse proxy
→ Frontend
→ Backend
├─ PostgreSQL + pgvector
├─ S3-compatible object storage
├─ Extractor
├─ Chat provider
├─ Embedding provider
├─ Reranking provider
└─ SMTP server

Optional components are connected by configured URLs. The backend does not depend on a specific local Compose service name when an external implementation is supplied.