What Quivr ingests and what it chokes on
Text PDFs: excellent. Upload a 50-page PDF, Quivr chunks it, creates embeddings, and answers questions with page citations. Markdown files: excellent. My 96 review files were ingested and searchable within 10 minutes. Code repos: poor. It ingests the files as text but loses the code structure (imports, function calls, class hierarchies). Questions like 'which functions call the database layer' return vague answers. Websites: mixed. Simple documentation pages work. JavaScript-heavy SPAs return empty content (same problem as Firecrawl). YouTube transcripts: good, but uses the auto-generated captions which are 85% accurate.
The Supabase dependency: self-hosting is not simple
Quivr's Docker Compose pulls: Quivr frontend, Quivr backend, Supabase (auth + DB + storage + realtime + edge functions + Kong API gateway), Redis, and a vectorizer. Total: 10+ containers. On a 4GB RAM machine, this maxes out memory. The Supabase dependency makes self-hosting harder than necessary. AnythingLLM runs in a single container. Quivr runs in 10. The tradeoff is that Supabase gives you auth, file storage, and real-time features that AnythingLLM lacks.
The brain metaphor: how it organizes knowledge
Quivr organizes documents into 'brains': named knowledge bases with their own settings. I created a 'saas.pet docs' brain for development knowledge and a 'market research' brain for competitor analysis. Each brain has its own embedding model, chunk size, and prompt template. This separation means you do not get development answers mixed with market research. The brains share a Supabase instance but are logically isolated. This is the right abstraction for organizing knowledge.
API and integrations: more than just a chat UI
Quivr has a REST API and Python SDK. You can programmatically upload documents, query brains, and get cited answers. The SDK is simple: `from quivr import Brain; brain = Brain('my-brain'); brain.upload('doc.pdf'); answer = brain.ask('summarize this document')`. I integrated this into my review pipeline: new tool data gets uploaded to a Quivr brain, then I query the brain during review writing for reference material. The API worked reliably during my 2-week test.
Quivr vs AnythingLLM vs custom RAG
Quivr: best brain organization, good API, Supabase dependency adds complexity. Use for team knowledge bases where auth matters. AnythingLLM: simpler, single container, local-first. Use for personal RAG. Custom RAG (LangChain + vector DB): maximum control, maximum development time. Use when you need specific features neither platform provides.