| Platform |
Status |
Notes |
| Android |
✅ |
Android 7.0 (API 24) or later |
| Windows |
✅ |
Galgame text and voice hooking is Windows-only |
| macOS |
✅ |
Apple Silicon only; Intel Macs are not supported |
| iOS |
✅ (TestFlight) |
No discovery, online sources, or download center (App Store guidelines) |
| Linux |
🔧 Build from source |
No prebuilt release yet; the EPUB reader needs WPE WebKit |
| Fushi Server |
🧪 Beta (fushi-server) |
Headless host for Linux / Windows / macOS with a web UI — see packages/fushi_server |
Design system — every platform defaults to Material 3 Expressive; a Cupertino (Apple-style) design system can be selected in Settings › Appearance › Design system; with Cupertino, the window background uses Mica on Windows 11 and vibrancy on macOS (unless the system's reduce-transparency or high-contrast setting is on).
The languages available for dictionary lookup are determined by the imported dictionaries and Yomitan transformation tables, independently of the interface language. iOS updates arrive through TestFlight a few days later than on the other platforms.
Interface Languages (17)
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Français · Deutsch · Português (Brasil) · Русский · Tiếng Việt · ภาษาไทย · Bahasa Indonesia · Italiano · Nederlands · Türkçe · العربية
Installation
Download the latest release from the Fushi website — Android APK, Windows installer, and macOS builds (Apple Silicon only; Intel Macs are not supported) are available; iOS is installed through TestFlight. Linux has no prebuilt app release yet; build it from source. The headless Fushi Server is released separately on hajisensai/fushi-server.
Requires Android 7.0 (API 24) or higher.
Building
One-command prep (flutter pub get + apply patches), then build:
# From the repository root
bash tool/bootstrap.sh # Windows PowerShell: .\tool\bootstrap.ps1
cd fushi
# Android
flutter build apk --release --target-platform android-arm64 --split-per-abi
# Desktop
flutter build windows --release
flutter build macos --release
flutter build linux --release
# iOS
flutter build ipa --release
# Headless server (from packages/fushi_server; use `dart build cli`, not `dart compile exe`)
dart build cli
tool/bootstrap.sh / tool/bootstrap.ps1 collapse flutter pub get and ci/apply-patches.sh into a single command. This project is locked to Flutter 3.47.6 (Dart SDK >=3.8.0 <4.0.0); earlier Flutter versions cannot build it because Material and Cupertino are consumed as the material_ui / cupertino_ui packages. Some upstream dependencies are vendored under third_party/ or patched by ci/apply-patches.sh — see docs/agent/build.md for details, including the Linux desktop build dependencies.
Tech Stack
| Layer |
Technology |
| Framework |
Flutter 3.47.6 (Dart SDK >=3.8.0 <4.0.0), Riverpod |
| Platforms |
Android / Windows / macOS / iOS / Linux, plus a headless server |
| UI |
material_ui (Material 3 Expressive) / cupertino_ui (Cupertino) |
| Reader |
WebView paging engine (derived from the Hoshi Reader family) |
| Video |
media_kit (libmpv core) + libplacebo |
| Storage |
Drift (SQLite, WAL) + fushidicts (C++ FFI dictionary engine) |
| NLP |
Yomitan transformation tables (multilingual lemmatization) + kana_kit (kana conversion); tokenization via fushidicts FFI |
| On-device AI |
ONNX Runtime for speech recognition (subtitle generation) and manga OCR; algorithms live in fushi-subtitles |
| Downloads |
libtorrent 2.x via a C-ABI FFI bridge (external qBittorrent as fallback) |
| Sync |
Cloud backends + Fushi Interconnect (LAN, remote addresses, and an iroh P2P tunnel) |
| Shared engine |
fushi_engine — pure-Dart core shared by the app and Fushi Server |
| Card Creation |
AnkiDroid API + AnkiConnect |
| i18n |
Slang (17 languages) |
Project Structure
Fushi/ # Repository root (Melos workspace: fushi_workspace)
├── fushi/ # Flutter app main directory
│ ├── lib/
│ │ ├── i18n/ # Internationalization (17 languages, Slang)
│ │ ├── src/
│ │ │ ├── pages/ # Pages (library pages, reader, video player, settings, etc.)
│ │ │ ├── reader/ # Reader WebView JS/CSS scripts
│ │ │ ├── media/ # Books, manga, video, audiobooks, online sources
│ │ │ ├── lookup/ # Dictionary lookup popups and overlays
│ │ │ ├── mining/ # Card creation (incl. galgame mining)
│ │ │ ├── sync/ # Cloud sync, Interconnect, media servers
│ │ │ └── models/ # Data models and state management (AppModel)
│ │ └── main.dart
│ └── android/ # Android project
├── packages/ # Dart packages
│ ├── fushi_core/ # Database schema, preferences
│ ├── fushi_engine/ # Pure-Dart engine shared with the server
│ ├── fushi_server/ # Headless server CLI + web UI
│ ├── fushi_cli/ # Desktop command-line client
│ ├── fushi_dictionary/ # Dictionary engine bindings and importers
│ ├── fushi_anki/ · fushi_audio/ · fushi_platform/ · fushi_srs/
│ ├── fushi_torrent/ · fushi_p2p/ # libtorrent / iroh FFI bindings
│ └── … # Vendored forks (inappwebview Windows/Linux, gamepads)
├── native/ # Native sources: fushidicts, fushi_torrent, fushi_p2p (Rust), galgame_hook, …
├── services/ # Log collector and leaderboard backends (deployed separately)
├── tools/browser-extension/ # Browser lookup extension
├── third_party/ # Vendored patched packages (dependency_overrides)
├── ci/ # Build patches and CI scripts
├── tool/ # bootstrap / setup_worktree / bug tracker scripts
└── docs/ # Development documentation (incl. docs/agent/ operations manual)
Video import supports grouping by work or folder. See the video workflow and MAL/TMDB metadata with AniDB file hashing for matching and background tasks.
Optional online service setup explains bundled application identities, personal credentials, and the dismissible video setup reminder.
Privacy & Data
Fushi stores imported books, dictionaries, fonts, audiobook data, videos, reading progress, highlights, statistics, and settings in the app's local storage.
- Sync — Google Drive / OneDrive / Dropbox use OAuth sign-in; WebDAV / FTP / SFTP / Fushi Server use the server address and credentials you provide. Fushi Interconnect connects paired devices directly (LAN, IPv6, overlay networks, or public addresses), falling back to an end-to-end iroh P2P tunnel when no direct route works; pairing links always ask for confirmation.
- Anki — card creation talks to AnkiDroid or the AnkiConnect address you configure.
- Usage statistics — once a day, desktop and Android builds send a random install ID, the app version, platform, and update channel to fushi.moe to count active users; no account, library, or reading data is included and IP addresses are not stored. Turn it off with Share usage statistics in the update settings. iOS builds do not send it.
- Only when you ask — log upload (after a one-time consent prompt), in-app feedback, and the leaderboard (off by default; uploads your library titles and progress only after you opt in).
- Manga OCR — the default engine is Google Lens, which sends the page image to Google; switch to the on-device model or system OCR in settings to keep images local.
- AI features — requests go only to the LLM provider you configure and assign to a feature; with no provider assigned, nothing is sent.
- Third-party services — metadata, subtitle, and online-source features contact the services listed under Content sources and integrations only when you use them.
Development Activity

Day-to-day work lands on develop; main only receives release merges. The chart is displayed here on main but is generated from develop, so it reflects actual development rather than merge traffic.
The three lanes are the update channels the app itself offers, and each is scaled to its own peak — debug builds outnumber stable releases by two orders of magnitude, so a shared scale would flatten the other two lanes to nothing.
| Lane |
What it counts |
How you get it |
| Debug (rolling) |
Successful push builds of release.yml |
Rolling prerelease, republished on every push |
| Beta |
v<version>-beta.<seq> prereleases |
Manually dispatched test build |
| Stable |
v<version> releases |
Latest release |
The chart above is generated inside this repository (no third-party service) and refreshed daily by the Update Dev Activity Chart workflow.
Star History


The chart above is generated inside this repository (no third-party service) and refreshed daily by the Update Star History workflow.
Acknowledgments
Fushi builds on the following projects and ecosystem:
| Project |
Description |
| jidoujisho |
Japanese immersive learning tool |
| Hoshi Reader |
iOS Japanese reader; reader paging engine reference |
| Hoshi Reader Android |
Android native Japanese reader |
| hoshidicts |
C++ dictionary engine |
| Sasayaki |
Audiobook sync solution |
| Tsubasa |
Subtitle-to-reference timing alignment algorithm (GPL-3.0); basis for auto-aligning downloaded subtitles to embedded tracks |
| Yomitan |
Dictionary format, transformation tables, and lookup experience reference |
| Lapis |
Anki note type |
| AnkiDroid |
Android card creation integration |
| Ankiconnect Android |
Local audio and AnkiDroid interaction reference |
| ッツ Ebook Reader |
Reader, statistics, and sync compatibility reference |
| media_kit |
Flutter video playback framework (libmpv core) |
| Niratan |
Immersion language learning suite for macOS |
Engines and native components
On-device models
The manga panel detection model and PP-OCRv6_manga are trained with the Manga109-s dataset (Matsui et al. 2017; Aizawa et al. 2020), whose terms require this use of the dataset to be clearly indicated. PP-OCRv6_manga (Apache-2.0) is additionally trained with the AnimeText dataset, which is licensed CC BY-NC-SA 4.0; the app downloads that model from its Hugging Face repository and does not redistribute it.
Content sources and integrations
| Project |
Description |
| Mihon |
Manga source extension ecosystem |
| Aniyomi |
Anime source extension ecosystem (extensions-lib 14–16 hosted by the same runtime) |
| M-Extension-Server |
Manga extension runtime for desktop (vendored, MPL-2.0) |
| Mangayomi |
Mihon / Aniyomi extension adaptation reference |
| LNReader |
Light novel source plugin ecosystem |
| Jellyfin · Emby · Plex |
Media servers browsable from the video library |
| asbplayer |
Streaming subtitle bridge reference for the browser extension |
| Shoko Server |
Anime identification and scraping architecture reference |
| ReinaManager |
Galgame library information architecture reference |
| AniDB |
Anime, episode, and file identity |
| MyAnimeList (via Jikan) |
Anime metadata |
| TMDB |
Supplementary metadata and artwork |
| VNDB |
Visual novel metadata |
| Jimaku |
Japanese subtitle source |
| OpenSubtitles |
Subtitle source |
This application uses TMDB and the TMDB APIs but is not endorsed, certified, or otherwise approved by TMDB.
License
Distributed under the GNU General Public License v3.0. See LICENSE for details.
Maintainer
Fushi is maintained by hajisensai. Website: fushi.moe. Contact: [email protected].