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.

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; excluded from the Mac App Store build pending legal clearancehuggingface.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 terms; excluded from the Mac App Store build pending legal clearancehuggingface.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; legal review requiredhuggingface.co/bosonai/higgs-audio-v2-tokenizer/blob/main/LICENSE
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 macOS app. 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
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. Before submission, the following questions require qualified legal approval; a technical test cannot resolve them:

  • 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.
  • Keep Voxtral disabled in the Mac App Store edition unless counsel or the licensor confirms the intended distribution is permitted by its noncommercial terms.
  • Keep Higgs voice cloning disabled in the Mac App Store edition until the Boson tokenizer license, attribution language, commercial thresholds, acceptable-use policy, and voice-consent flow are approved.
  • 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/app-store-legal-review.md for the submission-specific decision record.