Skip to main content

Papers

An AI reading companion for research papers. Define what you are working on, get relevant papers, skim them Andrew Ng–style, read with an explainer that knows the whole paper, track where you stopped, quiz yourself when you finish, ask "where did I read this idea?", and follow reference chains. It runs on your computer; your papers and notes stay there. See SPEC.md for the design.

Install

With Python 3.11 or newer, one command (like npx for Node):

uvx papers-app

or install it to keep it around, then start it with papers:

pipx install papers-app

papers opens http://localhost:8000 in your browser. Options: --port 9000, --data D:\Papers (where the database and PDFs live), --no-browser, --host 0.0.0.0 (reach it from other devices on your network; there is no login, so only on networks you trust).

With Docker

docker compose up -d

Then open http://localhost:8000. Your library is kept in the papers-data volume. See docker-compose.yml to use a folder on your computer for the library folder, or a model running on your computer (Ollama, LM Studio). Subscriptions (Claude, ChatGPT) need their app on the same computer, so in Docker use an API key or a local model.

From the source

git clone https://github.com/hBouanane/papers && cd papers
python -m venv .venv
.venv/Scripts/pip install -e ".[dev]"     # macOS/Linux: .venv/bin/pip
.venv/Scripts/papers

Choosing an AI model

Settings > AI model has one list of providers; each is set up the same way (key if it needs one, then List models and pick one). Each provider keeps its own key and model, so you can switch freely.

  • Use your subscription: Claude (Pro, Max) through Claude Code, or ChatGPT (Plus, Pro) through OpenAI's Codex CLI (npm install -g @openai/codex, then codex login). Both run on your computer with your own account, for your own use: don't host the app for others on your subscription.
  • Pay per use with an API key: Anthropic, OpenAI, Google Gemini (has a free tier), Mistral, Groq, or OpenRouter (hundreds of models).
  • On this computer: Ollama or LM Studio. Free, and nothing leaves your machine.
  • Other: any OpenAI-compatible server (vLLM, llama.cpp, a company gateway), by its address.

Small local models can't read a whole paper; More options can send just its beginning. Keys are kept in your system's keychain (Windows Credential Manager, macOS Keychain, or the Secret Service on Linux), so you paste each one once; Settings shows which provider has a key saved (its last four characters) and can forget it. Where there's no keychain (Docker, servers) they stay in the app's database. Keys are never sent back to the page.

With a subscription the app runs the official CLI on your computer (claude -p or codex exec, with no tools), which signs in with your own account; usage counts toward your plan. The app never reads or stores those credentials. PAPERS_CLAUDE_BIN and PAPERS_CODEX_BIN point at a specific binary if needed.

Asking the AI

Select text in a paper and press Explain (a short lesson: the problem, the idea, the formula read slowly, a worked example, why it works, where it connects in the paper), Simplify (the same passage in plain English) or Translate. Each starts a conversation you can keep going; History keeps them per paper, and Add to chat attaches more passages.

Answers can contain formulas, clickable citations ([§3.4], [Fig. 1]), charts, diagrams, the paper's own figures with "look here" boxes, and interactive widgets. Switch the chat to Deep and the AI first reads the sections, looks at the figures and checks your notes and library before it answers; ask it to and it saves notes, words and highlights, or adds a paper from the references (each with Undo). Deep mode works with Claude (subscription or API key) and with models that support tool calling; in More options, tick This model can see images if yours does, and Interactive pages to let the AI write small demos that run in a sealed frame.

Library folder

In Settings, choose a folder (Choose… opens a folder browser with your usual folders and drives) and the app keeps a copy of your library there: one folder per goal (Unsorted for the rest), each paper as Author et al. Year - Title.pdf with a .md notes file next to it (key points, explanations, quiz, [[links]] to related papers, so Obsidian shows them as a graph). PDFs dropped into its Inbox folder are imported within about 10 seconds.

Settings from the environment

Variable What it does
PAPERS_DATA Folder for the database, PDFs and figures (same as --data). Default: %APPDATA%\Papers, ~/Library/Application Support/Papers or ~/.local/share/papers
ANTHROPIC_API_KEY, OPENAI_API_KEY API keys, if you'd rather not type them in Settings
S2_API_KEY A Semantic Scholar key; without one, search often falls back to arXiv because of rate limits
PAPERS_MODEL The Claude model used by default (claude-opus-5-5)
PAPERS_INBOX_POLL Seconds between Inbox checks (0 turns it off)

Contributing

See CONTRIBUTING.md: how the code is laid out, how to run it and the tests, and where to start for common changes.

License

MIT

Metadata

Release files for papers-app 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for papers-app 0.2.0
File Size Uploaded Provenance Actions
papers_app-0.2.0.tar.gz 215.6 kB With provenance Details for papers_app-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for papers-app 0.2.0
File Interpreter ABI Platform Actions
papers_app-0.2.0-py3-none-any.whl Python 3 none any Details for papers_app-0.2.0-py3-none-any.whl

Total release size: 451.1 kB

Release files / papers_app-0.2.0.tar.gz

Download URL papers_app-0.2.0.tar.gz
Size 215.6 kB
Tags Source
SHA-256 checksum
How to use checksums
720b185d79e257f75919e307d386dcc9390088cca26acb8416a344c4ab655167
BLAKE2b-256 checksum
How to use checksums
08309ff1dd4f9a725f52d37d5cd715a48d176c5f85d76a0bf5fbd1369f957dfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 9, 2026.

Transparency log

Release files / papers_app-0.2.0-py3-none-any.whl

Download URL papers_app-0.2.0-py3-none-any.whl
Size 235.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f918a06dc0bde41f95a612a4ea9ad8e04fb8455dcf22db12776a1af29f11365c
BLAKE2b-256 checksum
How to use checksums
b90ac2d7d69d969f6f296add3c75e1e85f29855870774800632ef7ce6187550a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 9, 2026.

Transparency log

Security for papers-app 0.2.0

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for papers_app-0.2.0.tar.gz

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 Nov 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page