ani-gui
A small local web UI for ani-cli.
It searches the same AllAnime API that ani-cli uses (so it can show a proper
list of series and an episode grid), and hands playback off to your installed
ani-cli binary — so all the stream-extraction and player logic stays in one
place and keeps working as ani-cli updates.
Features
- Search with cover art (AniList / MyAnimeList / Wikipedia fallback), sub/dub toggle, episode grid
- Play or download any episode in your chosen player (mpv / IINA / VLC)
- Continue Watching — resumes the next episode from ani-cli's history
- Quality selection (best / 1080 / 720 / 480 / worst)
- Update & health check — flags ani-cli and ani-gui updates, missing binaries, or no player
- Zero third-party dependencies; single Python file + single HTML file
Requirements
ani-cli(it handles playback) — the one-line installer, the Homebrew formula, andani-gui --install-ani-cliwill set it up for you if it's missing; or install it yourselfpython3(standard library only — no pip installs)- A player ani-cli knows about (mpv / IINA / VLC) for watching
On Linux, install the dependencies from your package manager first:
# Debian/Ubuntu
sudo apt install mpv python3 pipx
# Fedora
sudo dnf install mpv python3 pipx
# Arch
sudo pacman -S mpv python python-pipx
ani-cli isn't packaged on most distros — install it from the
upstream repo (Arch users: yay -S ani-cli):
sudo curl -sL https://raw.githubusercontent.com/pystardust/ani-cli/master/ani-cli -o /usr/local/bin/ani-cli
sudo chmod +x /usr/local/bin/ani-cli
Install & run
One-line installer — installs ani-cli, a player, and ani-gui (skips whatever's already there):
curl -sL https://raw.githubusercontent.com/rickwiththeportalgun/ani-gui/main/install.sh | sh
pipx — recommended. Isolated environment, handles PATH automatically:
# Install pipx first (one time):
# Debian/Ubuntu: sudo apt install pipx
# Fedora: sudo dnf install pipx
# Arch: sudo pacman -S python-pipx
# macOS: brew install pipx
# any OS: python3 -m pip install --user pipx
pipx ensurepath # adds ~/.local/bin to PATH — restart your shell after
pipx install ani-gui
ani-gui
Homebrew (macOS / Linux) — see Formula/ani-gui.rb:
brew install rickwiththeportalgun/tap/ani-gui
ani-gui
pip — works but may need a PATH tweak. Scripts land in a user bin dir that
isn't always on PATH: ~/.local/bin on Linux, ~/Library/Python/3.x/bin on
macOS. Add it to your shell config if ani-gui isn't found:
pip3 install --user ani-gui
# Linux — if "command not found":
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc # or ~/.zshrc
# macOS — if "command not found":
export PATH="$HOME/Library/Python/$(python3 -c 'import sys;print(sys.version_info.minor)')/bin:$PATH"
ani-gui
From source (no install):
git clone https://github.com/rickwiththeportalgun/ani-gui && cd ani-gui
./ani-gui
macOS .app (double-click, no terminal):
sh packaging/macos/make-app.sh # builds dist/ani-gui.app
Running ani-gui starts a local server and opens http://127.0.0.1:17390 in
your browser. Options: --port, --host, --no-browser (or ANI_GUI_PORT).
ani-gui is a localhost tool — it opens a player on the machine running it, so it isn't a shared website. See DISTRIBUTION.md.
Uninstall / teardown
Remove ani-gui the same way you installed it:
pipx uninstall ani-gui # installed with pipx
pip3 uninstall ani-gui # installed with pip
brew uninstall ani-gui # installed via the Homebrew tap
# from source: just delete the cloned folder
ani-gui keeps a little state next to ani-cli's, under
~/.local/state/ani-cli/ (or $XDG_STATE_HOME/ani-cli). Remove the files
ani-gui created — this leaves ani-cli's own watch history untouched:
rm -f ~/.local/state/ani-cli/ani-gui-settings.json # your saved download dir
rm -f ~/.local/state/ani-cli/ani-downloads.json # ani-gui's download log
Downloaded videos stay wherever you saved them (your chosen download directory, or the folder you launched from) — delete those yourself if you want.
To also remove ani-cli and the player (full teardown):
rm -rf ~/.local/state/ani-cli # ani-cli watch history + ani-gui state
sudo rm -f /usr/local/bin/ani-cli # if installed via the curl snippet above
# Debian/Ubuntu: sudo apt remove mpv
# Fedora: sudo dnf remove mpv
# Arch: sudo pacman -R mpv
Use
Search tab
- Type a search and hit Search (toggle Sub/Dub as needed).
- Click a series to load its episodes (cover art shown for each result).
- Click an episode, pick a quality, then Play (or Download).
Continue Watching tab
Reads ani-cli's watch history and shows each series with its cover and the next unwatched episode. Resume plays that next episode in one click. Series you're caught up on are shown but disabled.
Playback opens in your usual ani-cli player. Downloads go to ani-cli's
download directory (ANI_CLI_DOWNLOAD_DIR, defaults to the current dir).
How it works
GET /api/searchandGET /api/episodescall the AllAnime GraphQL API directly. Covers are proxied throughGET /api/cover(with a Wikipedia fallback when the API provides no artwork). Results are filtered/ordered to match ani-cli's own-Snumbering.GET /api/continueparses ani-cli's history file ($ANI_CLI_HIST_DIRor~/.local/state/ani-cli/ani-hsts) and resolves each show's cover + next episode.POST /api/playrunsani-cli -S <n> -e <ep> -q <quality> [--dub] [-v] "<query>"with stdin closed, so ani-cli resolves the stream, launches the player detached, then exits cleanly. Passplayer: "vlc"for VLC.POST /api/resumelooks up the show's search position by id (so the-Snumber is correct) and plays the next episode.GET /api/versionreports ani-gui / ani-cli versions, whether an update is available, and which players are installed.GET /docsserves the project landing page with install instructions and links back to the app.
Troubleshooting
- "ani-cli isn't installed" — install it (
brew install ani-clior see the upstream repo) and make sure it's on yourPATH, then reload. - "No video player found" — install
mpvoriina. - Play does nothing / black screen — a specific source may be down. Try a different quality, or pick another search result. (Same behavior as ani-cli.)
- Continue tab is slow — it makes one API call per history entry; large histories take a moment.
FAQ
Can I host this so people use it from a browser, like a website?
Not as-is. ani-gui launches a local player (mpv / iina) 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. See DISTRIBUTION.md for packaging options and what a
truly hosted, in-browser-playback version would require.
Contributing
Issues and PRs welcome — see CONTRIBUTING.md and the Code of Conduct.
Files
ani_gui/server.py— zero-dependency Python backendani_gui/index.html— single-file frontendani-gui— source launcher (python3 -m ani_gui)pyproject.toml— packaging / console entry pointFormula/ani-gui.rb— Homebrew formula templatepackaging/macos/make-app.sh— builds a double-clickable.appdocs/index.html— project homepage (GitHub Pages)
License
GPL-3.0, matching upstream ani-cli (ani-gui replicates ani-cli's public AllAnime API constants and mirrors its result ordering).
ani-gui is an independent front-end and is not affiliated with the ani-cli project. It streams nothing itself — playback is delegated to ani-cli.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ani_gui-0.5.1.tar.gz.
File metadata
- Download URL: ani_gui-0.5.1.tar.gz
- Upload date:
- Size: 57.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7aaeed85ad0e87bc0579bd97ca8a2f8865342a1035e10d2d2c19e01b4118b68c
|
|
| MD5 |
639aa8afda2e5bdfb089efa0c386fa03
|
|
| BLAKE2b-256 |
b590c41eccae5840e9a8d3e5bda4ab9c5b4d2814abb52d11b03ad44da1fe4e02
|
File details
Details for the file ani_gui-0.5.1-py3-none-any.whl.
File metadata
- Download URL: ani_gui-0.5.1-py3-none-any.whl
- Upload date:
- Size: 56.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb2982227d1103727a9cff4034bc5e3690ea49dc1236d30a1ca0878ea086c4d9
|
|
| MD5 |
d32698134bfcdfe2ae68cf9ce61ff95c
|
|
| BLAKE2b-256 |
33d4e509e2c74bc1801c7048889d44c98831e0c86a87f219fa2d0128b1a9fd25
|