multi-tenant rag platform
Aether
A multi-tenant knowledge platform built around a reliable RAG engine, with strict tenant isolation and traced async ingestion.
Context
Most RAG demos ignore what a real deployment needs: tenants that cannot see each other’s data, ingestion that survives failures, and enough observability to explain a bad answer.
What I built
Aether is a multi-tenant semantic knowledge platform:
- Tenancy. Better Auth organisations are the tenants, with invitations and roles.
- Ingestion. Uploads go to MinIO and are processed asynchronously by a BullMQ worker on Redis; embeddings are stored in Qdrant.
- Answers. The Ask flow streams a grounded answer with expandable citations (document, chunk, score, confidence), keeps follow-ups in context, and refuses explicitly when the organisation’s documents do not support an answer.
- Observability. OpenTelemetry and Pino across the API and worker.
- Local by default. Embeddings and chat run on Ollama in Docker, so data stays on the host.
Stack: TypeScript, Fastify, PostgreSQL with Drizzle, Qdrant, Redis + BullMQ, MinIO, OpenTelemetry, Docker Compose, and a React + Vite console.