paper-gap 0.2.1

Local CLI for finding research papers with missing, weak, or stale public code
Documentation

paper-gap

paper-gap is a local, on-demand Rust CLI for finding research papers that appear to lack useful public code, or only have weak/prototype/stale implementations.

It is not a recommender. It does not rank by user preference, hardware fit, or subjective interest.

What it does

  • Fetches papers from arXiv and OpenAlex.
  • Normalizes paper metadata.
  • Checks Papers with Code for known code links.
  • Searches public code forges:
    • GitHub
    • GitLab
    • Forgejo/Gitea, with Codeberg enabled by default
  • Produces markdown or JSON reports.
  • Explains the transparent additive implementation-gap score.
  • Ranks repository matches with deterministic confidence and matched evidence.
  • Lists configured and discoverable sources.

Install / run

Build and install paper-gap so it is on your PATH:

cargo build --release
install -Dm755 target/release/paper-gap ~/.local/bin/paper-gap

Then run:

paper-gap --help

Examples

Scan recent or queried papers:

paper-gap scan --query "symbolic computation" --since 30d
paper-gap scan --category cs.PL --since 90d
paper-gap scan --category math.NA --limit 50
paper-gap scan --from 2026-06-01 --to 2026-06-29

OpenAlex participates in query scans. arXiv-specific --category scans remain arXiv-only.

Inspect one arXiv paper:

paper-gap inspect --arxiv 2603.21852

Write JSON, then render a markdown report later:

paper-gap scan --category cs.PL --limit 5 --format json --output scan.json
paper-gap report --input scan.json --format markdown

List sources:

paper-gap sources
paper-gap sources --papers
paper-gap sources --repos
paper-gap sources --check

Discover possible new sources, informational only. Set BRAVE_SEARCH_API_KEY to use the official Brave Search API; otherwise discovery falls back to DuckDuckGo HTML.

paper-gap sources discover --kind papers
paper-gap sources discover --kind repos
paper-gap sources discover --kind all

Output

Reports are written to stdout unless --output is supplied. Progress messages go to stderr so stdout can be piped safely.

Markdown reports are ranked by implementation_gap_score. JSON reports include the underlying papers, code links, repository results, score components, and gap explanations.

Scoring

The score is additive and intentionally simple:

implementation_gap_score =
    no_code_score
  + prototype_only_score
  + stale_repo_score
  + packaging_gap_score
  + docs_gap_score
  + tests_gap_score
  + license_gap_score
  + reproducibility_gap_score
  + ecosystem_gap_score

Each non-zero score should have an explanation in the report.

API notes and rate limits

paper-gap is local and only runs when you invoke it, but it still calls public APIs. arXiv may rate-limit repeated scans. If that happens:

  • wait a few minutes;
  • retry with a smaller --limit;
  • prefer targeted --category, --query, or date ranges.

For broader scholarly metadata, query scans also use OpenAlex. OPENALEX_EMAIL is optional and identifies requests to the OpenAlex polite pool.

export OPENALEX_EMAIL=you@example.org

Repository searches can also hit anonymous rate limits. Optional tokens are supported via environment variables:

export GITHUB_TOKEN=...
export GITLAB_TOKEN=...

Current MVP limits

  • Background jobs, local database storage, and a web dashboard are optional future features, not required defaults.
  • LLM judgement, subjective preference ranking, and hardware-fit ranking are optional future experiments, not part of the default score.
  • Source discovery optionally uses Brave Search API and otherwise falls back to DuckDuckGo HTML; it remains informational only.
  • Repository search is heuristic; reports expose deterministic match confidence and evidence rather than claiming certainty.