A vibe-coded BibTeX reference manager built with Python and PyQt6.
Biblo Baggins is a desktop application for managing academic reference libraries. It stores entries as a flat CSV file (easy to version control, diff, and edit outside the app) and can import/export standard BibTeX format.
In development. Tested on Linux (Ubuntu 22.04) with Python 3.10.
Contributions welcome.
- Load and save libraries as CSV or BibTeX
- Add entries by pasting BibTeX or filling fields manually
- Search and filter by title, author, abstract, year, type, tags, and project
- Sort results by any column
- Edit entries inline (single or bulk tag/project assignment)
- Import references from Firefox browser tabs (fetches BibTeX via DOI)
- Rename PDFs to match library entries
- Detect and resolve duplicate keys
- Find entries with missing fields
- Semantic map of your library using SPECTER embeddings and UMAP (optional)
git clone https://github.com/davcrom/biblobag.git
cd biblobag
python -m venv .venv
source .venv/bin/activate
pip install -e .For embedding/semantic map features:
pip install -e ".[embeddings]"biblobagOr equivalently:
python -m biblobagClick New in the Library group to create an empty library, then start adding entries.
Copy the template and set your default library path:
cp config.template.json config.jsonEdit config.json:
{
"default_library_path": "/path/to/your/library.csv"
}The app will load this library automatically on startup.
Two ways to add a reference:
- From BibTeX — paste a BibTeX entry, click "Parse & Preview". Edit any fields, then click "Add to Library".
- Manual entry — type a key, fill in the fields directly, click "Add to Library".
Type in the search bar to filter by title, author, or abstract. Use the filter row for year range, entry type, tags, or project.
Click any column header to sort.
Check one or more entries in the table, then switch to the Edit tab. Single entries show all fields; multiple entries allow bulk tag/project assignment.
Go to Tools > Import from Firefox Tabs to fetch BibTeX for papers open in your browser. The importer reads your Firefox session, extracts DOIs from publisher URLs, and fetches citation data.
pip install pytest
pytest tests/biblobag/
library.py — Backend: parsing, storage, search, file I/O
gui.py — Frontend: PyQt6 interface
embeddings.py — SPECTER embeddings and UMAP (optional)
importutils.py — Firefox session reading and DOI extraction
__main__.py — Application entry point
config.json — User settings (not tracked, copy from template)
config.template.json — Config template
tests/ — Test suite
specs/ — Feature specifications