OpenReader

Open-source notices

Licenses, clearly documented.

AGPL-3.0Third-party inventory

OpenReader is AGPL-3.0. This file records the top-level third-party components OpenReader directly depends on, bundles, vendors, or downloads at runtime.

This is a launch compliance inventory, not legal advice. Transitive dependency notices remain governed by each package manager lockfile and each package's own metadata.

Scope

Included here:

  • Runtime JavaScript/TypeScript dependencies declared in workspace package.json files.
  • Runtime Python backend dependencies declared in apps/desktop/pyproject.toml.
  • Runtime Rust/Tauri dependencies declared in apps/desktop/src-tauri/Cargo.toml.
  • Vendored browser/runtime assets copied into app builds.
  • Hugging Face model weights OpenReader can download through the model manager.

Excluded here:

  • Test-only and lint/build-only tools unless they ship in a release artifact.
  • Full transitive dependency trees.
  • User-provided documents, RSS feeds, OPDS catalogs, and voice reference clips.
  • Linux/Windows PyTorch backend packages pinned in

apps/desktop/requirements-pytorch*.txt (torch, torchaudio, qwen-tts, transformers, librosa, and the isolated Higgs/Voxtral runtimes). They have not had a per-package license review yet; this must be completed before Linux or Windows builds are distributed.

Vendored and downloaded runtime assets

ComponentVersion / repoLicense statusSource
pdfjs-dist6.2.108Apache-2.0github.com/mozilla/pdf.js
Fraunces fontvia @fontsource-variable/frauncesOFL-1.1github.com/undercasetype/Fraunces
Geist fontvia @fontsource/geist / next/fontOFL-1.1github.com/vercel/geist-font
Apple system voicesmacOS system componentApple platform component, not redistributed by OpenReadermacOS
Kokoro model weightsmlx-community/Kokoro-82M-bf16Apache-2.0 per the pinned upstream model cardhuggingface.co/mlx-community/Kokoro-82M-bf16
Qwen3 TTS model weightsmlx-community/Qwen3-TTS-12Hz-1.7B-CustomVoice-4bitApache-2.0 per the upstream model cardhuggingface.co/mlx-community/Qwen3-TTS-12Hz-1.7B-CustomVoice-4bit
Qwen3 forced alignermlx-community/Qwen3-ForcedAligner-0.6B-8bitApache-2.0 per the upstream model cardhuggingface.co/mlx-community/Qwen3-ForcedAligner-0.6B-8bit
Voxtral model weightsmlx-community/Voxtral-4B-TTS-2603-mlx-4bitCC-BY-NC-4.0 is currently declared upstream; owner decision for the free, local-only launch is recorded in docs/app-store-model-license-decision.mdhuggingface.co/mlx-community/Voxtral-4B-TTS-2603-mlx-4bit
Higgs Audio v2 model weightsmlx-community/higgs-audio-v2-3B-mlx-q6Apache-2.0 is declared by the conversion, but the required tokenizer has separate Boson and Meta termshuggingface.co/mlx-community/higgs-audio-v2-3B-mlx-q6
Higgs Audio v2 tokenizermlx-community/higgs-audio-v2-tokenizerDerived from Boson Higgs Audio 2 tokenizer materials governed by the Boson community license; launch decision and conditions are recorded in docs/app-store-model-license-decision.mdhuggingface.co/bosonai/higgs-audio-v2-tokenizer/blob/main/LICENSE
Kokoro PyTorch weights (Linux/Windows)hexgrad/Kokoro-82MApache-2.0 per the upstream model cardhuggingface.co/hexgrad/Kokoro-82M
Qwen3 TTS PyTorch weights (Linux/Windows)Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice, Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoiceApache-2.0 per the upstream model cardshuggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
Qwen3 forced aligner PyTorch weights (Linux/Windows)Qwen/Qwen3-ForcedAligner-0.6BApache-2.0 per the upstream model cardhuggingface.co/Qwen/Qwen3-ForcedAligner-0.6B
Voxtral PyTorch weights (Linux/Windows)mistralai/Voxtral-4B-TTS-2603CC-BY-NC-4.0 is declared upstream; same launch decision as the MLX conversionhuggingface.co/mistralai/Voxtral-4B-TTS-2603
Higgs Audio v2 PyTorch weights (Linux/Windows)eustlb/higgs-audio-v2-generation-3B-baseNo license is declared on this conversion; the upstream Boson Higgs Audio v2 materials are governed by the Boson community license. Review before advertising Linux/Windows Higgshuggingface.co/eustlb/higgs-audio-v2-generation-3B-base
spaCy English modelen_core_web_sm 3.8.0MITgithub.com/explosion/spacy-models

