Add this repository to ani-gui
https://anigui-ext.codingotaku.com/repository.json
There is no one-click copy without JavaScript โ select the URL above and copy it with your browser.
- Open ani-gui and go to ๐ Extensions in the sidebar.
- Switch to the Repos tab.
- Paste the URL above into the Repository URL field and press Add.
- Go to the Providers and Trackers tabs and press Install on what you want.
- Tick Enabled on the installed card. Trackers may also need Connect and sign-in before progress can sync.
Good to know: configured repositories are re-fetched on every app start, and the Refresh button on the Repos tab re-fetches on demand. Installed extensions show Update whenever a newer version is published here.
Extensions
8 enabled: 5 providers and 3 trackers. Every one is a Rust crate compiled to wasm32-unknown-unknown, and the SHA-256 below is the checksum the app verifies on download.
Providers
Anime sources: search, details, episodes, and stream or torrent links.
-
Provider Anidap v0.1.0
Anidap provider - demonstrates GraphQL, retry, cookies
- search
- browse
- streaming
SHA-256
e36b55959cd61bc2360a260ab0b474beed4994749e850b4cf1edf0297a1f075b
-
Provider AnimeHub v0.1.0
AnimeHub provider - demonstrates HTML scraping, regex, HLS
- search
- browse
- streaming
SHA-256
3617113dd22813ebb9d8b48dd199c2dfbf0bb701d2bd26f7c8d660c776b05e2a
-
Provider M3U8 Demo v0.1.0
Demo provider - exercises HttpClient, m3u8 parsing and per-link headers against a stable public HLS test stream
- search
- streaming
SHA-256
2fe540b4fac8aad4ff3f1494b5081edfcc8aaa6571295b30c009539d36419010
-
Provider Nyaa v0.1.0
Nyaa provider - demonstrates RSS/XML parsing, torrent
- search
- torrent
SHA-256
1cc52226423711981a4da282ea85f49f4503a9ff6c9438da6ae2c5256f6db9cc
-
Provider Shana v0.1.0
Shana provider - demonstrates HTML scraping, pagination
- search
- torrent
SHA-256
24e778986f20b5c7b6c55a1f7903fb032048c8f3ece366736f594af159c0a53c
Trackers
Progress sync: list, update, and clear your list on a remote account.
-
Tracker AniList v0.1.0
AniList tracker - demonstrates OAuth2, GraphQL, bearer token auth
- track progress
SHA-256
374cb27ec5ce7b5f5a43985d17b26212606b097971bdb5a831bd7f558c162ca6
-
Tracker Kitsu v0.1.0
Kitsu tracker - demonstrates JSON:API, OAuth2, token refresh
- track progress
SHA-256
13e058cd3a2c1b25ccf535606c0879a9c0b7511c3c103e6b7350c9d5ccfb7b02
-
Tracker MyAnimeList v0.1.0
MyAnimeList tracker stub - demonstrates minimal skeleton
- track progress
SHA-256
aa049cb977f4379d56f905a8f6c409eff6a99261fcd5e53d854b6a5aad363a6c
What this is
ani-sdk is the WebAssembly extension SDK for ani-gui, a GUI anime streaming client.
There are two kinds. Providers are content sources: search, anime details, episode lists, stream and torrent links. Trackers are progress-sync services: list, update, and delete progress on a remote account. This repository currently publishes 8 extensions: 5 providers and 3 trackers.
Extensions never touch the network or the filesystem directly. Every request goes through the
host via the SDK (HttpClient, HTML/regex parsing, crypto, logging), so an
extension is a pure function of the JSON the host hands it.
Good to know
- These are the reference examples. The published extensions double as the SDK's worked examples โ each one is a small, readable crate under
examples/. Use them as starting points, and expect to adjust endpoints, selectors, and rate limits for your own sites. - Nothing is bundled. The app ships with no providers; it installs them from a repository manifest like this one, and verifies each
.wasmagainst the SHA-256 checksum published inrepository.json. - Ids are permanent. The host stores your library, favourites, and history against the extension id, so a published id is never renamed.
- WASM is sandboxed. Extensions get no ambient authority: no sockets, no clock, no files, and a small (~8 MiB) linear memory.
Write your own extension
The SDK is a single crate with two dependencies. Add it to a
cdylib, implement WasmProvider or WasmTracker, and export
yourself with the export_provider! / export_tracker! macros.
cargo add ani-sdk --git https://codeberg.org/codingotaku/ani-sdk
-
Copy the closest sample โ
examples/providers/orexamples/trackers/โ and rename the crate. -
Describe it in
extension.json(id, name, kind, version, description, author, capabilities). That file is the single source of truth: it is embedded at compile time withextension_metadata!and served frominfo(). -
Add the crate to the workspace
memberslist. Set"enabled": falsein itsextension.jsonto keep it out of the published repository and this page while still building it locally. -
Run
make buildand add<BASE_URL>/repository.jsonto the Repos tab in ani-gui to try it.make servehosts the result onlocalhost:8080.
Full walkthrough, API reference, ABI notes, and troubleshooting: DEVELOPMENT.md ยท README.md ยท examples/ ยท ani-gui
Repository manifest
What the app fetches, checksums included.
repository.json โ the manifest ani-gui actually reads
{
"name": "ani-gui Extensions",
"url": "https://anigui-ext.codingotaku.com/repository.json",
"extensions": [
{
"id": "anidap",
"name": "Anidap",
"version": "0.1.0",
"kind": "provider",
"description": "Anidap provider - demonstrates GraphQL, retry, cookies",
"capabilities": [
"search",
"browse",
"streaming"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/anidap.wasm",
"checksum": "sha256:e36b55959cd61bc2360a260ab0b474beed4994749e850b4cf1edf0297a1f075b",
"author": "ani-gui",
"homepage": null
},
{
"id": "anilist",
"name": "AniList",
"version": "0.1.0",
"kind": "tracker",
"description": "AniList tracker - demonstrates OAuth2, GraphQL, bearer token auth",
"capabilities": [
"track_progress"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/anilist.wasm",
"checksum": "sha256:374cb27ec5ce7b5f5a43985d17b26212606b097971bdb5a831bd7f558c162ca6",
"author": "ani-gui",
"homepage": null
},
{
"id": "animehub",
"name": "AnimeHub",
"version": "0.1.0",
"kind": "provider",
"description": "AnimeHub provider - demonstrates HTML scraping, regex, HLS",
"capabilities": [
"search",
"browse",
"streaming"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/animehub.wasm",
"checksum": "sha256:3617113dd22813ebb9d8b48dd199c2dfbf0bb701d2bd26f7c8d660c776b05e2a",
"author": "ani-gui",
"homepage": null
},
{
"id": "kitsu",
"name": "Kitsu",
"version": "0.1.0",
"kind": "tracker",
"description": "Kitsu tracker - demonstrates JSON:API, OAuth2, token refresh",
"capabilities": [
"track_progress"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/kitsu.wasm",
"checksum": "sha256:13e058cd3a2c1b25ccf535606c0879a9c0b7511c3c103e6b7350c9d5ccfb7b02",
"author": "ani-gui",
"homepage": null
},
{
"id": "m3u8demo",
"name": "M3U8 Demo",
"version": "0.1.0",
"kind": "provider",
"description": "Demo provider - exercises HttpClient, m3u8 parsing and per-link headers against a stable public HLS test stream",
"capabilities": [
"search",
"streaming"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/m3u8demo.wasm",
"checksum": "sha256:2fe540b4fac8aad4ff3f1494b5081edfcc8aaa6571295b30c009539d36419010",
"author": "ani-gui",
"homepage": null
},
{
"id": "myanimelist",
"name": "MyAnimeList",
"version": "0.1.0",
"kind": "tracker",
"description": "MyAnimeList tracker stub - demonstrates minimal skeleton",
"capabilities": [
"track_progress"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/myanimelist.wasm",
"checksum": "sha256:aa049cb977f4379d56f905a8f6c409eff6a99261fcd5e53d854b6a5aad363a6c",
"author": "ani-gui",
"homepage": null
},
{
"id": "nyaa",
"name": "Nyaa",
"version": "0.1.0",
"kind": "provider",
"description": "Nyaa provider - demonstrates RSS/XML parsing, torrent",
"capabilities": [
"search",
"torrent"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/nyaa.wasm",
"checksum": "sha256:1cc52226423711981a4da282ea85f49f4503a9ff6c9438da6ae2c5256f6db9cc",
"author": "ani-gui",
"homepage": null
},
{
"id": "shana",
"name": "Shana",
"version": "0.1.0",
"kind": "provider",
"description": "Shana provider - demonstrates HTML scraping, pagination",
"capabilities": [
"search",
"torrent"
],
"download_url": "https://anigui-ext.codingotaku.com/wasm/shana.wasm",
"checksum": "sha256:24e778986f20b5c7b6c55a1f7903fb032048c8f3ece366736f594af159c0a53c",
"author": "ani-gui",
"homepage": null
}
]
}