Security & privacy

Private-first, with
real auth baked in.

The strongest privacy guarantee is architectural: paperr runs on a machine you already own and its data never leaves your network. On top of that, it ships with the account security you'd expect from a serious app.

Local by design

paperr has no cloud component. It runs as a Node/Express server on a machine on your network and stores everything in SQLite files on that machine. There are no accounts on someone else's servers, no telemetry, and no analytics phoning home. When the internet drops, paperr keeps working — because it never needed the internet in the first place.

The server binds to 0.0.0.0 so devices on your LAN can reach it — but nothing is exposed to the public internet unless you deliberately forward a port or set up a tunnel. Keep it on the LAN and your data stays within your walls.

Authentication

  • JWT access + refresh tokens stored in HTTP-only cookies — not readable by JavaScript, which blunts XSS token theft.
  • bcrypt-hashed passwords (via bcryptjs) — plaintext passwords are never stored.
  • Quick-login PINs — an optional fast unlock for shared/household devices, hashed the same way.
  • Brute-force protection — accounts lock after repeated failed attempts, so guessing at a PIN or password doesn't scale.
  • Session management — refresh-token sessions can be reviewed and revoked.

install:all generates strong random JWT_SECRET and JWT_REFRESH_SECRET values into server/.env automatically — so a fresh install is never left signing tokens with a default or empty secret. Optionally enable HTTPS_ENABLED to serve over TLS on your LAN.

Access control

Authorization is enforced server-side, never trusted from the client:

  • Role-based access — admin vs. member, checked on the server for every sensitive action.
  • Space isolation — every space's data is separate. As of 0.1.2, dotAi's tools are space-scoped with a fail-closed ownership check (ownsRow()) before any row is read or written, so the assistant can only ever touch the space you're acting in.
  • Private by default — Notebooks, Projects, Lists and Custom Agents belong to their creator until explicitly shared with the space.
  • Audit log — a full record of sensitive actions, so admins can see what happened and when.
  • Admin-gated space deletion — permanent deletion is type-to-confirm and admin-only.

AI privacy

Because dotAi runs on paperr's bundled local model (or your own Ollama / LM Studio), your conversations and the data it reads never leave your network by default. A model on your hardware sees your tasks and projects — not a third party's servers. Nothing is sent to a cloud provider unless you deliberately configure paperr to point at one.

If you set LLM_BASE_URL to an endpoint outside your LAN — a hosted provider like OpenAI, OpenRouter, Anthropic, Groq or any other cloud OpenAI-compatible API — then the tasks, projects and messages dotAi reads are transmitted to that third party and subject to their terms. That's your choice to make, not a default. The private-by-default path is the bundled server or a local Ollama / LM Studio instance on your own network.

Your data

  • One place, portable — it's SQLite. Back up the database file and you've backed up everything; move the folder and you've moved your whole instance.
  • Built-in backups — trigger a manual snapshot or schedule daily / weekly / monthly backups with configurable retention, and restore with one click (paperr auto-snapshots first).
  • No lock-in — Apache 2.0 licensed, self-hosted, and yours to keep, inspect and adapt.

Found a security issue? paperr is open source — please report it responsibly via the GitHub repository.

Get started →