Skip to content

Overview

An anime client with native apps for Mac, iPhone, iPad, Android, Android TV, Windows and Linux, and a terminal app: browsing with no account, playback in mpv, sync to five trackers and sources as plugins.

anistream is an anime client with native apps for Mac, iPhone, iPad, Android, Android TV, Windows and Linux, and a terminal app for macOS, Linux and Windows. It browses AniList with no account, plays episodes in mpv, keeps your history locally and syncs it to five trackers. Sources are plugins or services you set up.

The apps have mpv built in. They install from the releases on GitHub, as installation describes. On a Mac, the app and the terminal app share one history and one config.

The Android TV app is made for the remote’s arrow keys. The Mac, iPhone, iPad, Android, Windows and Linux apps can send an episode to it and act as its remote. The features page shows what each app does.

Title pages in the apps play the show’s trailer, list its facts and open each episode’s discussion on AniList.

The terminal app has:

  • Browsing, search and seasonal lists from AniList, with no account. When AniList cannot answer, metadata falls back to Tenrai and then to what was last cached ([meta] fallback). Ctrl-F filters a search by genre, year, season, format, status and sort.
  • A half-finished episode stays on the home screen with its position, independent of the sync threshold. anistream --continue resumes it from the shell, and --play <id> plays a title’s next unwatched episode.
  • The airing calendar spans a week back and a week forward, and on launch one toast says what aired for shows you watch since you were last here.
  • Torrent streaming plays while downloading, can seek, and sits behind the VPN guard, with an indexer you supply.
  • Playback runs in mpv with the app’s own controls, seekbar thumbnails, a skip button, Up next and menus, and the next episode plays in the same window. Upscaling uses ArtCNN by default or Anime4K if you ask for it, and how much runs is decided per file. y plays an episode in a watch party instead.
  • On the command line, --stats, --search, --export/--import, --stream-url, --doctor and more. --search, --stats and --random also take --json, and --update replaces the binary in place.
  • History is kept on your device and needs no account.
  • Tracker sync covers AniList, MyAnimeList, Kitsu, Simkl and Trakt. Changes made offline sync when you reconnect. Kitsu is on by default and needs one sign-in. a sets a title’s list status and * rates it, and both sync the same way progress does.
  • Filler episodes are marked where the source that lists them says so.
  • A downloads screen lists what you have pulled down, and completed files get subtitles muxed in.
  • P pins a source per title, the Sources overlay picks exact releases, and playback falls over to another stream when one produces no video.
  • Discord presence is off by default, and it can show that something is playing without saying what.
  • Plugins are sandboxed WebAssembly components in any WASI 0.2 language. A plugin store that someone you know runs lets you install their plugins and share your own.
  • More sources, as plugins. The plugin system is the path for new sources.
  • Licensed services open in their own apps. anistream does not circumvent DRM, so a licensed stream only opens in its own service. The title screen already lists where AniList says a title is available, and a plugin can return a link that opens in that service rather than a stream for mpv.
  • Requirements and installation: the apps, prebuilt binaries for the terminal, or a build from source.
  • Quick start: browsing needs no account and no config.
  • Configuration: every section of config.toml is optional.
  • Writing a plugin: WebAssembly components in Rust, JavaScript, or any language that builds a WASI 0.2 component.