Skip to content

sylvanding/omelette

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

216 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Omelette Banner

AI-Powered Scientific Literature Lifecycle Management

CI License Python 3.12 Node.js 22+ FastAPI React 18 Docs

δΈ­ζ–‡ Β· 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             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
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)

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

Open http://localhost:3000.

Key Environment Variables

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.

Development

# 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)

API Overview

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

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

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors