Library / SDK
KolbyML/Manatan avatar
KolbyML/Manatan

Manatan: a local language learning server for anime, manga and novels

Seamless immersion language learning for anime, manga, novels on all platforms

617 stars48 forksRustMIT

At a glance

What is it?
Manatan packages OCR, subtitle lookup, a dictionary server and sync into one Rust application that runs on desktop and mobile, serves its interface from localhost, and drives the same web UI everywhere.
Who is it for?
Adopt Manatan if you learn from anime, manga or light novels and want popup lookups, OCR and Anki export without wiring scripts, browser extensions and a local server by hand. Do not expect it to replace a media server, since it drives the same extension ecosystem as Mihon and Aniyomi, and note that the iOS build is still a public beta you enter through Discord.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One local server behind a browser interface

Manatan presents itself as the easiest way to watch anime or read manga, light novels and EPUBs with instant OCR and subtitle lookup, and the pitch is that there are no scripts, no complex setup, just download and go. The traditional alternative it describes involves installing Python scripts, browser extensions such as userscripts and configuring local servers manually, and the application removes all three. The architecture that makes this possible is visible in the repository. The Cargo workspace is split into a main binary plus separate server crates for audio, novels, OCR, sync and a yomitan server, and the docker-compose file publishes three ports, 4567 for the main interface, 4568 for media and 4570 for jobs. The interface itself is a web UI served from the local machine, opened in your browser at 127.0.0.1:4567, and the same interface is what you get on Windows, macOS, Linux, Android and iOS. That is the reason the project can claim one application on every platform, the phone and the desktop run the same code behind the same local server.

What the application actually does with your media

The feature list is the substance of the project. Built-in OCR for manga turns the text on a page into selectable text when you hover over it, which is what makes dictionary lookup possible on a page that has no text layer. Anime support works through subtitle parsing with popup dictionary lookups while the video plays, and the same popup mechanism serves one click Anki card generation from anime sentences with sentence audio. Novel support covers EPUBs with instant dictionary lookups and Anki card generation, and the roadmap records a full rewrite of the novel reader. Local media is supported in a useful range of shapes, folders of manga images, CBZ and ZIP archives, EPUB files, and modern image formats including JPEG XL, and local .mkv video support is on the roadmap as done. Sync keeps media progress and learning data across devices, and the project describes the overall goal as turning short sessions into long term capability. The language support is described as universal, and the popup dictionary is backed by the yomitan server crate.

Extensions from the Mihon and Aidoku ecosystem

Manatan does not ship its own catalogue. It consumes extensions from the ecosystem around Mihon, formerly known as Tachiyomi, plus Aniyomi and Aidoku, and the docker-compose file even names a Tachidesk data volume, so the source catalogue is the same one those readers use. Inside the app, the setup path is a two step one. You add a source first, and the documentation points you at how to use Mihon, or how to use Aniyomi or Aidoku if you want the other extension types, and then you install the extension itself from the Extensions tab in the Browse section of the sidebar. The roadmap shows the extension work as substantial, with support for Mihon, Tachiyomi, Aniyomi and Aidoku all marked done, while porting the Mihon manga reader to the Android and iOS builds is still open, along with planned support for Mangayomi and LNReader extensions and for browser and YouTube mining. The distinction between what the app can do and what the extension ecosystem can do is worth keeping in mind, the catalogue is as good as the extensions you install.

Install paths: releases, Flatpak, a Nix flake and a container

The default path is a release download for your platform, and the README spells out the platform specifics. On Windows you download the .zip for windows-x86, extract it and launch manatan.exe, and if Defender SmartScreen blocks it you go through More info and Run anyway, and if it will not start on a double click you unblock the file through the Properties dialog. On macOS you unzip the build and open Manatan.app, and if macOS refuses to open an unsigned app you use System Settings, Privacy and Security and Open Anyway. A Manatan Launcher window then appears with an Open Web UI button, and the interface opens at 127.0.0.1:4567, where the documentation asks you to wait around thirty seconds for the initial setup before reloading the page. Linux users get a signed Flatpak repository installed with one command:

sh
flatpak install --user https://kolbyml.github.io/Manatan/io.github.kolbyml.Manatan.flatpakref

The repository is added automatically, so later releases arrive through the normal update command:

sh
flatpak update --user io.github.kolbyml.Manatan

There is also a Nix flake maintained in a separate repository, and a Docker image published as ghcr.io/kolbyml/manatan:latest for the container route, which is the shape to use if you want the server on another machine.

The container exposes three ports and a set of environment switches

The compose file documents the server configuration better than any prose could, because it lists every switch. The image is ghcr.io/kolbyml/manatan:latest, the container runs headless with MANATAN_HEADLESS set to true, binds MANATAN_HOST to 0.0.0.0 and sets MANATAN_PORT, MANATAN_MEDIA_PORT and MANATAN_JOBS_PORT to 4567, 4568 and 4570, with the same three ports published. There is a flaresolverr integration for sites that need a browser to fetch, enabled through FLARESOLVERR_ENABLED and FLARESOLVERR_URL. Auth is optional, with AUTH_MODE set to basic_auth and matching AUTH_USERNAME and AUTH_PASSWORD variables, and there are switches for downloads as CBZ, for a SOCKS proxy and for pointing at extension repositories with EXTENSION_REPOS. The comments make an important point about the lifecycle, server settings can be changed during runtime in the WebUI, but providing an environment variable overwrites the current value when the container starts. Data is mounted in two places, the Tachidesk directory and a manatan directory, and the container restarts unless stopped.

A Rust workspace with seven crates and a screen AI bundle

The source is a Cargo workspace on the 2024 edition with a rust-version floor of 1.88, and the default member is the bin/manatan binary. Alongside the desktop binary there is a separate bin/manatan_android crate, which matches the roadmap entry about a native Android runtime without bundled JVM assets. The dependency choices show what the project is made of. axum 0.8 provides the HTTP and WebSocket layer, eframe 0.33 and tao 0.34 cover the native window, chrome_lens_ocr 0.3 handles OCR, and reqwest is pinned to rustls-tls rather than the system OpenSSL for HTTP. The self_update crate is configured with the archive and compression formats, which is how the application updates itself from the release page. The Dockerfile builds on ubuntu:24.04, installs the GTK and X libraries the native window needs, creates an unprivileged manatan user with uid 1000, and ships an optional screen AI resource bundle whose manifest files the build explicitly checks for. The Makefile runs the test suite across the workspace and treats clippy warnings as errors.

A project shipping releases every day, and one version number that lags

The release cadence is unusual. The three most recent tags are v6.2.2 on 2026-10-17, v6.2.3 on 2026-10-18 and v6.2.4 on 2026-10-19, each one day apart and named after the day count in the sequence, and the last push was on 2026-10-19 with the repository not archived. So the project is shipping daily builds rather than occasional ones. That cadence has a consequence for how you depend on it. The workspace version in Cargo.toml still reads 0.1.0 while the tags are in the v6.2 range, so the crate version and the release line do not line up, and the build tooling in the repository is the part that knows how the two coexist. The other thing to weigh is the iOS build, which is currently in public beta and reached through the Discord server, where the TestFlight invite link is shared. Everything else, Windows, Linux, macOS and Android, ships as a normal release download.

Editorial conclusion

Adopt Manatan if you learn from anime, manga or light novels and want popup lookups, OCR and Anki export without wiring scripts, browser extensions and a local server by hand. Do not expect it to replace a media server, since it drives the same extension ecosystem as Mihon and Aniyomi, and note that the iOS build is still a public beta you enter through Discord.

Frequently asked questions

How do I install Manatan on Linux?

Install the signed Flatpak repository with flatpak install --user https://kolbyml.github.io/Manatan/io.github.kolbyml.Manatan.flatpakref, then run the executable and open http://127.0.0.1:4567/ in a browser. Later releases arrive with flatpak update --user io.github.kolbyml.Manatan.

How does Manatan do dictionary lookups on manga pages?

It has built-in OCR for manga, so hovering over text gives you selectable text that can be looked up in the dictionary. The popup lookups are served by the yomitan server component.

Where do the sources and extensions come from in Manatan?

From the existing extension ecosystem. Manatan supports Mihon, formerly Tachiyomi, Aniyomi and Aidoku extensions, and the setup path is to add a source first, then install the extension from the Extensions tab under Browse in the sidebar.

Can Manatan run in a container?

Yes, the image ghcr.io/kolbyml/manatan:latest is published, and the compose file sets MANATAN_HEADLESS, MANATAN_HOST and three ports, 4567, 4568 and 4570. Settings can also be changed at runtime in the WebUI, though an environment variable overwrites the value at start.

Is the Manatan iOS app finished?

The iOS app is currently in public beta, and the TestFlight invite link is shared through the project's Discord server. Windows, Linux, macOS and Android ship as normal release downloads.

Official sources

  1. KolbyML/Manatan on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kolbyml-manatan.svg)](https://hysenlabs.com/projects/kolbyml-manatan)

Was this useful?