# GoAnime: an mpv front end that scrapes, searches and resumes from the terminal

> GoAnime is a Go terminal UI that searches anime, movies and TV shows across several sources at once, then plays or downloads the episode through mpv. It is quick to set up and bilingual, but it depends on mpv, on the sites it scrapes staying unchanged, and on your own judgement about what you download.

**alvarorichard/GoAnime** — Search, stream and download anime, movies and TV shows from the terminal, in English and Brazilian Portuguese.

- Repository: https://github.com/alvarorichard/GoAnime
- Website: https://goanime.online/
- Stars: 1,136 · Forks: 61
- Language: Go
- License: MIT
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/alvarorichard-goanime

## The problem it solves: one search box that ends in mpv

GoAnime is a text based user interface written in Go that lets you search for anime, movies and TV shows by name and then either play or download episodes directly in mpv. The README is explicit that it works by scraping data from websites to build the selection of anime and episodes, with support for subbed and dubbed content in English and Portuguese. The audience is someone who watches on a Linux box, an Arch machine, or a Mac with a terminal open all day and does not want to navigate a streaming site with a mouse. The interaction model is short: type a name, arrow through the result list, press Enter on a title, choose an episode and a streaming quality, and the video launches in mpv. Nothing in the design tries to replace a media library front end. mpv is the only hard prerequisite according to the README, and it is the component that does the actual decoding and display. That split is worth holding onto, because it means GoAnime is a discovery and selection layer with a pluggable player, not a player itself.

## The dependency list is the architecture

The go.mod file for the project shows Go 1.27.1 and a dependency set that maps closely onto the described behaviour. The interface layer is the Charm stack: "charm.land/bubbletea/v2" for the program loop, "charm.land/bubbles/v2" for components, "charm.land/huh/v2" for form input, and "charm.land/lipgloss/v2" plus "charmbracelet/colorprofile" and "charmbracelet/x/ansi" for styling and terminal capability detection. The scraping side is "PuerkitoBio/goquery" for HTML parsing together with "enetx/surf" for HTTP, and "mxschmitt/playwright-go" is present, which points to headless browser rendering for pages that do not serve their links in plain HTML. Video extraction is handled through "lrstanley/go-ytdlp", a Go wrapper around yt-dlp. "mattn/go-sqlite3" sits alongside the described progress tracking, which the README lists as resuming playback and tracking watched episodes, so watch state is persisted locally in SQLite rather than in a config file. "tr1xem/go-discordrpc" matches the Discord RPC integration that shows what you are watching, "ktr0731/go-fuzzyfinder" matches the fuzzy title selection, and "disintegration/gift" is the image pipeline behind the built-in Anime4K upscaling. The "pkg/" and "internal/" directories, plus "cmd/goanime" as the entry point, separate the public package surface from the implementation.

## Installing is mpv plus one of four published routes

The README lists mpv as the prerequisite, latest version recommended, and then gives separate instructions per platform. If you have Go on your machine, the universal route is a single command. On macOS, Homebrew installs mpv and a release binary is downloaded, made executable and moved into "/usr/local/bin/", with the quarantine attribute removed so Gatekeeper does not block it. Debian and Ubuntu take a tarball from the same release page, and Arch and Manjaro users install the "yay -S goanime" package from the AUR. Fedora follows the tarball route after installing mpv with dnf. Windows is different: the README strongly recommends a dedicated installer, and separately asks you to install mpv for Windows and make sure it is on your path. The commands below are the published ones, so pick the block that matches your system:

```bash
brew install mpv

curl -Lo goanime https://github.com/alvarorichard/GoAnime/releases/latest/download/goanime-apple-darwin
chmod +x goanime
sudo mv goanime /usr/local/bin/

sudo xattr -d com.apple.quarantine /usr/local/bin/goanime
```

```bash
go install github.com/alvarorichard/Goanime/cmd/goanime@latest
```

The AUR route is one line, "yay -S goanime", but it is the only one that depends on a distribution package rather than a file the project publishes itself.

## First run: search, pick, and the video opens by itself

The usage flow in the README is five steps. Open a terminal, type "goanime" and press Enter, give the name of the title you want, move through the results with the arrow keys, press Enter to select, then pick an episode and a streaming quality and the video starts in mpv. There is also a direct search form that skips the interactive prompt, which is the one you will actually use once you know what you want:

```bash
goanime "Naruto"
```

Two more commands are documented for everyday use. "goanime --update" pulls the newest version without a manual download, and "goanime -h" prints the available commands and flags. Since the interface is a Charm TUI, the arrow key and Enter flow is the whole navigation model; there is no documented flag for batch downloading or for non interactive scripting, and "goanime -h" is the place to look when you need to know what else exists. One design choice deserves attention: searching is described as simultaneous multi source searching by default across all active platforms. That default is what makes a single query useful, but it also means the tool is reaching several third party sites on every search, and the set of active platforms is determined by sites the project scrapes rather than by anything you configure.

## Watch state, Discord presence and Anime4K in one binary

Three features sit above the bare search and play flow. Progress tracking is the one with the most engineering behind it, because the README lists both resuming playback and tracking watched episodes, and "mattn/go-sqlite3" in the dependency list points at a local SQLite store for that state. Resume is the feature that changes daily use: series are watched in short sittings, and a tool that restarts an episode from zero every time is a tool people stop using. Discord RPC integration shows what you are currently watching, which is social plumbing rather than a media feature, but it explains the presence of "tr1xem/go-discordrpc". Built-in upscaling with Anime4K is the third, and it is the one with a hardware implication: upscaling costs GPU time, and on a laptop that means heat and fan noise, so it is the kind of switch you want off by default. The README does not document a configuration file or a flag for toggling Anime4K, Discord RPC or the location of the progress database, so the only documented way to learn what is configurable is to run "goanime -h" on the installed version.

## Corporate proxies break it, and GoAnime tells you the fix

The troubleshooting section is the most specific part of the README and points at a real failure mode. On a network that inspects TLS with its own root certificate authority, every request fails with a certificate error. The fix is to point GoAnime at a certificate bundle with two environment variables, one for a single PEM file and one for a directory of PEM files. The README adds a version specific note: since Go 1.27 those variables are honoured on Windows and macOS as well, not only Linux, and when either is set GoAnime verifies certificates with Go's own verifier against your bundle instead of the platform certificate store. There is also a documented way back to the platform store without unsetting the variables, through a GODEBUG setting that disables the override:

```bash
export SSL_CERT_FILE=/path/to/corporate-ca.pem   # a single PEM bundle
export SSL_CERT_DIR=/path/to/ca-certificates.d   # or a directory of PEMs
```

```bash
GODEBUG=x509sslcertoverrideplatform=0
```

For a corporate user this is the difference between the tool working and not working, and the fact that the project documents the escape hatch suggests the override has surprised people before.

## What the project does not promise, and the Android alternative

Three boundaries are worth stating plainly. First, the tool depends on sites it does not control. Scraping is the described mechanism, so a change in a site's markup, or a blocking of the request, surfaces as an empty result list rather than a clear error, and the README does not document a fallback catalogue. Second, the content itself is a question you have to answer for yourself: GoAnime provides the discovery layer, and what you download and how you use it falls under the terms of the sites it scrapes and the law where you are. Nothing in the repository changes that. Third, the Windows path is the least smooth, since it needs a separate installer and a manual mpv install, while Unix systems have a package manager or a single static binary. There is an alternative in a different form rather than a different tool: the README points to a separate mobile project, GoAnime Mobile for Android. The difference in approach is the interface, not the content pipeline, since the mobile client offers the same search and watch idea on a phone instead of a terminal, and the terminal client additionally gives you mpv's controls, Anime4K and Discord presence that a phone app has no reason to implement.

## Conclusion

Adopt GoAnime if you want a keyboard driven search, pick and play flow on a machine that already has mpv, and you are comfortable with a tool that reads third party sites rather than a licensed API. Do not adopt it if you need a stable, contract backed catalogue, if your environment blocks the platforms it scrapes, or if you want a Windows install without an extra installer step. Before the first run, install mpv and confirm that a direct search returns results on your network, and check that the download path is acceptable under the terms of the sites you are pulling from. The licence is MIT and the last push was on 2026-10-19, with tagged releases through v1.8.7.

## FAQ

### What do I need before GoAnime will work?

The README lists mpv as the only prerequisite, with the latest version recommended. GoAnime launches video in mpv rather than playing it itself, so without mpv installed the interface runs but nothing opens.

### How do I install GoAnime on Linux?

Debian and Ubuntu users install mpv with apt and then download and unpack the goanime-linux-amd64.tar.gz release, while Arch and Manjaro users install the AUR package with yay -S goanime. Fedora follows the tarball route after installing mpv with dnf.

### Can GoAnime resume a series where I stopped watching?

Yes. The feature list names resume playback and tracking of watched episodes as part of progress tracking, and the dependency list includes mattn/go-sqlite3, which points to local SQLite storage for that state.

### How does GoAnime work behind a corporate proxy with TLS inspection?

The README says to set SSL_CERT_FILE to a single PEM bundle or SSL_CERT_DIR to a directory of PEMs, and notes that since Go 1.27 these are honoured on Windows and macOS as well as Linux. The GODEBUG setting x509sslcertoverrideplatform=0 returns the tool to the platform certificate store.

## Sources

- [alvarorichard/GoAnime on GitHub](https://github.com/alvarorichard/GoAnime)
- [License: MIT](https://github.com/alvarorichard/GoAnime/blob/main/LICENSE)
- [Project website](https://goanime.online/)
- [README](https://github.com/alvarorichard/GoAnime/blob/main/README.md)
- [Releases](https://github.com/alvarorichard/GoAnime/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/alvarorichard-goanime
