AI-Powered Scientific Literature Lifecycle Management
δΈζ Β· Documentation Β· Quick Start Β· Report Bug
Omelette is a full-stack application for managing the complete scientific literature lifecycle. Search across academic databases, deduplicate results, download and OCR papers, build RAG-powered knowledge bases, and interact with your literature through a ChatGPT-style conversational interface.
Om (Omni-) + Lit (Literature) = Omlit β Omelette π³
- Keyword Management β Three-level hierarchy with LLM-powered term expansion and search formula generation for WOS, Scopus, PubMed
- Multi-Source Search β Federated search across Semantic Scholar, OpenAlex, arXiv, and Crossref
- Smart Deduplication β Three-stage pipeline: DOI exact match β title similarity β LLM verification
- PDF Crawler β Multi-channel download via Unpaywall, arXiv, and direct URL fallback
- OCR Processing β MinerU (auto-managed) + pdfplumber + PaddleOCR for scanned PDFs
- Incremental Subscription β RSS and API-based scheduled updates
- RAG Knowledge Base β LlamaIndex + ChromaDB with GPU-aware embeddings, hybrid retrieval, and cited answers
- Chat Playground β ChatGPT-style conversational interface for literature Q&A
- Multi-Provider LLM β LangChain integration for OpenAI, Anthropic, Aliyun, Volcengine, and Ollama
- LangGraph Pipeline β StateGraph-based orchestration with HITL interrupt/resume
- Audio Overviews β LLM-generated dialogue audio for paper collections
- Citation Tools β APA, MLA, Chicago, IEEE, GB/T 7714 styles with bibliography builder
- Author Network β d3-force directed graph of co-authorship relationships
- Trend Analysis β Year-binned topic trends with emerging/declining detection
- Gap Analysis β LLM-powered research gap identification with novelty scoring
- Version Tracking β Paper version history with Semantic Scholar polling
- Paper Comparison β Side-by-side comparison with diff highlighting
- Team Members β Project team management with RBAC (read/write/admin)
- API Keys β SHA-256 hashed keys with scope-based access control
- Collection Management β Custom paper collections with AI-suggested tags
- MCP Integration β Model Context Protocol server for AI IDE clients
- i18n β Full Chinese/English bilingual support
- PWA β Installable with offline caching
- Responsive β Mobile-optimized with horizontal scroll navigation
- Dark Mode β System-aware theme
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React 18) β
β TypeScript Β· Vite Β· TailwindCSS Β· shadcn/ui Β· TanStack β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Backend (FastAPI) β
β Python 3.12 Β· SQLAlchemy 2 (async) Β· Pydantic v2 β
ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββ€
β Search β Dedup β Crawler β OCR β RAG β
β LangChainβ Semantic β Unpaywallβ MinerU β LlamaIndex β
β OpenAlexβ Scholar β arXiv βPaddleOCR β ChromaDB β
ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββ€
β Storage: SQLite + ChromaDB β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, TailwindCSS v4, shadcn/ui, TanStack Query |
| Backend | FastAPI, SQLAlchemy 2 (async), Pydantic v2, Python 3.12 |
| Database | SQLite + aiosqlite, Alembic migrations |
| Vector Store | ChromaDB |
| RAG | LlamaIndex with GPU-aware BAAI/bge-m3 embeddings |
| LLM | LangChain (OpenAI, Anthropic, Aliyun Bailian, Volcengine, Ollama) |
| Orchestration | LangGraph with HITL interrupt/resume |
| OCR | MinerU (auto-managed) + pdfplumber (native) + PaddleOCR (scanned) |
| Docs | VitePress (bilingual EN/ZH) |
- Conda or Miniconda
- Node.js 22+
- (Optional) CUDA for GPU-accelerated OCR and embeddings
git clone git@github.com:sylvanding/omelette.git
cd omelette
# Backend
conda env create -f environment.yml
conda activate omelette
cp .env.example .env # Edit with your API keys
cd backend && alembic upgrade head
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# Frontend (new terminal)
cd frontend && npm install
npm run dev -- --port 3000Open http://localhost:3000.
| Variable | Description |
|---|---|
DATABASE_URL |
SQLite path (default: sqlite:///./data/omelette.db) |
DATA_DIR |
Base path for PDFs, OCR output, ChromaDB |
LLM_PROVIDER |
openai, anthropic, aliyun, volcengine, ollama, or mock |
OPENAI_API_KEY |
OpenAI API key |
ANTHROPIC_API_KEY |
Anthropic API key |
PDF_PARSER |
auto, mineru, or pdfplumber |
GPU_MODE |
conservative, balanced (default), aggressive |
See .env.example for the full list.
# Frontend
cd frontend
npm test # 273 tests (Vitest + Testing Library)
npx tsc --noEmit # TypeScript check
npx eslint src/ # Lint
# Backend
cd backend
pytest tests/ -v # 861 tests (pytest-asyncio)
ruff check app/ # Lint
# E2E
npx playwright test # 39 tests (requires frontend dev server)Base URL: /api/v1
| Endpoint | Description |
|---|---|
GET/POST /projects |
Project CRUD |
GET/POST /projects/{id}/papers |
Paper management with search, filter, sort |
GET/POST /projects/{id}/keywords |
Keyword hierarchy |
POST /projects/{id}/search/execute |
Federated academic search |
POST /projects/{id}/dedup/run |
Run deduplication |
POST /projects/{id}/crawl/start |
Start PDF download |
POST /projects/{id}/ocr/process |
Run OCR on papers |
POST /projects/{id}/rag/index |
Build vector index |
POST /projects/{id}/rag/query |
RAG retrieval |
POST /chat |
Chat messages (playground) |
GET/POST /projects/{id}/collections |
Paper collections |
GET/POST /subscriptions |
Subscription management |
GET /projects/{id}/analytics |
Reading analytics |
POST /projects/{id}/concepts/extract |
Concept extraction |
POST /projects/{id}/analysis/contradictions |
Contradiction detection |
Full documentation: API Reference
omelette/
βββ backend/ # FastAPI application
β βββ app/
β β βββ api/v1/ # REST endpoints (33 modules)
β β βββ models/ # SQLAlchemy ORM models
β β βββ schemas/ # Pydantic request/response schemas
β β βββ services/ # Business logic + LLM services
β β βββ pipelines/ # LangGraph pipeline definitions
β βββ alembic/ # Database migrations
β βββ mcp_server.py # MCP (Model Context Protocol) server
β βββ tests/ # pytest-asyncio tests (861 tests)
βββ frontend/ # React SPA
β βββ src/
β βββ pages/ # Route components (35 project pages)
β βββ components/ # Reusable UI + layout
β βββ services/ # Typed API client
β βββ hooks/ # Custom hooks
β βββ i18n/ # zh/en translations
β βββ test/ # Vitest setup, MSW mocks
βββ e2e/ # Playwright E2E tests (39 tests)
βββ docs/ # VitePress documentation (EN/ZH)
βββ scripts/ralph/ # Ralph autonomous agent workflow
βββ .github/workflows/ # CI (ruff, pytest, vitest, tsc)
See CONTRIBUTING.md for guidelines.
MIT License β Copyright Β© 2026 Sylvan Ding
