bibox
AI agents shouldn't be hand-editing your .bib files. bibox gives them commands. You get a TUI. Your bibliography stays clean.
A terminal-based bibliography manager built in Rust. AI agents add papers, write notes, and manage collections through a structured CLI. You browse everything in a three-panel TUI and export BibTeX with one keystroke.
Features
- Smart import — Drop a PDF and bibox extracts the DOI, fetches metadata from Crossref, and files it automatically
- Multiple sources — Add entries via PDF, DOI, ISBN, arXiv ID, URL, or title search
- Three-panel TUI — Collections, entries, and preview (info / notes / PDF) side by side
- Vim-style navigation —
hjkl,gg/G,{n}j,Ctrl+d/u, multi-select withSpace - AI-agent-friendly — Every command supports
--json. Notes have--stdin,--section,--templatefor programmatic access - Markdown notes — Per-entry notes with section-level updates, rendered with syntax highlighting in the TUI
- Sub-collections — Hierarchical collections with path notation (
digest/2026-04). Unlimited depth, works like a filesystem - Portable home —
bibox initputs everything in one Git-syncable folder - Export — BibTeX, YAML, RIS, CSV, notes (
.md). Include PDFs. Copy to clipboard. Zip it up. - Templates — Built-in and custom note templates with
{{variable}}substitution - Headless build — CLI-only build without TUI for servers and automation scripts
Install
With Rust (macOS / Linux desktop):
With cargo-binstall (fast, no compile):
On a server (no Rust needed):
Pre-built binaries for Linux x86_64, macOS arm64, and macOS x86_64 are available on the releases page.
Update:
Quick Start
Add a paper by PDF (auto-extracts DOI → fetches metadata):
Add by DOI, arXiv ID, ISBN, or URL:
Search by title on Crossref:
Launch TUI:
TUI
┌ Collections ─┬ Entries ──────────┬ Info │ Note │ PDF ──┐
│ > All (15) │ 1 kim2025 ◆ │ Title: Rust Syst.. │
│ cs (8) │ 2 dijkstra1968 │ Author: Kim, J. │
│ ml (5) │ 3 manco2017 ◆ │ Year: 2025 │
│ │ │ DOI: 10.1234/... │
├──────────────┴───────────────────┴────────────────────┤
│ / search s sort o open w web e export ? help │
└───────────────────────────────────────────────────────┘
Keybindings
| Key | Action |
|---|---|
h/l |
Focus left/right panel |
j/k |
Navigate within panel |
gg/G |
Jump to top/bottom |
{n}j |
Move n lines (e.g., 5j) |
Ctrl+d/u |
Half-page down/up |
Tab |
Switch preview mode (Info → Note → PDF) |
Space |
Toggle select entry |
V |
Select/deselect all |
/ |
Search (entries or collections, based on focus) |
s |
Sort menu |
o |
Open PDF (or fetch from web) |
w |
Open paper web page in browser |
e |
Export menu (selected / collection / all) |
y |
Copy citekey to clipboard |
d |
Delete entry |
c |
Manage collections |
t |
Edit tags |
N |
Edit note in $EDITOR |
, |
Settings (line numbers, panel ratio, export dirs, git sync) |
? |
Help |
q |
Quit |
CLI
Browse:
Edit:
Collections:
Import:
Export:
Bulk update:
Delete:
Config:
Notes
Notes are Markdown files, one per entry. Designed for both human editing and AI agent pipelines.
Initialize from a template:
AI agent writes sections programmatically:
|
|
Read note back:
Human edits in $EDITOR:
Templates
Built-in templates: ai-summary, reading-notes. Custom templates override built-ins.
Template variables: {{title}}, {{citekey}}, {{doi}}, {{year}}, {{author}}, {{journal}}, {{booktitle}}, {{publisher}}
Portable Home & Git Sync
# Initialize a portable bibox home
# Everything lives in one folder
# Sync with Git
&& && &&
# Or use the TUI: press , → Git → Enter to check status → Enter to sync
Settings
Press , in the TUI, or run bibox config to see all current settings and paths.
= "absolute" # absolute, relative, none
= [2, 4, 4] # left : center : right (sum = 10)
= "." # BibTeX export location
= "~/Downloads" # Other exports location
= "~/bibox" # Portable home (set by bibox init)
AI Agent Integration
Every command supports --json for machine-readable output. Run bibox agent-guide for a complete reference.
# Full workflow: search → add → note → push
|
|
# Get all paths programmatically
# Non-interactive sync
| Flag | Purpose |
|---|---|
--json |
Machine-readable output (most commands) |
--index N |
Auto-select Nth search result (0-based, with --search) |
--stdin |
Read content from stdin (notes, templates) |
--section "Name" |
Target a specific ## Heading in a note |
--yes / -y |
Skip confirmation prompts |
--template <name> |
Initialize note from template |
Tech Stack
- Rust — clap, serde, reqwest, ratatui (optional), crossterm, pulldown-cmark (optional), arboard
- APIs — Crossref, Unpaywall, arXiv, OpenLibrary
- Storage — JSON database, flat PDF directory, Markdown notes
- Builds — full (TUI default) or headless (
--no-default-features)
License
MIT