Fast, local search across computer science research literature.
cspdb builds a local SQLite/FTS5 index from DBLP and gives
you a CLI for searching papers with an expressive query language across title,
authors, abstract, venue, year, rank, tag, and DOI.
The demo above walks through a full workflow: init → multi-venue update → stats → six search patterns (prefix, phrases/OR, tags/rank, DOI/fields, JSON & BibTeX export) → enrich → interactive TUI.
Inspired by cs-grep and top4grep.
- Search across configurable CS venue catalogs (security, ML, SE, HCI).
- Keep the corpus local and query it quickly with SQLite FTS5.
- Export CSV, JSON, or BibTeX for scripts and reference managers.
Requires Python 3.10+.
git clone https://github.com/rashedhasan090/CS-Paper-Database.git
cd CS-Paper-Database
pip install -e .cspdb init
cspdb update --since 2022 --venue NDSS --venue CCS
cspdb --tuiSearch from the shell:
cspdb 'title:fuzzing WHERE venue:ndss AND year:2020-'
cspdb '("side channel" OR cache) WHERE venue:CCS OR venue:SP'
cspdb '* WHERE doi:10.1145' --fields venue,year,title,doi
cspdb 'malware detection WHERE year:2022- AND (rank:A OR rank:A*)' --sort year
cspdb 'kernel fuzz* WHERE venue:USENIX-SEC' --format bibtex > papers.bib
cspdb 'large language model WHERE year:2023-' --format jsonQueries have a full-text expression followed by optional metadata filters:
cspdb '(malware OR botnet) WHERE year:2020- AND NOT venue:CCS'- Both sides support
AND,OR,NOT, parentheses, and implicitAND. - Text supports phrases, trailing prefixes such as
fuzz*, and the fieldstitle:,author:, andabstract:. WHEREsupportsvenue:,year:,rank:,tag:, anddoi:.*matches all papers when only metadata filters are needed.- Year values can be
2020,2018-2024,2020-, or-2019.
cspdb '* WHERE tag:ml AND tag:security'
cspdb '* WHERE tag:ml OR tag:security'Bundles choose which venue catalogs update and enrich process. Tags filter
papers by venue family during search. Bundled venues use the tags security,
ml, nlp, cv, se, and hci. The default bundles are security, ml,
and se; hci is available separately.
cspdb update --bundle security,ml
cspdb update --bundle hci
cspdb enrich --bundle mlBundled catalogs live in src/cspdb/venues/.
After cspdb init, extend or override the catalog with a user config.yaml:
- macOS:
~/Library/Application Support/cspdb/config.yaml - Linux:
~/.config/cspdb/config.yaml - Windows:
%APPDATA%\cspdb\config.yaml
Or pass --config path/to/config.yaml / --db path/to/papers.db.
bundles: [security, ml, se]
defaults:
min_year: 2018
venues:
- id: DIMVA
name: Conference on Detection of Intrusions and Malware & Vulnerability Assessment
dblp_stream: conf/dimva
aliases: [dimva]
rank: B
tags: [security]Then ingest and search it:
cspdb update --venue DIMVA
cspdb 'malware WHERE venue:DIMVA'dblp_stream is the DBLP stream id, such as conf/dimva.
Abstract enrichment is optional, cached, and best-effort. cspdb uses paper
DOIs (and titles as fallback) via OpenAlex and Semantic Scholar.
cspdb enrich --limit 50No API keys are required, but keys can improve rate limits and coverage.
| Variable | Used for |
|---|---|
OPENALEX_API_KEY |
OpenAlex lookups |
SEMANTIC_SCHOLAR_S2_KEY |
Semantic Scholar lookups |
Copy .env.example to .env and fill in keys if you have them. .env is
loaded automatically when present.
| Command | Purpose |
|---|---|
cspdb init |
Create config + empty database |
cspdb update |
Ingest papers from DBLP |
cspdb enrich |
Fill missing abstracts |
cspdb stats |
Show DB path and paper count |
cspdb 'query' |
Search |
cspdb --tui |
Interactive search prompt |
pip install -e ".[dev]"
pytestRegenerate the README demo GIF (requires Pillow):
python scripts/render_demo_gif.pyVenue catalog structure and query language are inspired by philippnormann/cs-grep (MIT). Paper metadata comes from DBLP.
Released under the MIT License.
