Skip to content

Repository files navigation

Omelette Banner

AI-Powered Scientific Literature Lifecycle Management

CILicensePython 3.12Node.js 22+FastAPIReact 18Docs

δΈ­ζ–‡ Β· 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 🍳

Features

Literature Pipeline

  • 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

AI & Knowledge Management

  • 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

Research Tools

  • 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

Collaboration

  • 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

User Experience

  • i18n β€” Full Chinese/English bilingual support
  • PWA β€” Installable with offline caching
  • Responsive β€” Mobile-optimized with horizontal scroll navigation
  • Dark Mode β€” System-aware theme

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 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 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
LayerTechnology
FrontendReact 18, TypeScript, Vite, TailwindCSS v4, shadcn/ui, TanStack Query
BackendFastAPI, SQLAlchemy 2 (async), Pydantic v2, Python 3.12
DatabaseSQLite + aiosqlite, Alembic migrations
Vector StoreChromaDB
RAGLlamaIndex with GPU-aware BAAI/bge-m3 embeddings
LLMLangChain (OpenAI, Anthropic, Aliyun Bailian, Volcengine, Ollama)
OrchestrationLangGraph with HITL interrupt/resume
OCRMinerU (auto-managed) + pdfplumber (native) + PaddleOCR (scanned)
DocsVitePress (bilingual EN/ZH)

Quick Start

Prerequisites

  • Conda or Miniconda
  • Node.js 22+
  • (Optional) CUDA for GPU-accelerated OCR and embeddings

Setup

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 keyscd 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 3000

Open http://localhost:3000.

Key Environment Variables

VariableDescription
DATABASE_URLSQLite path (default: sqlite:///./data/omelette.db)
DATA_DIRBase path for PDFs, OCR output, ChromaDB
LLM_PROVIDERopenai, anthropic, aliyun, volcengine, ollama, or mock
OPENAI_API_KEYOpenAI API key
ANTHROPIC_API_KEYAnthropic API key
PDF_PARSERauto, mineru, or pdfplumber
GPU_MODEconservative, balanced (default), aggressive

See .env.example for the full list.

Development

# Frontendcd frontend
npm test# 273 tests (Vitest + Testing Library)
npx tsc --noEmit # TypeScript check
npx eslint src/ # Lint# Backendcd backend
pytest tests/ -v # 861 tests (pytest-asyncio)
ruff check app/ # Lint# E2E
npx playwright test# 39 tests (requires frontend dev server)

API Overview

Base URL: /api/v1

EndpointDescription
GET/POST /projectsProject CRUD
GET/POST /projects/{id}/papersPaper management with search, filter, sort
GET/POST /projects/{id}/keywordsKeyword hierarchy
POST /projects/{id}/search/executeFederated academic search
POST /projects/{id}/dedup/runRun deduplication
POST /projects/{id}/crawl/startStart PDF download
POST /projects/{id}/ocr/processRun OCR on papers
POST /projects/{id}/rag/indexBuild vector index
POST /projects/{id}/rag/queryRAG retrieval
POST /chatChat messages (playground)
GET/POST /projects/{id}/collectionsPaper collections
GET/POST /subscriptionsSubscription management
GET /projects/{id}/analyticsReading analytics
POST /projects/{id}/concepts/extractConcept extraction
POST /projects/{id}/analysis/contradictionsContradiction detection

Full documentation: API Reference

Project Structure

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)

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT License β€” Copyright Β© 2026 Sylvan Ding

About

🍳 Omelette: AI-Powered Scientific Literature Lifecycle Management

Topics

Resources

Contributing

Security policy

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages