The project's README from github.com/hajisensai/Fushi. As one markdown file: README.md.
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Français | Deutsch | Português | Русский | Tiếng Việt | ภาษาไทย | Bahasa Indonesia | Italiano | Nederlands | Türkçe | العربية
| 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.
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Français · Deutsch · Português (Brasil) · Русский · Tiếng Việt · ภาษาไทย · Bahasa Indonesia · Italiano · Nederlands · Türkçe · العربية
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.
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.
| 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) |
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.
Fushi stores imported books, dictionaries, fonts, audiobook data, videos, reading progress, highlights, statistics, and settings in the app's local storage.
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.
The chart above is generated inside this repository (no third-party service) and refreshed daily by the Update Star History workflow.
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 |
| Project | Description |
|---|---|
| LunaHook | Galgame text hooking engine (vendored DLLs loaded by the injector) |
| MinHook | Inline hooking library used by the galgame injector |
| libtorrent | Built-in torrent download engine |
| mpv | libmpv playback core behind media_kit |
| FFmpeg | Media probing, clipping, and audio extraction |
| libplacebo | GPU video shaders and HDR tone mapping |
| flutter_inappwebview | WebView engine that renders the EPUB reader |
| ONNX Runtime | On-device inference for speech recognition and OCR |
| iroh | P2P tunnel for remote Fushi Interconnect connections |
| zstd · xxHash · libdeflate · glaze · unordered_dense · utf8proc · utfcpp | Dictionary engine dependencies |
| Project | Description |
|---|---|
| sherpa-onnx | Zipformer speech recognition model packages and VAD builds |
| ReazonSpeech k2-v2 | Japanese speech recognition model |
| Parakeet TDT-CTC 0.6B ja | Japanese speech recognition model |
| Kitsune | Japanese speech recognition model (CC BY-NC 4.0, downloaded from its Hugging Face repository) |
| Omnilingual ASR | Multilingual CTC speech recognition model |
| Silero VAD | Voice activity detection model |
| comic-text-and-bubble-detector | Manga text and speech bubble detection model |
| manga-panel-detector-yolo26n | Manga panel detection model, trained on Manga109-s |
| PP-OCRv6 small det / rec · PP-OCRv6_manga | Text line detection and recognition; the manga-tuned rec (trained with Manga109-s and AnimeText) powers the per-column CTC local OCR model |
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.
| 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.
Distributed under the GNU General Public License v3.0. See LICENSE for details.
Fushi is maintained by hajisensai. Website: fushi.moe. Contact: [email protected].