Model weights are downloaded to the user's Hugging Face cache on demand. They are not bundled into the desktop app. The MLX repositories are used on Apple Silicon; the PyTorch repositories are used by the Linux and Windows backend (apps/desktop/backend/backends/pytorch_backend.py). Any public pre-generated catalog audio should also track source-content licenses separately in each catalog manifest.

JavaScript / TypeScript runtime dependencies

PackageDeclared versionLicenseSource
react19.2.8MITgithub.com/facebook/react
react-dom19.2.8MITgithub.com/facebook/react
next16.2.12MITgithub.com/vercel/next.js
vite^8.1.5MITgithub.com/vitejs/vite
@vitejs/plugin-react^6.0.4MITgithub.com/vitejs/vite-plugin-react
@tailwindcss/vite^4.3.3MITgithub.com/tailwindlabs/tailwindcss
tailwindcss^4.3.3MITgithub.com/tailwindlabs/tailwindcss
tw-animate-css^1.4.0MITgithub.com/Wombosvideo/tw-animate-css
zustand^5.0.14MITgithub.com/pmndrs/zustand
@mozilla/readability^0.6.0Apache-2.0github.com/mozilla/readability
dompurify^3.4.12Apache-2.0 OR MPL-2.0github.com/cure53/DOMPurify
sonner^2.0.7MITgithub.com/emilkowalski/sonner
framer-motion^12.43.0MITgithub.com/framer/motion
@radix-ui/react-dialog^1.1.23MITgithub.com/radix-ui/primitives
@radix-ui/react-dropdown-menu^2.1.24MITgithub.com/radix-ui/primitives
@radix-ui/react-popover^1.1.23MITgithub.com/radix-ui/primitives
@radix-ui/react-slider^1.4.7MITgithub.com/radix-ui/primitives
@radix-ui/react-slot^1.3.3MITgithub.com/radix-ui/primitives
@radix-ui/react-tabs^1.1.21MITgithub.com/radix-ui/primitives
radix-ui^1.6.7MITgithub.com/radix-ui/primitives
lucide-react^1.27.0ISCgithub.com/lucide-icons/lucide
class-variance-authority^0.7.1Apache-2.0github.com/joe-bell/cva
clsx^2.1.1MITgithub.com/lukeed/clsx
tailwind-merge^3.6.0MITgithub.com/dcastil/tailwind-merge
fflate^0.8.3MITgithub.com/101arrowz/fflate
foliate-js1.0.1MITgithub.com/johnfactotum/foliate-js
pdfjs-dist^6.2.108Apache-2.0github.com/mozilla/pdf.js
@fontsource-variable/fraunces^5.3.0OFL-1.1github.com/fontsource/fontsource
@fontsource/geist^5.3.0OFL-1.1github.com/fontsource/fontsource
@tauri-apps/api^2.11.1Apache-2.0 OR MITgithub.com/tauri-apps/tauri
@tauri-apps/plugin-dialog^2.7.2Apache-2.0 OR MITgithub.com/tauri-apps/plugins-workspace
@tauri-apps/plugin-fs^2.5.1Apache-2.0 OR MITgithub.com/tauri-apps/plugins-workspace
@tauri-apps/plugin-shell^2.3.5Apache-2.0 OR MITgithub.com/tauri-apps/plugins-workspace

Python desktop backend dependencies

