Nyora is a free, open-source manga/manhwa/manhua reader for Android, iOS, macOS, Windows, Linux, Web, and even Docker — with AI-powered on-device translation and cross-platform sync.
Every manga reader makes you choose:
I wanted one library — same titles, same progress, same bookmarks — on my phone, laptop, and browser. No ads. No account required. So I built it.
| Platform | Distribution |
|---|---|
| Android | APK (sideload) |
| iOS/iPadOS | IPA via AltStore/SideStore |
| macOS |
.dmg or brew install --cask nyora
|
| Windows |
.exe (x64 + ARM64) |
| Linux |
.deb , .rpm , or curl installer |
| Web |
|
No account needed to read. Cloud sync is opt-in.
This is the flagship feature. Instead of dumping translated text over the artwork:
Each platform uses the best local engine:
There's also an Ensemble AI Narrative Engine that tracks character names and speaking styles across chapters so translations stay consistent.
The Android app pulls from 1,100+ manga sources via 35 generic engine templates (Madara, FoolSlide, MMRCMS, etc.). Web has ~390 live, health-checked sources. Desktop ports are growing toward parity.
Sync library, categories, reading history, bookmarks, and exact page progress across all six platforms. Two sign-in methods:
Self-hostable — the backend is just Supabase/PostgreSQL with row-level security. The server stores only reading state, never page images.
| Component | Stack |
|---|---|
| Android | Kotlin 2.2, Jetpack Compose, Hilt, Room, Coil 3, ML Kit |
| iOS | Swift, SwiftUI (fork of Aidoku) |
| macOS | SwiftUI + Compose Multiplatform |
| Windows/Linux | Compose Multiplatform (Kotlin) |
| Web | TypeScript SPA (100% client-side, no framework) |
| Python SDK | |
pip install nyora — bundled engine + TUI |
|
| JS SDK | |
npm install nyora-sdk — cloud-powered |
|
| Sync backend | PostgreSQL, RLS, last-write-wins |
| Marketing site | Astro |
Nyora began as a fork of Kotatsu on Android. I loved the data-driven source engine approach but wanted it on every platform. I forked Aidoku for iOS and started porting the source engine to Swift. Desktop came next via Compose Multiplatform. Web was a clean-room TypeScript rebuild.
The hardest part: cross-platform manga ID hashing. Every platform needed to resolve the same manga to the same UUID for sync to work. I built a stable nyoraId
hash that works identically across Kotlin, Swift, TypeScript, and Python.
**Web** (no install): [web.nyora.xyz](https://web.nyora.xyz)
**Native apps**: [GitHub Releases](https://github.com/Nyora-Manga)
**Self-hosted**: `docker run -d -p 8080:8080 -v nyora-data:/data hasan72341/nyora`
Python: pip install nyora
Discord: Join the community Nyora is GPLv3 (mobile apps) and Apache-2.0 (everything else). The source engine templates are beginner-friendly and highly parallelizable. If you've ever wanted to contribute to open source, porting a parser is a great first PR.
Check the GitHub and Discord to get started. Built with Kotlin, Swift, TypeScript, and the stubborn belief that manga readers shouldn't require compromises.