A local web UI for ani-cli.

Search anime with cover art, browse episodes, resume from your watch history, get recommendations, and play in mpv, IINA, or VLC — from your browser. Dependency-free, one Python file. Playback is handled by ani-cli.

What you'll see

127.0.0.1:17390
frieren
SearchContinue WatchingFor YouDownloads
Frieren: Beyond Journey's End28 eps
12345
▶ Play episode 3
Dungeon Meshi24 eps

A representative mock of the actual UI — calm, dense, no filler.

Install & run

With pipx — recommended. Isolated, handles PATH automatically:

brew install pipx && pipx ensurepath     # first time only
pipx install ani-gui
ani-gui

With Homebrew (macOS / Linux):

brew install rickwiththeportalgun/tap/ani-gui
ani-gui

With pip — on macOS you may need to add the scripts directory to PATH:

pip3 install ani-gui
export PATH="$HOME/Library/Python/$(python3 -c 'import sys;print(sys.version_info.minor)')/bin:$PATH"
ani-gui

From source:

git clone https://github.com/rickwiththeportalgun/ani-gui && cd ani-gui
./ani-gui
MethodBest forAuto-updates
pipxmost users, any OSpipx upgrade ani-gui
HomebrewmacOS/Linux users already on brewbrew upgrade
pipscripting / existing Python envspip install -U ani-gui
Sourcecontributing, hacking on itgit pull
macOS .appno terminalrebuild with make-app.sh

Running ani-gui starts the app at http://127.0.0.1:17390. Add /docs for this page. Requires ani-cli and a player (mpv, IINA, or VLC) already installed.

How it works

  1. You search. ani-gui queries the same AllAnime API ani-cli uses, so results and episode lists line up exactly with what ani-cli -S would show.
  2. Covers resolve lazily. Artwork comes straight from the API, proxied through /api/cover; if a show has none, ani-gui falls back to a Wikipedia lookup.
  3. You pick an episode and hit Play. ani-gui runs ani-cli -S <n> -e <ep> -q <quality> for you — same flags you'd type by hand.
  4. ani-cli resolves the stream. All extraction, provider fallbacks, and player launching stay inside ani-cli, so it keeps working as ani-cli updates.
  5. You get a real status, not a guess. ani-gui reads ani-cli's own output to report what happened — playing, no source, quality fallback, or not yet released.

What it does

Runs on your machine

ani-gui opens a local player on the computer running it, so it's meant to run on your own machine — not as a shared website. See DISTRIBUTION.md for packaging options and what a truly hosted, in-browser-playback version would require.

FAQ

Can I host this so people use it from a browser, like a website?
Not as-is. ani-gui launches a local player on the machine running the server, so if you host it remotely the video opens on the server, not the visitor's screen. It's designed as a localhost tool — each person runs it on their own computer.
Does it work on Windows and Linux, or just macOS?
It's plain Python standard library, so it runs anywhere Python 3.6+ and ani-cli do. The native folder picker and player detection adapt to each OS.
What if ani-cli isn't installed?
ani-gui still starts, but shows a banner telling you to install it (with a link) — search and browsing keep working, only playback needs it.
Is this affiliated with ani-cli?
No. ani-gui is an independent front-end. It streams nothing itself — every stream is resolved and played by your installed ani-cli.
Where do downloads go?
Wherever you set in the Downloads tab (or ANI_CLI_DOWNLOAD_DIR if set), defaulting to the current directory.