First-party source plugins for Ito: plugins that connect the app to reading services you run or subscribe to.
Each plugin is a Rust crate compiled to WebAssembly (wasm32-unknown-unknown) with the ito-rs SDK and packaged by ito-pkg.
In Ito, open Browse, tap the globe button (Repositories), choose Add Repository and enter:
https://atiinlabs.github.io/sources
Then install the plugins you want from the repository.
| Plugin | Type | Service |
|---|---|---|
| Komga | manga | Komga, a self-hosted comics and manga server |
Reads the libraries of your own Komga server.
- Install Komga from this repository.
- Open it in Browse and tap the settings button.
- Enter your Server URL (for example
https://komga.example.com) and an API key. Create the key in Komga under Account settings → API keys. If you would rather sign in with an account, leave the API key empty and fill in Username and Password; an API key wins when both are set.
The API key and password are stored as secrets, and a change in the settings applies to the next request without reinstalling the plugin. Komga 1.1.0 requires Ito 1.3.0 or later (plugin ABI 2). The plugin needs Komga 1.19 or later (1.20 for API keys) and metadata fixtures were captured from Komga 1.29.
What it does:
-
Home: Keep reading, On deck, Recently added, Recently updated and All series, plus one section per library when the server has several. Empty sections are left out.
-
Browse and search: every library, and full-text search across the series you can see.
-
Details: title, summary, authors (writers and pencillers), genres and tags, status and reading direction.
-
Chapters: a series' books, newest first. Books Komga has not analysed, unsupported formats and books whose files are gone are left out. Image archives, PDFs and image-based EPUBs use the page reader; reflowable text EPUBs use the text reader. A series can mix these formats without changing its saved identity.
-
Text EPUBs: follows the WebPub manifest's reading order, preserves text and inline-image order, and loads images through the same credential-isolated image path. Resource paths are confined to the book on your configured server. Text conversion retains paragraphs and preformatted whitespace, not the EPUB's CSS layout, scripting or interactive content.
-
Covers and pages use stable, plugin-owned
ito://locators and your current credentials, so a server-address change needs no plugin reinstall. Hosts supporting native image requests fetch bytes outside WASM using transient URL/header descriptors and the configured server origin; older hosts retain the legacy byte handler. Credentials are not stored in page metadata. -
Read completion: exposes an idempotent book-completion notification for supporting hosts. It sends only
completed: true; partial-page updates, unread/reset operations, and other user metadata are not sent. Durable retries and confirmation after account/settings changes belong to the host. Older hosts remain read-only. -
Settings check: on supporting hosts, the settings screen points out a missing server URL or incomplete sign-in as you type, and Test connection checks the address and sign-in shown with one read-only request, including a newly typed API key or password before you save it. Nothing is saved or changed on the server. Older hosts show the settings as before.
You need Rust with the WebAssembly target and ito-pkg, pinned to the revision CI uses:
rustup target add wasm32-unknown-unknown
cargo install --git https://github.com/AtiinLabs/ito-pkg --rev 96504ce21eba53a0a3ae6664821b3bce52b229e0 --lockedThen, in a plugin's directory:
cd plugins/komga
cargo test # unit tests; they run on your machine and need neither Ito nor a server
ito-pkg pack # builds the wasm and writes komga.ito
ito-pkg verify komga.itoTo try a build in Ito, serve it as a local repository:
mkdir -p /tmp/ito-repo/packages
cp plugins/komga/komga.ito /tmp/ito-repo/packages/
ito-pkg repo --input /tmp/ito-repo/packages --output /tmp/ito-repo/public --url http://localhost:8080 --name "AtiinLabs (local)"
ito-pkg serve --path /tmp/ito-repo/public --port 8080Add http://localhost:8080 as a repository in Ito. Use localhost in the iOS Simulator and your computer's LAN address on a device; --url must match the address you add.
Pushing to main runs the tests, packs every plugin under plugins/, builds the repository index and deploys it to GitHub Pages (the gh-pages branch) with .github/workflows/build.yml. Pull requests run the same steps without deploying.
When you change a plugin, bump version in its manifest.json and in its Cargo.toml: Ito only offers an update when the version changes.