A fast, keyboard-driven anime browser and player for the terminal.
Anily combines AniList metadata with a playback provider and mpv to provide
anime discovery, rich details, episode selection, and playback without leaving
the terminal. It is written in Rust and works in regular terminals, with
enhanced cover-art rendering in Kitty-compatible terminals.
- AniList-powered trending, airing, popular, favorite, search, and detail data.
- High-resolution portrait cover art with lazy loading.
- Kitty/native terminal image rendering with a text fallback.
- Keyboard-first home dashboard with multiple recommendation sections.
- Anime details including titles, synopsis, genres, score, status, duration, and episode count.
- Episode list navigation with sub/dub selection.
mpvplayback with subtitles and a visibleNow playing...indicator.- Optional Discord Rich Presence through the local Discord desktop IPC.
- Nix flake for reproducible development and builds.
- Linux, macOS, and Windows CI and release artifacts.
- Rust 1.85+ if building from source.
mpvfor episode playback.- A terminal emulator with UTF-8 support.
- Discord desktop, only if Discord Rich Presence is desired.
Kitty or another terminal with image support is recommended for cover art. Terminals without image protocols use the built-in text rendering fallback.
Anily uses AniList as its primary metadata source. Playback resolution is
handled separately by the configured playback provider and launched through
mpv. Provider availability can change independently of metadata availability.
Use the application only where the relevant content and services are lawful and permitted in your jurisdiction. Anily does not host or redistribute media.
Download the archive for your operating system from the
Releases page, extract it, and
place the anily executable somewhere on your PATH.
Release artifacts currently target:
| Platform | Artifact |
|---|---|
| Linux x86_64 | x86_64-unknown-linux-gnu |
| macOS Intel | x86_64-apple-darwin |
| macOS Apple Silicon | aarch64-apple-darwin |
| Windows x86_64 | x86_64-pc-windows-msvc |
Install mpv separately using your operating system's package manager.
git clone https://github.com/dummy3ye/anily.git
cd anily
cargo install --path .Run the installed application:
anilyOr run it without installing:
cargo run --releaseRun the latest repository revision:
nix run github:dummy3ye/anilyBuild the package locally:
nix build
./result/bin/anilyEnter the development environment:
nix developThe flake supports x86_64-linux, aarch64-linux, x86_64-darwin, and
aarch64-darwin. The packaged application includes mpv on its wrapped
runtime PATH.
The home screen opens with live catalog data loading in the background. Use the
arrow keys or h, j, k, and l to move through the dashboard.
| Key | Action |
|---|---|
/ |
Start search |
Enter |
Open the selected anime |
Arrow keys / h j k l |
Navigate |
PageUp / PageDown |
Move through the trending grid |
Esc |
Exit from home |
q |
Quit |
search result screenshot.
On the details screen, episode rows are selectable and scroll within the available terminal space.
| Key | Action |
|---|---|
Up / Down |
Select an episode |
Enter |
Start or replace playback |
d |
Toggle sub/dub |
Esc |
Return home |
Playback runs in the background while Anily remains visible. The selected row
shows Now playing... while mpv is active.
now playing... screenshot
Discord RPC is optional and does not require a bot token. It uses a Discord Application ID and the local Discord IPC socket.
-
Create an application in the Discord Developer Portal.
-
Copy its Application ID.
-
Export the ID before starting Anily:
export ANILY_DISCORD_CLIENT_ID=your_application_id anily
When an episode starts, Discord shows Anily, the anime title, and the episode number. Presence is cleared when playback ends or Anily exits. If the variable is unset, or Discord is not running, Anily continues without RPC.
Anily currently uses environment variables rather than a configuration file.
| Variable | Required | Description |
|---|---|---|
ANILY_DISCORD_CLIENT_ID |
No | Discord Application ID for Rich Presence |
Do not commit this value to the repository or place it in a public log.
Install stable Rust, then run the checks used by CI:
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targetsWith Nix:
nix develop
nix flake checkUseful project files:
src/providers/anilist.rs AniList metadata and cover integration
src/providers/hianime.rs Playback search, episodes, and stream resolution
src/discord.rs Discord Rich Presence IPC integration
src/app/ Application state and orchestration
src/ui/ Terminal rendering
flake.nix Nix package and development shell
cliff.toml git-cliff changelog configuration
See CONTRIBUTING.md for contribution guidelines and SECURITY.md for private vulnerability reporting.
Use Kitty or a terminal with a supported image protocol. Other terminals show the fallback representation. Confirm that the terminal is not filtering escape sequences and that network access to AniList is available.
Confirm that mpv is installed and available:
mpv --versionPlayback providers can temporarily return no match or no stream even when
AniList metadata loads correctly. Retry later or verify the selected language
with d.
Check that Discord desktop is running and that
ANILY_DISCORD_CLIENT_ID contains the Application ID, not a bot token.
Anily is under active development. Provider behavior, terminal image support, and UI details may evolve between releases.

