AI-powered citation search & paper review for Overleaf
Find relevant papers to cite and get feedback on your writing, without leaving the editor.
- Open any project on overleaf.com
- Click the green OpenLeaf button in the bottom-right corner
- Citations tab — click "Find Citations" to discover papers paragraph by paragraph, scored 0-100 with LLM reasoning
- Review tab — get AI feedback on your paper in Friendly (constructive) or Fire (Reviewer #2) mode
- Click + Add to append BibTeX entries to your
.bibfile automatically
OpenLeaf is a Manifest V3 web extension. A single Chromium build serves Chrome, Opera, and Edge; Safari is built from the same source through Apple's converter.
| Browser | Supported | How |
|---|---|---|
| Chrome | ✅ | Web Store, or load unpacked |
| Opera | ✅ | Load unpacked, or the Chromium zip |
| Edge | ✅ | Load unpacked, or the Chromium zip |
| Safari 16.4+ | ✅ | Build the Xcode project (macOS, needs Xcode) |
- Download the latest
openleaf-chromium-vX.Y.Z.zipfrom Releases and unzip it (or build it yourself — see From source). - Open your browser's extensions page:
- Chrome / Edge:
chrome://extensions - Opera:
opera://extensions
- Chrome / Edge:
- Enable Developer mode.
- Click Load unpacked and select the unzipped folder.
Safari runs the same extension wrapped in a small native app, which you build once with Xcode:
git clone https://github.com/demfier/openleaf.git
cd openleaf
npm install
npm run package:safari # generates an Xcode project under safari/Requires the full Xcode app, not just the Command Line Tools. If the converter is missing, install Xcode from the App Store, run
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer, then re-run the command.
Then:
- Open the generated project in
safari/with Xcode. - Product → Run to build and install the app.
- For locally-built (unsigned) extensions, enable Safari's Develop → Allow Unsigned Extensions, then turn on OpenLeaf under Safari → Settings → Extensions.
git clone https://github.com/demfier/openleaf.git
cd openleaf
npm install
npm run build # outputs to dist/Then load unpacked (see above), selecting the repo root folder. To produce a distributable zip instead, run npm run package:chromium → web-ext-artifacts/openleaf-chromium-vX.Y.Z.zip.
Click the extension icon → Options (or right-click → Options) to configure:
Works with any OpenAI-compatible API:
| Backend | Base URL | API Key? |
|---|---|---|
| Ollama (default) | http://localhost:11434/v1 |
No |
| vLLM | http://your-server:8000/v1 |
Optional |
| OpenAI | https://api.openai.com/v1 |
Yes |
| OpenRouter | https://openrouter.ai/api/v1 |
Yes |
| Together | https://api.together.xyz/v1 |
Yes |
| Groq | https://api.groq.com/openai/v1 |
Yes |
Ollama on Mac/Linux: By default, Ollama blocks requests from browser extensions. You need to allow Chrome extension origins before starting Ollama:
OLLAMA_ORIGINS=chrome-extension://* ollama serveTo set this permanently:
launchctl setenv OLLAMA_ORIGINS "chrome-extension://*"Then restart Ollama. Without this, the reviewer will return a 403 error.
- Semantic Scholar — works without key (rate-limited)
- Serper (Google Scholar) — optional, skipped if no key
- OpenAlex — no key needed, email improves rate limits
npm run dev # build + watch mode
npm run build # one-off build → dist/
npm run package:chromium # zip for Chrome/Opera/Edge → web-ext-artifacts/
npm run package:safari # Xcode project for Safari → safari/ (needs Xcode)After changing code, reload the extension from your browser's extensions page (chrome://extensions or opera://extensions). For Safari, re-run the app from Xcode.
See PRIVACY.md. TL;DR: No data collection, no analytics, no accounts. Everything stays in your browser.
MIT






