Skip to content

About

Open-source privacy review with human decisions, workspaces, and secure document handling.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

OpenAnonymi

CI License: AGPL v3

Review personal and sensitive details before sharing a document. OpenAnonymi suggests findings, lets you correct each occurrence, and exports the reviewed result after confirmation.

Open the app · Development · Deployment · Report a vulnerability

What it does

  • Imports text, Markdown, CSV, Word, and PDF, including bounded local English OCR. Compare scanned pages with editable extracted text before saving.
  • Suggests names, contact details, identifiers, dates, addresses, URLs, and secrets with local rules and models. Document text is not sent to an external AI service.
  • Lets reviewers keep, replace, label, or remove findings, add missed details, inspect revisions, and confirm the final text.
  • Supports workspace presets and custom detection rules, shared reviews, assignments, approvals, comments, notifications, and activity history.
  • Exports reviewed text and supported document formats. Markdown formatting stays readable without executing HTML or opening embedded links or images.
  • Provides workspace roles, email verification, two-step sign-in, retention defaults, cleanup, and display preferences.

Detection is a starting point, not a guarantee of anonymization. Inspect the whole reviewed document, correct misses and false positives, and consider whether the remaining context can still identify someone. English entity recognition and OCR have language and model limits.

Run locally

Use Python 3.11, Node.js 24, uv, and PostgreSQL 17. The frontend and backend have committed lockfiles; use the locked dependencies.

  1. Follow the development setup to create a local database and an ignored backend .env with your own content key.
  2. From backend, run uv sync --locked, uv run alembic upgrade head, then uv run python -m app.accounts.bootstrap on an empty database.
  3. Start the API with uv run uvicorn app.main:app --host 127.0.0.1 --port 8000.
  4. In a second terminal, run npm ci and npm run dev from frontend.
  5. Open http://localhost:5173 and sign in with the account you created.

Never reuse production database credentials, passwords, or encryption keys in a local demonstration. SMTP is required for normal registration and recovery; bootstrap is the initial local setup path.

Checks

From frontend:

npm ci
npm test
npm run lint
npm run build

From backend, with a separate disposable PostgreSQL database on port 5434 configured as PRIVACY_REVIEW_TEST_DATABASE_URL:

uv sync --locked
uv run ruff check app tests migrations ../scripts/run_backend_shard.py
uv run alembic upgrade head
uv run pytest -q
uv run python -m app.export_openapi ../frontend/openapi.json

Use the test database as PRIVACY_REVIEW_DATABASE_URL for the migration command. Never point these checks at an application database. See the exact test setup.

Hosted CI runs four isolated PostgreSQL test shards, frontend checks, generated API consistency checks, secret scanning, and a Linux container check that exercises the real native parsing and OCR runtime.

Repository

Path Purpose
backend/app API, local detection, authorization, encrypted storage, exports
backend/migrations Versioned PostgreSQL schema
backend/tests Isolated tests and authored synthetic fixtures
frontend/src React application and tests
frontend/openapi.json Generated API contract
scripts Required CI verification tools
docs Public setup and deployment instructions
.github CI, scheduled cleanup, review ownership, issue and PR templates

Private environment files, account credentials, database dumps, internal build notes, saved browser evidence, local demonstration data, and generated reports are not release inputs. Do not attach real document content to issues or PRs.

Security and deployment

The production image serves the frontend and API from one origin, runs as a non-root user, validates configuration, and applies migrations before startup. Stored document content is encrypted using keys supplied outside the database. This is server-side encryption; the service can decrypt content to review it.

The operator remains responsible for TLS, secret storage, access controls, database and key backups, retention, updates, and testing restoration. Deletion from the application does not remove data from an operator's backups. Security policy and deployment requirements describe the boundaries and release gates.

Contribute

Read CONTRIBUTING.md and CODE_OF_CONDUCT.md. Changes to main go through a pull request and required CI checks. Small, reproducible changes with synthetic inputs are easiest to review.

License and attribution

Copyright © 2026 ShianMike and OpenAnonymi contributors.

Original project code is licensed under AGPL-3.0-or-later, with the reasonable author attribution term in NOTICE. Copies and derived applications must preserve the copyright and an accessible “Powered by OpenAnonymi” credit in their appropriate legal notices. Modified network deployments must offer their corresponding source under the AGPL.

See LICENSE for the full terms and THIRD_PARTY_NOTICES.md for separately licensed assets. The license does not grant trademark rights or imply endorsement.

The project discourages subscription paywalls around the community application and encourages a free self-hosting path. This is a stated project principle, not a ban on commercial use: AGPL permits paid hosting and subscriptions while retaining its attribution and source-access requirements.

About

Open-source privacy review with human decisions, workspaces, and secure document handling.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages