Navigate the sea of academic papers — with AI as your co-pilot.
Features • Quick Start • Sources • Architecture • Contributing
Paper Pilot is a local-first desktop research assistant built for scientists who are tired of switching between 10 browser tabs to find, read, and synthesize academic papers.
Everything runs on your machine — your papers, your notes, your AI conversations. No cloud lock-in, no subscription fees, no data leaving your computer.
You ──▶ Ask a research question
│
▼
Paper Pilot crawls 8+ academic sources simultaneously
│
▼
Papers downloaded → converted → indexed (FTS5 + vector search)
│
▼
AI synthesizes insights from your local corpus
│
▼
You ──▶ Get answers grounded in real papers, not hallucinations
| ### 🔍 Multi-Source Paper Crawling Simultaneously queries **8+ academic databases**: - OpenAlex, Crossref, Semantic Scholar - PubMed/PMC, arXiv, Europe PMC - CORE, Unpaywall - Google Scholar (experimental) | ### 🤖 AI-Assisted Synthesis - **Local Ollama** for fully offline operation - **OpenAI-compatible** API support - Vercel AI Gateway support with non-generating provider health checks - Tool-calling agent with citation grounding - Chat workspace with full conversation history |
| ### 🗄️ Smart Local Storage - **SQLite** with `node:sqlite` (zero dependencies) - **FTS5** full-text search across all papers - **`sqlite-vec`** vector similarity search - Project-scoped storage — keep research contexts separate | ### 📄 PDF → Knowledge Pipeline - Open-access PDF auto-fetching via Unpaywall - **MarkItDown** conversion for AI-ready text - Python virtualenv isolation for scripting tools - Secure credential storage via Electron `safeStorage` |
Requirements:
- Node.js >= 22.18.0
- Python 3.11+
- (Optional) Ollama for local AI
# Clone and install
git clone https://github.com/Xueyang-Song/paper-pilot.git
cd paper-pilot
npm install
# Run in development
npm run dev
# Build for production
npm run build
# Package as desktop app
npm run package
Note: Dev server must use
http://127.0.0.1:5173. If that port is busy, free it before running.
| Source | Type | API Key Required |
|---|---|---|
| OpenAlex | Multidisciplinary | Optional (email) |
| Crossref | Multidisciplinary | Optional (email) |
| Semantic Scholar | CS + Science | Recommended |
| PubMed / PMC | Biomedical | No |
| arXiv | Physics/CS/Math | No |
| Europe PMC | Life Sciences | No |
| CORE | Open Access | Required |
| Unpaywall | Open Access PDFs | Optional (email) |
| Google Scholar | All fields | No (experimental ⚠️) |
paper-pilot/
├── src/
│ ├── electron/ # Main process (Node.js)
│ │ ├── crawlers/ # Academic source adapters
│ │ ├── db/ # SQLite + FTS5 + sqlite-vec
│ │ ├── agent/ # AI tool-calling agent
│ │ └── python/ # MarkItDown + Playwright bridge
│ └── renderer/ # React 19 + Vite UI
│ ├── workspace/ # ChatGPT-style chat interface
│ ├── projects/ # Project management rail
│ ├── artifacts/ # Paper & artifact panel
│ └── settings/ # API keys, policies
├── tests/ # Vitest test suite
└── package.json
Tech Stack:
This is an early v1 — buildable, test-covered, but still hardening for production-level reliability.
| Area | Status |
|---|---|
| Core crawlers (OpenAlex, Crossref, arXiv, PubMed) | ✅ Stable |
| SQLite + FTS5 + vector search | ✅ Stable |
| AI agent (Ollama / OpenAI-compatible) | ✅ Stable |
| Google Scholar crawler | ⚠️ Experimental |
| macOS / Linux packaging | ⚠️ Untested |
| Cloud sync / collaboration | ❌ Not planned |
Contributions welcome. Please open an issue before large PRs to discuss approach.
npm run verify # Typecheck, tests, and production build
npm run test # Run test suite (Vitest)
npm run typecheck # TypeScript strict checks
npm run test:crawlers:api # Live no-key HTTP source smoke
npm run test:crawlers:browser # Playwright browser crawler smoke
Built by a researcher, for researchers.
$ claude mcp add paper-pilot \
-- python -m otcore.mcp_server <graph>