PackageDeclared versionLicenseSource
fastapi>=0.140.13MITgithub.com/fastapi/fastapi
uvicorn[standard]>=0.51BSD-3-Clausegithub.com/encode/uvicorn
pydantic>=2.13.4MITgithub.com/pydantic/pydantic
numpy>=1.26,<2.0BSD-3-Clausegithub.com/numpy/numpy
soundfile>=0.14BSD-3-Clausegithub.com/bastibe/python-soundfile
python-multipart>=0.0.32Apache-2.0github.com/Kludex/python-multipart
huggingface-hub>=1.25.1,<2.0Apache-2.0github.com/huggingface/huggingface_hub
tqdm>=4.70MIT AND MPL-2.0github.com/tqdm/tqdm
typing-extensions>=4.16PSF-2.0github.com/python/typing_extensions
feedparser>=6.0.13BSD-2-Clausegithub.com/kurtmckee/feedparser
trafilatura>=2.1Apache-2.0github.com/adbar/trafilatura
beautifulsoup4>=4.15MITwww.crummy.com/software/BeautifulSoup
aiosqlite>=0.22.1MITgithub.com/omnilib/aiosqlite
httpx>=0.28.1BSD-3-Clausegithub.com/encode/httpx
mlx-audio[tts]>=0.4.6MITgithub.com/Blaizzy/mlx-audio
mlx>=0.32.0MITgithub.com/ml-explore/mlx
mlx-lm>=0.31.3MITgithub.com/ml-explore/mlx-lm
transformers>=5.12.1,<5.13Apache-2.0github.com/huggingface/transformers
mistral-common>=1.11.7,<2.0Apache-2.0github.com/mistralai/mistral-common
misaki[en,ja,ko,zh]>=0.9.4Apache-2.0github.com/hexgrad/misaki
phonemizer-fork>=3.3.2GPL-3.0-or-laterpypi.org/project/phonemizer-fork
num2words>=0.5.14LGPLgithub.com/savoirfairelinux/num2words
pycountry (transitive in signed macOS backend)26.2.16LGPL-2.1-onlygithub.com/pycountry/pycountry
espeakng-loader>=0.2.4Loader metadata has no declared license; its bundled eSpeak NG library and data are GPL-3.0-or-laterpypi.org/project/espeakng-loader
setuptools<81MITgithub.com/pypa/setuptools
typer>=0.27MITgithub.com/fastapi/typer
en_core_web_sm3.8.0MITgithub.com/explosion/spacy-models

Rust / Tauri runtime dependencies

CrateDeclared versionLicenseSource
tauri2.11.5Apache-2.0 OR MITgithub.com/tauri-apps/tauri
tauri-build2.6.3Apache-2.0 OR MITgithub.com/tauri-apps/tauri
tauri-plugin-shell2.3.5Apache-2.0 OR MITgithub.com/tauri-apps/plugins-workspace
tauri-plugin-dialog2.7.2Apache-2.0 OR MITgithub.com/tauri-apps/plugins-workspace
tauri-plugin-fs2.5.1Apache-2.0 OR MITgithub.com/tauri-apps/plugins-workspace
serde1.0.229Apache-2.0 OR MITgithub.com/serde-rs/serde
serde_json1.0.151Apache-2.0 OR MITgithub.com/serde-rs/json
tokio1.53.1MITgithub.com/tokio-rs/tokio
reqwest0.13.4Apache-2.0 OR MITgithub.com/seanmonstar/reqwest
zip=2.4.2MITgithub.com/zip-rs/zip2
objc20.6.4MITgithub.com/madsmtm/objc2
objc2-foundation0.3.2MITgithub.com/madsmtm/objc2

Mac App Store distribution notes

The release bundle includes this file, LICENSE, and LICENSING.md under Contents/SharedSupport. The launch decisions for Voxtral and Higgs are recorded in docs/app-store-model-license-decision.md. Before submission, these distribution and bundle-audit questions remain; a technical test cannot resolve all license interpretations:

  • Confirm that distributing phonemizer-fork and the bundled GPL-3.0-or-later eSpeak NG library/data through Apple’s standard Mac App Store terms satisfies all corresponding-source, notice, and downstream-license obligations.
  • Verify the submitted bundle includes Voxtral attribution and the Boson and Meta tokenizer terms, and that the Higgs voice-rights confirmation still works.
  • Generate and review the complete transitive notice/SBOM inventory for the final frozen backend, including native libraries, rather than relying only on this top-level list.

See docs/release.md for the submission-specific decision record.