Skip to main content

astrobib

A terminal-based literature manager for astrophysics research

astrobib connects to the NASA/Harvard ADS to search, fetch, and organize papers as plain BibTeX files, with a fast terminal UI. It is written in Rust and ships as a single binary — installs via pip-style tools involve no Python runtime.

The earlier Python implementation is preserved at tag v0.4.0. Libraries and cite keys are fully compatible between the two: keys derive from each paper's stable identity (arXiv ID or bibcode), so any two copies of a paper agree on its key forever.


Installation

uv tool install astrobib     # or: pipx install astrobib

Binary wheels cover macOS (arm64, x86_64) and Linux (x86_64, aarch64). Building from source needs a Rust toolchain: cargo install --git https://github.com/clemson-cal/astrobib.


Quick start

# set your ADS token (https://ui.adsabs.harvard.edu/user/settings/token)
export ADS_API_TOKEN=...

astrobib                     # launch the TUI
astrobib list                # CLI: newest papers
astrobib search '^zrake OR kw:"compact objects"'
astrobib add 2020ApJ...123..456Z
astrobib import refs.bib     # resolve a foreign .bib against ADS

The two-tier library model

astrobib always works on up to two libraries: a local bib directory (tier 2) and your global personal library (tier 1, at ~/.local/share/astrobib/library/). astrobib [LIBRARY_DIR] points tier 2 at any directory holding bib/; with no argument, the nearest ancestor of the current directory with a bib/ is used. A .tex manuscript alongside activates citation tracking, but any bib directory works. With the global tier enabled (the default), reads merge both tiers and imports write to both — the paper repo stands alone for coauthors while your collection accrues. Press t (or click the global badge) to hide the global tier: reads and writes become purely local. Removing a local paper never destroys a sole copy — it is rescued into the global library. Both stores are plain bib/*.bib files, one paper per file, indistinguishable from hand-written BibTeX. Nothing else is ever written into your repos.


TUI overview

Scope capsules at the top switch between your library, saved ADS query tabs, and the manuscript view. The pub card on the right shows the highlighted paper (hover the citekey column to preview others); an event log and clickable view badges sit at the bottom. Most things are clickable; every action has a key (? shows the cheat-sheet).

Keys

  • / — live filter (query language below); S — new ADS query (↑/↓ sets result count; pasting a DOI or ADS URL imports directly)
  • j k g G — move; [ ] — switch scope; ctrl+w — close query scope; r — refresh; + - — result count
  • Space — select row (iOS-style selection mode); a — select visible; A — select all; Esc — done
  • i — import ADS result(s); m — toggle manuscript/local membership; — remove (with confirmation)
  • p — download PDFs (ADS open-access, then arXiv); B — browser download (watches ~/Downloads); o — open PDF; X — clear PDF; double-click a row — open its PDF
  • y — copy chord: yy cite key, yY full key, yb bibcode, ya/yx/yd ADS/arXiv/DOI URL, yp PDF path, yt title, yA abstract; card title/abstract/key are click-to-copy
  • t — show/hide the global tier; D — pub card; L — event log; ? — keys; q — quit

Filtering the library

Press / to filter as you type. Whitespace-separated terms AND together; each term is a case-insensitive partial match. Bare terms match author, title, abstract, key, keywords, and year; field prefixes narrow:

author:sironi          author anywhere in the list
^zrake                 first-author papers (= author:^zrake)
title:magnetar         word in title
abs:"fast radio burst" phrase in abstract
kw:"compact objects"   keyword
year:2015-2020         ranges; year:2020- open-ended
is:ms                  local/manuscript members;  is:pdf  cached PDFs
-abs:neutrino          leading - negates (NOT works too)
^zrake OR ^metzger     uppercase OR separates alternatives; AND binds tighter

A half-typed query never errors. With a filter active, S pre-fills the equivalent ADS query — filter locally, escalate in one keystroke.


ADS queries

S passes your query to the ADS API unmodified, so the full Solr language works (bibstem:ApJL, citations(...), boolean grouping, …). Each query becomes a scope capsule, persisted per manuscript context and shared with the Python implementation via tabs.json.


CLI

list, search [--ads], add <bibcode|ADS URL>, show <key>, import <file.bib> [--global-only|--local-only], plus --library PATH (relocate the global tier) and --no-global. import resolves each entry against ADS (arXiv ID → DOI → exact title+author+year) unless its cite key is already reproducible from its own data — canonical astrobib entries import byte-identically — and prints copy-pasteable key replacements for your .tex files.


See docs/DESIGN.md for the data-format contract and docs/STATUS.md for implementation status.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

astrobib-0.5.0.tar.gz (165.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

astrobib-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

astrobib-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

astrobib-0.5.0-py3-none-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

astrobib-0.5.0-py3-none-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file astrobib-0.5.0.tar.gz.

File metadata

  • Download URL: astrobib-0.5.0.tar.gz
  • Upload date:
  • Size: 165.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for astrobib-0.5.0.tar.gz
Algorithm Hash digest
SHA256 01385d693f809967bd25f818fb331d31564d3d118e0e7df2fa70bfbeebec75e8
MD5 337ab0aefebe2db08a6772393917de61
BLAKE2b-256 7feeaf64dd0674c8f44188fd926186ad17e60f219dcd72168b93bbcc6921550c

See more details on using hashes here.

File details

Details for the file astrobib-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for astrobib-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f11bbe918a849601f9d5afc8fa8c22fc1be7ccdc25fec2b9a14a4f3aeefcf82
MD5 d35e1d45c302854f0d943a0a8e1b2517
BLAKE2b-256 8c5cd362160288f9a05c11d79ab36214b25bfc0a47262c57dccedf3ab2718f79

See more details on using hashes here.

File details

Details for the file astrobib-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for astrobib-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dbb753f10444552c3a21f4071178dfdb142793a06e0e3dd41a3f3bdc9b72174e
MD5 5484de2819e299782cb5b86f7c2cce66
BLAKE2b-256 cc0ea912bd2f2dda394264593513d921c23fee5f3197b0725bae61539d0a4a56

See more details on using hashes here.

File details

Details for the file astrobib-0.5.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for astrobib-0.5.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 918c8db5ff06204d1027ea147f75a885551e1e80d5d34b44caf352bc2cef1492
MD5 af213cdf8c8dea0ee36ad14340e283cd
BLAKE2b-256 a2374b9c389c619b2b91852262d873ea3aaed0bf3cbc4548d9e184d558c335b3

See more details on using hashes here.

File details

Details for the file astrobib-0.5.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for astrobib-0.5.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 43842385e660eae610e18cd08379ef3b53a55cd5a2bdce670ec4600167f217c9
MD5 1da9ced35eae09e765334ce7a9872708
BLAKE2b-256 cb2bbe9339d10364c290cc81e0fd354c9a81d6497846bb0320b41d639cb76297

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page