citekeep
Clean a reference once. Reuse it in every LaTeX project.
You write several papers at once, with different co-authors. Each has its own
.bib. The same reference gets typed again in each of them, a little
differently every time, and the one you cleaned up two years ago sits in a
folder you have since archived.
citekeep gives you one canonical library — a plain .bib file you own — and
materialises each project's bibliography from it without leaving your editor.
It searches the project first, then your library, then zbMATH, with CrossRef as
a fallback.
Three things follow from that:
- Your co-authors need nothing. The project keeps an ordinary,
self-contained
.bib, and their citation keys are never rewritten. - It works offline. A reference met once stays searchable, and metadata corrected once is never repaired a second time.
- It refuses rather than guesses. When the evidence does not settle whether two records are one work, citekeep says so and writes nothing.
Project (●) first. Personal library (○) next. zbMATH and CrossRef only when needed.
What it is not
Not a Zotero replacement, a PDF manager, a note-taking system, or a hosted
collaboration platform. citekeep manages the flow of bibliographic records and
leaves the rest to tools that already do it well: Emacs and Citar for reading
notes and PDF links, git and an ordinary .bib for collaboration.
Install
uv tool install citekeep
citekeep init --library ~/bibliography/master.bib
No runtime dependencies — everything is standard library. Requires Python 3.11.
If you already have a library, do not initialise a second one: point citekeep at the existing file instead.
Documentation
citekeep.readthedocs.io — a tutorial for the first project, guides for the day-to-day, the command and API reference, and the reasoning behind the design.
Licence
MIT.
Metadata
Release files for citekeep 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| citekeep-0.1.1.tar.gz | 148.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| citekeep-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 219.1 kB
Release files / citekeep-0.1.1.tar.gz
| Download URL | citekeep-0.1.1.tar.gz |
|---|---|
| Size | 148.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
be5653d6f0cfcfa3dfb0cc5b56d7bb18c4fedfb2d0b5d5f62eea08e8a33b3374
|
|
BLAKE2b-256 checksum How to use checksums |
f5f70f66532a1ebfa80d09c982ff7cf31739c0328c0c5b684ab7224e54ec12ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.
Transparency logRelease files / citekeep-0.1.1-py3-none-any.whl
| Download URL | citekeep-0.1.1-py3-none-any.whl |
|---|---|
| Size | 70.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0ec719a787e0d5af24e15e10253666ebd800c40abfd65f028012aebf0446073e
|
|
BLAKE2b-256 checksum How to use checksums |
8b3c8bb23c95036c6012af044ec50a16ab1f990d1de3a780eab393f728d258f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.
Transparency log