ayoru is a terminal-first anime watcher built around a keyboard-driven TUI.
It lets you search a show, pick an episode, resolve a stream, and open playback in a local player without bouncing between browser tabs and ad-heavy sites.
- bare
ayoruopens the full-screen TUI - full-screen TUI with search, favorites, history, and recently watched
- automatic stream ranking and playback fallback
- local player launch with
mpv,iina, orvlc - local-only saved state for the TUI
Before installing, make sure you have:
- Rust stable toolchain
- one supported player installed:
mpviinavlc
curl -fsSL https://raw.githubusercontent.com/BrandonLee28/ayoru/main/scripts/install.sh | shWhat this does:
- installs
ayoruto~/.local/bin/ayoru - uses the rolling
alphaGitHub Release built frommain - falls back to a source build if a release artifact is missing
- adds
~/.local/binto your shellPATHif needed
Verify the install:
command -v ayoru
ayoru --versiongit clone https://github.com/BrandonLee28/ayoru.git
cd ayoru
cargo install --path .Cargo installs the binary to ~/.cargo/bin/ayoru.
If ayoru is not found in a new terminal, add Cargo's bin directory to your PATH.
For zsh on macOS:
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.zprofile
source ~/.zprofileayoruThe TUI includes:
- search
- favorites
- recently watched
- history
- keyboard-first navigation
- type to search when search is focused
/focus searchTabmove betweenMedia Browser,Favorites, andHistoryh/lmove between tabs when search is not focusedj/kor arrow keys move inside the active listEnteropen a title or play an episode in the active flowftoggle favorite when search is not focuseddremove the selected item from favorites or historyDclear all history when the history tab is activeEscback out of detail or playback statesqquit
The install likely succeeded, but your shell has not picked up the bin directory yet.
If you used the one-command installer, open a new terminal or reload your shell profile:
source ~/.zprofileThen check again:
command -v ayoruThat is expected when a matching alpha release artifact is unavailable for your platform. In that case the installer uses cargo build --release, so Rust and Cargo must be installed.
Make sure at least one supported player is installed:
mpviinavlc
The TUI stores local state at:
$XDG_STATE_HOME/ayoru/library.json, or~/.local/state/ayoru/library.json
This file stores favorites, recently watched, and history in JSON.
Ayoru currently focuses on:
- terminal-first playback
- one provider integration
- local player launch
- local-only saved state
It does not currently include:
- accounts
- sync
- recommendations
- collections
- a native desktop app
Useful commands:
cargo run -- --help
cargo test -q
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warningssrc/
app.rs provider and player runtime traits
args.rs command validation
core/ models, playback policy, stream ranking
player/ player detection and launch
provider/ provider integrations
tui/ TUI shell, renderer, runtime, persistence
tests/ integration and behavior tests
docs/ design and implementation docs
The installer expects release artifacts to use these names:
ayoru-darwin-aarch64.tar.gzayoru-darwin-x86_64.tar.gzayoru-linux-aarch64.tar.gzayoru-linux-x86_64.tar.gz
Pushes to main refresh the rolling alpha release used by the installer by default.
Push a version tag when you want a versioned release:
git tag v0.1.0
git push origin v0.1.0The GitHub Actions workflow publishes both:
- a rolling
alphaprerelease frommain - versioned releases for
v0.1.xtags
- Favorites, history, and recently watched are local-only by design.
- Design and implementation notes live under
docs/plans/.