Skip to main content

SciLibra logo

SciLibra

Your scientific articles, PDFs and notes - organised, searchable and safely backed up.
A free, open-source desktop app for researchers: BibTeX + PDF library, built-in PDF reader & annotator, and one-click Google Drive backup.

PyPI Python Kivy Platforms License

Features · Screenshots · Installation · Quick start · Google Drive backup

SciLibra main window


✨ Features

📥 Add articles your way

  • Import a .bib file - every entry type; PDFs named <key>.pdf next to it are linked automatically
  • Paste BibTeX from Google Scholar or a journal website
  • Drop in PDFs (files or a whole folder) - the DOI is read from each PDF and the details are downloaded from Crossref
  • Fill in a form - or just type a DOI and press Fetch details

🔎 Find anything in seconds

  • Group by keywords, tag groups, authors, year or journal - with counts
  • Filter any list as you type
  • Search titles, authors, abstracts, keywords, comments, DOI… and the notes inside your PDFs
  • Several terms with ; - any term, or all of them

📖 Read & annotate

  • Built-in reader that reopens each paper where you stopped
  • Highlight, underline, strike out, sticky notes, text boxes, pen, shapes, eraser, 6 colours, undo
  • Select text to copy it with a citation - “…” (Xu et al., 2024, p. 5)
  • Annotations are saved inside the PDF, so Acrobat, Zotero or Okular show them too

📝 Your notes, everywhere

  • Every highlight and note is listed with the article and is searchable
  • Save them as comments, or export them to Markdown for your literature review
  • Add your own comments and tag groups (to-read, thesis chapter 2…)

☁️ One-click Google Drive backup

  • Library, PDFs and annotations backed up automatically
  • A dated copy every day for the last 10 days
  • Restore everything on a new computer
  • SciLibra only sees the files it created - never your other Drive files

🎨 Modern and friendly

  • Material-style design, light and dark themes
  • Animated start screen, hover effects, rounded cards
  • A Help center with step-by-step guides and keyboard shortcuts
  • Safe by design: confirmations before deleting, PDFs are never deleted, automatic backups

📸 Screenshots

Browse by keywords

Browse by keywords, tag groups, authors, year or journal

PDF reader with highlights

Built-in reader with highlights and notes

Dark theme

Dark theme

Help center

Help center

Start screen

Start screen

🚀 Installation

Requires Python 3.9 or newer. Install from PyPI:

pip install scilibra
scilibra                            # start it (or: python -m scilibra)
scilibra path/to/other-library.db   # open another library

Tip: install it in its own environment, e.g. pipx install scilibra or a virtual environment.

Install from source
git clone https://github.com/AlsammanAlsamman/SciLibra.git
cd SciLibra
python3 -m venv .venv
.venv/bin/pip install -e .          # Windows: .venv\Scripts\pip install -e .
.venv/bin/scilibra

Your library lives in ~/.local/share/scilibra/library.db (Windows: %APPDATA%\SciLibra, macOS: ~/Library/Application Support/SciLibra). Set SCILIBRA_HOME to use another folder.

Desktop shortcut (Linux)

Edit the paths in SciLibra.desktop, then:

cp SciLibra.desktop ~/.local/share/applications/
Coming from SciLibra 1.x?

On the first start, an existing scilibraLibrary.db in the current folder or the project folder is copied to the location above and upgraded. The original file is not changed, and a backup of the pre-upgrade copy is kept next to it.

🧭 Quick start

  1. Add › Import BibTeX file (or Add › Add PDF files).
  2. PDFs somewhere else? Library › Link PDF folder connects PDFs named <key>.pdf in that folder and its sub-folders. For other file names use Attach PDF…
  3. Choose Group by › Keywords (or Tag groups, Authors…) and click a group to open it.
  4. Select an article to see its details - double-click it to read and annotate the PDF.
  5. Press Google Drive (top right) to switch on the backup.

Everything is also explained inside the app: Help › How to use SciLibra.

⌨️ Keyboard shortcuts

Main window PDF reader
Ctrl+F Search the library H U S Highlight · underline · strike
Ctrl+L Filter the list N B Sticky note · text box
Ctrl+I Import BibTeX D R O A L Pen · rectangle · ellipse · arrow · line
Ctrl+N New article E V T Eraser · select · select text
Ctrl+E Edit Ctrl+Z Undo
Ctrl+O / Enter Open the PDF Ctrl+F Find in the PDF
↑ ↓ Move in the list PgUp PgDn Previous / next page
Esc Back Esc Close the reader

