Installation
The apps for Mac, iPhone, iPad, Android, Android TV, Windows and Linux, and the terminal app for macOS, Linux and Windows, from the releases on GitHub or from source.
Every release on the releases page has the
apps and the terminal app. Each file has a .sha256 beside it. With both in one folder,
shasum -a 256 -c <file>.sha256 checks the file on macOS, and sha256sum -c <file>.sha256 on
Linux.
The apps
Section titled “The apps”The apps are not in the App Store, on Google Play or in the Microsoft Store. Download them from the latest release and allow them once, as below. The apps page shows what each one looks like.
anistream-<version>-macos.dmg, for macOS 26 or later on a Mac with Apple silicon.
Open the disk image and drag Anistream to Applications. The app is signed without an Apple developer account and is not notarized, so macOS stops it the first time it opens:
- Open Anistream, and choose Done when macOS says it cannot verify the app.
- Open System Settings › Privacy & Security. Under Security, choose Open Anyway beside the line about Anistream, and confirm with your password or Touch ID.
That is once for each version you download. Right-click › Open no longer skips the check since
macOS 15. From a terminal, xattr -dr com.apple.quarantine /Applications/Anistream.app does the
same as Open Anyway.
After an update, macOS may ask whether Anistream can use what it keeps in your keychain. Choose Always Allow.
The Mac app and the terminal app share one history and one config, in
~/Library/Application Support/anistream.
iPhone and iPad
Section titled “iPhone and iPad”anistream-<version>-ios-unsigned.ipa, for iOS or iPadOS 26 or later.
The .ipa is unsigned. AltStore or SideStore signs
it with your own Apple ID as it installs it:
-
Set up AltStore or SideStore on the iPhone or iPad, as its own guide describes.
-
Add anistream’s source to it. In SideStore or AltStore, go to Sources, choose + and paste this address:
https://github.com/bitknox/anistream/releases/latest/download/sidestore.json -
Install anistream from the source. You can also download the
.ipaon the device and open it in AltStore or SideStore, but then it does not offer you new releases. -
If iOS asks for Developer Mode, turn it on under Settings › Privacy & Security › Developer Mode and restart when it asks. Apps signed with a personal Apple ID need it.
With a free Apple ID the signature lasts 7 days. AltStore or SideStore has to refresh the app within that time, or it will not open until they do. Your data stays either way. A free Apple ID also allows only three apps signed this way at a time, AltStore or SideStore among them.
Android
Section titled “Android”anistream-<version>-android-arm64.apk, for Android 15 or later on a 64-bit ARM phone or tablet.
- Download the APK on the device and open it.
- Android asks once whether the app you opened it from, your browser or your file manager, may install apps. Allow it, go back, and choose Install.
The APK is signed with anistream’s release key, so each release installs over the one before and keeps your data. It is not on Google Play, and Play Protect may offer to scan it. To take the permission back afterwards, go to Settings › Apps › Special app access › Install unknown apps.
Android TV
Section titled “Android TV”anistream-<version>-android-tv.apk, for Android TV or Google TV 11 or later on 32-bit or 64-bit
ARM. It is a separate app from the phone one, made for the remote.
With the Downloader app, on the TV itself:
- Install Downloader from Google Play on the TV.
- In Downloader, enter
github.com/bitknox/anistream/releases/latest. The release page opens. Under Assets, choose the file that ends in-android-tv.apk. - Android asks whether Downloader may install apps. Allow it, go back, and choose Install. On most TVs the setting is under Settings › Apps › Security & restrictions › Unknown sources.
With adb, from a computer on the same network:
-
On the TV, open Settings › Device Preferences › About (on Google TV, Settings › System › About) and select Build seven times to turn on the developer options.
-
In the developer options, turn on USB debugging (some TVs call it network debugging), and note the TV’s address from its network settings.
-
On the computer, run
adb connect <the TV's address>and accept the prompt on the TV, then:adb install anistream-<version>-android-tv.apkIf the TV offers Wireless debugging with a pairing code instead, run
adb pair <address>:<port>with the address and code it shows, and thenadb connect.
The APK is signed with anistream’s release key, so a newer one installs over the one before and keeps your data. After the first install the TV app updates itself from Settings › About, as Updating describes.
To use Play on TV from the Mac, iPhone, iPad, Android, Windows or Linux app, pair it with the TV once. On the TV, go to Settings › Remotes › Pair a phone and scan the QR code with a phone, or choose the TV in the app’s Play on TV list and enter the code the TV shows. Both need to be on the same network. On Windows and Linux, paired TVs are listed under Settings › Integrations.
Torrents on the TV are off until you turn them on under Settings › Sources. The TV shows a QR code that opens a page on your phone, where you type the torrent index and, if you use one, the proxy; you can also type them with the TV’s keyboard. The proxy is checked before it is saved, as in Torrents and the VPN guard.
Windows
Section titled “Windows”anistream-<version>-windows-x64-setup.exe for most PCs, or
anistream-<version>-windows-arm64-setup.exe for Windows on Arm. Both need Windows 10 version 2004
or later.
Run the installer. It installs for your account only, so it asks for no administrator password.
It adds anistream to the Start menu and to Settings › Apps, where you can uninstall it, and it
lets the app open anistream:// links. The installer is not code-signed, so SmartScreen stops it
the first time:
- When Windows says “Windows protected your PC”, choose More info.
- Choose Run anyway.
A new release installs over the one before and keeps your library and settings. Uninstalling keeps them too.
anistream-<version>-linux-x86_64.AppImage, or anistream-<version>-linux-aarch64.AppImage on
64-bit ARM. It carries GTK 4, libadwaita 1.7 and the player, so there is nothing to install first.
It needs glibc 2.41 or newer, which means one of these or later:
- Ubuntu 25.04, including Ubuntu 26.04 LTS
- Fedora 42
- Debian 13
Ubuntu 24.04 and other systems with an older glibc are not supported. There the AppImage says so and stops, and the terminal app is the way to run anistream.
Make the file executable once, then open it:
chmod +x anistream-<version>-linux-x86_64.AppImage./anistream-<version>-linux-x86_64.AppImageThe first time it runs, it registers itself for anistream:// links. If you move the file, the
next run registers the new place. After that it updates itself, as Updating
describes. An AppImage needs FUSE, which most desktops have. Without it, run
the file with --appimage-extract-and-run.
The terminal app
Section titled “The terminal app”The terminal app comes several ways in each release:
- An installer:
.pkgon macOS,setup.exeon Windows,.debon Debian and Ubuntu. Each one putsanistreamon yourPATHand adds a launcher, so you can type it or click it. The launcher opens your terminal, since that is where anistream lives. - An AppImage for every other Linux distro.
chmod +xit and run it from a terminal. Nothing is installed. Like the.deband the.tar.gz, it needs glibc 2.28 or newer: Debian 10, Ubuntu 20.04, RHEL 8 or later. - An archive,
.tar.gzor.zip, for putting the binary onPATHyourself. It holds the binary, the README, the licence and athird-partyfolder with the notices for what anistream bundles.
mpv and ffmpeg are not bundled with the terminal app. It drives mpv for playback and shells out to
ffmpeg when muxing subtitles into a completed download. The .deb declares both as dependencies.
On macOS and Windows, install them yourself, as in Prerequisites below. The apps have mpv built in
and need neither.
anistream’s player interface, with the skip button, Up next, menus and
thumbnails, needs mpv 0.36 or newer. Older versions play with mpv’s own controls; Ubuntu 24.04
ships 0.37 and Debian 12 ships 0.35. anistream --doctor says which version you have.
There is no Homebrew formula and no cargo install yet. To build from source instead, install the
prerequisites and then build.
Updating
Section titled “Updating”The apps check GitHub for a new release once a day and say when one is out. Settings shows it too, with Check now. Except on Windows, nothing is downloaded until you choose to update, and an update keeps your history and settings. Turn the daily check off with Check for updates in Settings.
On the Mac, choose Update in the notice, or Update to the new version under Settings › Integrations › Updates. anistream downloads the new release, checks its signature, replaces itself and opens again. macOS does not ask for Open Anyway again, since a browser did not download it. It may still ask whether Anistream can use what it keeps in your keychain.
On iPhone and iPad, updates come through SideStore or AltStore, from the source you added. Choose Update in SideStore in the notice, under Settings › About on iPhone or under Settings › Advanced on iPad. It opens SideStore with anistream’s source, where you update the app. Without SideStore or AltStore it opens the release page.
On Android, choose Update in the notice, or Update to the new version under Settings › About. The first time, Android asks you to turn on Allow from this source for anistream. anistream downloads the APK, checks it against the published SHA-256 and the key the installed app is signed with, and installs it over the version before. Android closes the app as the update goes in, and a notification says when it is done.
On Android TV, the TV says when an update is out. Go to Settings › About, choose Update to the new version, then Update. The first time, Android asks you to allow anistream to install apps, and the TV shows where that switch is. anistream downloads the APK, checks its size and SHA-256 and that it is signed with the same key, then hands it to Android’s installer, which asks you to confirm.
On Windows, the app downloads a new release once it finds one and checks it against the published size and SHA-256. Then it says the version is ready to install. Choose Restart to update, in the notice or under Settings › About, and the installer runs without asking anything, then opens the new version. Your library and settings stay.
On Linux, Settings › Integrations › Updates says when a new release is out. Choose Download update, and the app checks the new AppImage against the published size and SHA-256. Restart to update then puts it in place of the one you run and opens it. If the AppImage’s folder cannot be written to, the new version is saved to Downloads instead, and the app says so.
The terminal app updates itself:
anistream --updateThat downloads the latest release for your platform, checks it against the published SHA-256, and replaces the binary in place. Restart anistream to use it. The terminal app also checks GitHub for a new release once a day (one cached HTTPS request, nothing downloaded) and mentions it in a toast. Turn the check off with:
[updates]check = falsePrerequisites
Section titled “Prerequisites”brew install mpv ffmpeg cmakerustup toolchain install 1.99.1 # pinned by rust-toolchain.toml# Debian / Ubuntusudo apt install mpv ffmpeg cmake build-essential pkg-config
# Fedorasudo dnf install mpv ffmpeg cmake gcc-c++
# Archsudo pacman -S mpv ffmpeg cmake base-develInstall Rust from rustup.rs if it is not already there. The toolchain version
comes from rust-toolchain.toml.
winget install --id Rustlang.Rustupwinget install --id Kitware.CMakewinget install --id NASM.NASMwinget install --id Gyan.FFmpegwinget install --id shinchiro.mpvwinget install --id Microsoft.VisualStudio.2022.BuildToolsThe Visual Studio installer needs the Desktop development with C++ workload. The bare package does not include the C compiler on its own. NASM is there because the torrent stack’s crypto assembles its own primitives on Windows.
Open a new terminal afterwards so the PATH changes apply, and check that mpv and ffmpeg
resolve. Some winget packages install the binary without adding it to PATH, and anistream looks
for both there.
Build from source
Section titled “Build from source”git clone https://github.com/bitknox/anistreamcd anistreamcargo run --releaseThe first build is slow, since BoringSSL, librqbit and a WASM runtime are in the tree, and
incremental after that. The binary ends up at target/release/anistream if you want it on your
PATH.
Where things live
Section titled “Where things live”| Config | ~/Library/Application Support/anistream/config.toml |
| History database | ~/Library/Application Support/anistream/anistream.db |
| Plugins | ~/Library/Application Support/anistream/plugins/*.wasm |
| Joined plugin stores | ~/Library/Application Support/anistream/plugin-stores.json |
| Player files and shaders | ~/Library/Caches/anistream/mpv/ and ~/Library/Caches/anistream/shaders/ |
| Logs | ~/Library/Caches/anistream/logs/ |
| Config | ~/.config/anistream/config.toml |
| History database | ~/.local/share/anistream/anistream.db |
| Plugins | ~/.config/anistream/plugins/*.wasm |
| Joined plugin stores | ~/.local/share/anistream/plugin-stores.json |
| Player files and shaders | ~/.cache/anistream/mpv/ and ~/.cache/anistream/shaders/ |
| Logs | ~/.cache/anistream/logs/ |
| Config | %APPDATA%\anistream\config\config.toml |
| History database | %APPDATA%\anistream\data\anistream.db |
| Plugins | %APPDATA%\anistream\config\plugins\*.wasm |
| Joined plugin stores | %APPDATA%\anistream\data\plugin-stores.json |
| Player files and shaders | %LOCALAPPDATA%\anistream\cache\mpv\ and %LOCALAPPDATA%\anistream\cache\shaders\ |
| Logs | %LOCALAPPDATA%\anistream\cache\logs\ |
Plugins always sit beside config.toml, whatever that path is. anistream --plugins prints the
directory in use. Logs roll daily, at info unless ANISTREAM_LOG says otherwise.
The player’s controls, fonts and scripts and the upscaling shaders ship inside the binary, and
anistream writes them into the cache directory when it needs them. anistream --doctor prints
where the player files are. The tokens for joined plugin stores are kept wherever tracker tokens
are, which trackers.token_storage decides.
No config file is required. One is only written when you change something in the Settings screen, and those writes are format-preserving, so comments you add by hand survive.