Paperful
See how it works Walkthroughs Docs Install Cleaning Service GitHub
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Paperful
Light Logo Dark Logo

Start here

  • How it works
  • Walkthroughs
  • Example setups
  • First fill: missing PDFs onto disk
  • Grow the library: topic search and people you follow
  • Tidy a collection: lint, identifiers, duplicates
  • Paperful workbench
  • Why Paperful
  • Docker
  • Zotero
  • Commands
  • Firefox add-on
  • Workflows
  • Research pack playbook
  • Dedupe
  • Configuration (config.toml)
  • Paperful architecture
  • Developer guide
  • Quiet mirror (out/)
  • Paperful terms
  • Releases and stability

Using paperful

  • Mendeley
  • EndNote
  • Adapter SDK
  • Source routing and circuit breaker
  • Screen for problematic papers (PPS-based)
  • Systematic review
  • Critique (local manuscript pack)
  • Rewrite (apply a critique pack)
  • Stuff (extra citations from the library)
  • Campus EZProxy
  • Research operators
  • Browser sessions (Scholar, EZProxy, publishers)
  • Sci-Hub
  • Legal, fetch stance, and privacy
  • SerpApi (Google Scholar search)
  • Camofox recover lane
  • GROBID sidecar
  • AI for notes and Ask: what is feasible
  • Optional LLM: setup and verbs
  • Ask your library: rag and ask
  • Browser agent: local models (Ollama + browser-use)

Product

  • How Paperful compares
  • How Paperful compares — reference
  • Snowball
  • Author watch lists
  • Co-author network
  • Search Page
  • Keepup (alert loop and what cites)
  • BBNJ author-site + authorwatch (dogfood)
  • E2E stack (topic + effort)
  • E2E all-in: NBA (reference dogfood)
  • Roadmap
Back to top
View this page

Legal, fetch stance, and privacy¶

Paperful is a local tool for one operator working with a library they already keep. This page is the written position the Roadmap asked for: what Paperful will fetch, what it will not do, and what never leaves the machine. It is not legal advice.

Fetch stance¶

  • Open access first. The default lanes are publisher/open repositories and indexes (Unpaywall, OpenAlex, Crossref, CORE, arXiv, landing pages). A real contact email in config is sent to those APIs because their polite pools ask for one.

  • Your access, your responsibility. Campus/EZProxy and session lanes replay your institution’s access in your browser profile. Whether a download is permitted by a publisher’s terms or your library licence is the operator’s call; Paperful does not grant rights it does not hold.

  • Sci-Hub is opt-in only, off by default, and never enabled by a playbook you did not choose. See scihub.

  • No CAPTCHA bypass, no bot-wall evasion. When a site challenges the fetch, Paperful stops and tells you; solving the challenge is a human action in your own session.

  • Polite by default. Fetches identify with the configured email, honour per-host pacing and the circuit breaker, and screen every URL (and redirect) through is_fetchable_url so the workbench cannot be pointed at loopback, RFC1918, link-local, or cloud-metadata targets.

  • Provenance is recorded. Run reports note which lane produced each PDF, so a library built with Paperful can answer “where did this come from?” later.

Credentials and privacy¶

  • Secrets live in the environment, not the config file. paperful config check flags secret-looking keys in config.toml and points at the env var to use instead. .env is gitignored. An OS keyring backend was evaluated for 1.7 and rejected: headless/Docker operators have no keyring daemon, and env vars already work everywhere (see docs/plans/1.7-wave.md).

  • On-disk tokens are owner-only. Mendeley OAuth tokens are written 0600; the session vault under state/sessions/ holds campus cookies and must be treated like a password — never commit, paste, or share it.

  • Keys go only to their own API. A Zotero key is sent to Zotero, a Mendeley token to Mendeley; nothing is proxied through a Paperful service, because there is no Paperful service.

  • No telemetry. Paperful phones home nowhere. The only outbound calls are the ones a command you ran makes: reference-manager APIs, scholarly indexes, and fetch lanes above.

  • Update notice is opt-in. With [updates] check = true, doctor fetches the latest version string from PyPI at most once a day (cached under state/) and prints a line if you are behind. It sends no usage data and never runs in the background.

  • Local by default. The workbench binds loopback, the mirror and run reports stay on your disk, and LLM/RAG lanes use providers you configure — prompts leave the machine only to the endpoint you chose.

Sustainability note¶

Paperful is maintained by one person under the licence in the repo root. If maintenance stops, everything keeps working offline: the mirror, run reports, and this documentation are plain files in your library folder.

Next
SerpApi (Google Scholar search)
Previous
Sci-Hub
Copyright © 2026, Paperful contributors
Made with Sphinx and @pradyunsg's Furo
On this page
  • Legal, fetch stance, and privacy
    • Fetch stance
    • Credentials and privacy
    • Sustainability note