A quiet, powerful home for your references.
Project description
bibtui
A quiet, powerful home for your references.
Quick start
# Run without installing
uvx --prerelease=allow bibtui myrefs.bib
# Or install permanently
uv tool install --prerelease=allow bibtui
Why
--prerelease=allow? bibtui depends onbibtexparserv2, which is still in beta on PyPI. This flag tells uv to use it. Once bibtexparser publishes a stable v2 release this flag will no longer be needed.
Screenshots
| Light theme | Dark — Catppuccin Mocha |
|---|---|
| Nord — keywords modal | |
|---|---|
bibtui is a beautiful, keyboard-driven terminal app for researchers who live
in the terminal. Browse and edit your .bib file, fetch open-access PDFs with a
single keystroke, track what you've read, and never leave the command line —
no database, no sync daemon, no account required.
Why bibtui?
| bibtui | JabRef | Zotero | |
|---|---|---|---|
| Runs in the terminal | ✅ | ❌ | ❌ |
| No database / sync daemon | ✅ | ✅ | ❌ |
Git-friendly plain .bib |
✅ | ✅ | ❌ |
| Works over SSH | ✅ | ❌ | ❌ |
| Full Textual theming | ✅ | ❌ | ❌ |
| Pure Python, installs in seconds | ✅ | ❌ | ❌ |
Features
- Browse & search — instant search across title, author, keywords, and cite key
- Import by DOI — paste a DOI and metadata is fetched automatically
- Fetch PDFs automatically — tries arXiv → Unpaywall (free, open-access) → direct URL
- Add existing PDFs — pick a file from your Downloads folder with a live filter
- Edit entries — field-by-field form or raw BibTeX editor (toggle with
v) - Read states & priorities — track what you've read and what matters most
- Star ratings — rate entries 1–5
- Keywords editor — manage tags inline
- JabRef-compatible — file links use JabRef conventions; open the same
.bibin both tools - Git-friendly — it's a plain text file (.bib); commit, diff, and collaborate normally
- Full Textual theme support — including automatic detection of the omarchy themes
- Works anywhere
uvdoes — SSH, HPC clusters, a colleague's laptop
Installation
Recommended — uv (fastest)
uv tool install bibtui
pip
pip install bibtui
Try without installing
uvx bibtui references.bib
Usage
bibtui MyCollection.bib
On first launch bibtui shows a short onboarding wizard that pre-fills sensible defaults for your PDF directory, Downloads folder, and Unpaywall email (no registration required — the email is only used for rate-limiting).
PDF workflow
f tries three sources in order:
- arXiv — for entries with a
10.48550/arXiv.*DOI or anarxiv.orgURL - Unpaywall — free open-access lookup by DOI (set your email in Settings; no account needed)
- Direct URL — if the entry's
urlfield points directly to a PDF
PDFs are saved to your configured base directory and the entry's file field is
updated automatically in JabRef format.
Philosophy
- Your
.bibfile is the source of truth - No hidden database
- No setup, point and shoot possible
- No lock-in
- No accounts
- keyboard and mouse support
- nice looking
- focused featurset. For cleanup use bibtex-tidy or work directly on the bib file
Development
git clone https://github.com/tgoelles/bib_tui
cd bib_tui
uv sync
uv run bibtui tests/bib_examples/MyCollection.bib
Run the tests:
uv run pytest -m "not network"
Live-reload during development:
uv run textual run --dev src/bibtui/main.py -- tests/bib_examples/MyCollection.bib
Related tools
- JabRef — GUI reference manager, same
.bibformat - cobib — another terminal BibTeX manager
- bibman — minimal TUI reference manager
FAQ
Does this modify my .bib formatting?
Yes. but we also write a backup file
Can I use it alongside JabRef? Yes. File links follow JabRef conventions.
License
MIT © Thomas Gölles
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bibtui-0.9.7.tar.gz.
File metadata
- Download URL: bibtui-0.9.7.tar.gz
- Upload date:
- Size: 29.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f781bcba76850edad7bd492b2affba2994ce99964023341afc52a872a1b2461
|
|
| MD5 |
95533249cc5e7de69f1b83631cf6f255
|
|
| BLAKE2b-256 |
d89c8c455e6be68dc790bed2bfbed600ad1604fb4972eb4fa00043f0fedf0d71
|
File details
Details for the file bibtui-0.9.7-py3-none-any.whl.
File metadata
- Download URL: bibtui-0.9.7-py3-none-any.whl
- Upload date:
- Size: 35.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d430694737498a9aa9f49e38fff2a2df18800ec4cf84a4f1fbddba589b2d745e
|
|
| MD5 |
37a7b497cfec1fdd0807fa350ddc007f
|
|
| BLAKE2b-256 |
9b2b9314d95b5d9a3cd8a71118dbd59a8a9cc29d7f7c4a1d691568f9caf10302
|