☁️ Google Drive backup

Press Google Drive › Sign in with Google. Your browser opens: choose your account, tick "See, edit, create and delete only the specific Google Drive files you use with this app" and press Continue. The button turns green and the backup starts.

What is stored in the SciLibra folder on your Drive:

SciLibra/
├── library.db                      the whole library: details, keywords, tag groups, comments, previews
├── Backups/library-YYYY-MM-DD.db   one copy per day, last 10 days
└── PDFs/<key>.pdf                  every PDF, including your highlights and notes

After the first backup only what changed is uploaded - a few seconds after each change and when you close SciLibra. Temporary Google errors are retried automatically. Restore from Drive… sets up the same library, with all PDFs, on another computer.

Privacy: SciLibra only gets access to the files it creates itself (drive.file) - never to your other files. Your sign-in is stored only on your computer, and you can remove it at any time with Sign out or at myaccount.google.com/permissions.

For maintainers: the OAuth client

The OAuth client (type Desktop app) ships as scilibra/assets/google_client.dat. To replace it, download the client JSON from Google Cloud Console and run

python -c "from scilibra.core.gdrive import bundle_client_file as b; b('client_secret.json', 'scilibra/assets/google_client.dat')"

Never commit the JSON itself (it is git-ignored). Users can also use their own client with Load client file… in the Google Drive dialog.

🛠️ Development

.venv/bin/pip install -e ".[test]"
.venv/bin/python -m pytest                        # core tests + end-to-end GUI scenario
.venv/bin/python tests/gui_scenario.py shots/     # run the GUI scenario and keep its screenshots
.venv/bin/python tools/make_screenshots.py        # refresh the README screenshots (add --dark for dark)
Project layout
scilibra/
  core/            GUI-independent logic (usable from scripts)
    models.py      Article data model
    database.py    SQLite storage, schema upgrades (compatible with 1.x libraries)
    bibtex.py      BibTeX import/export
    pdf.py         first-page previews, DOI detection, reading annotations (PyMuPDF)
    annotate.py    creating/editing annotations and saving them into the PDF
    crossref.py    DOI -> metadata (Crossref REST API)
    gdrive.py      Google Drive sign-in, backup and restore
    library.py     high-level operations: import, link PDFs, search, duplicates, statistics
  gui/             Kivy user interface
    app.py         main window           viewer.py      PDF reader / annotator
    theme.py       colours (light/dark)  widgets.py     hover, rounded fields
    splash.py      start screen          helpcenter.py  Help center and About
    layout.kv      the look of everything
  config.py        settings and data locations
tests/             pytest suite and GUI scenario
tools/             screenshot generator

Using the core from Python:

from scilibra.core import Library
lib = Library("my.db")
lib.import_bibtex_file("refs.bib")
print(lib.search("GWAS").keys)
lib.export_bibtex("out.bib")

📄 License

MIT License. The software comes with no warranty - use at your own risk. This software is not intended for commercial use.

Metadata

Release files for scilibra 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scilibra 2.0.1
File Size Uploaded
scilibra-2.0.1.tar.gz 644.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scilibra 2.0.1
File Interpreter ABI Platform
scilibra-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / scilibra-2.0.1.tar.gz

Download URL scilibra-2.0.1.tar.gz
Size 644.1 kB
Tags Source
SHA-256 checksum
How to use checksums
10df34cf3aabb0fde048252c822439d9dbc195e472896ad6996e58f2ed46198a
BLAKE2b-256 checksum
How to use checksums
46c547c1a39f211aa76e87d4e5ccce4403dcf9ec4af3b988926917fd006a7e2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / scilibra-2.0.1-py3-none-any.whl

Download URL scilibra-2.0.1-py3-none-any.whl
Size 634.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c5c5c4e99f614cb6ef902c124f5ae302dd199efdb4110b1a77bab38901966be
BLAKE2b-256 checksum
How to use checksums
7b6a8718d470718b090c55a17b653ea2db7d9a19f0afa7a66536f76cce0403ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

2.0.1 This release

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page