# macOS / Linux / Termux
curl -fsSL https://raw.githubusercontent.com/Dhairya3391/kari/main/install.sh | bash# Windows
irm https://raw.githubusercontent.com/Dhairya3391/kari/main/install.ps1 | iexOr download a binary from Releases (linux, macOS, windows, android; amd64/arm64).
Requires a media player: mpv (recommended), IINA (macOS) or VLC. Kari is a terminal frontend, not a player. Android: see Termux setup.
kari # open the TUI
kari "Frieren" # search directly
kari -u # self-update
kari -v # versionType a query, press Space, pick a result, press Enter to play. Tab switches mode.
| Feature | Description |
|---|---|
| 7 modes | Anime, Movies, TV, Cartoons, Live/Sports, Manga, Jellyfin |
| Parallel search | Queries all providers at once, ranks streams by quality, language and server health |
| Resume | Tracks playback position through mpv/IINA IPC, resume from history |
| Skip | Auto-skip intros, outros and recaps, with seekbar chapter markers (mpv) |
| Scrobbling | AniList (anime), Trakt (movies/TV) |
| Manga reader | In-terminal, Kitty / iTerm2 / Sixel / Unicode block graphics |
| Sub / Dub | Toggle with a; the track sticks for following episodes, subtitles side-loaded automatically |
| Downloads | Single or batch via yt-dlp, 16-connection with aria2 |
| Stremio add-ons | Add compatible stream manifests and browse their catalogs in Stremio mode |
| Discord presence | Optional, local only |
| Self-update | kari -u |
Players: mpv, IINA, VLC, MPV Android, MX Player. Capability matrix in docs/PLAYERS.md. Providers per mode: docs/PROVIDERS.md.
To add an add-on, open Settings with s, choose Add-ons, then Add Stremio addon manifest. Kari checks the manifest and a sample stream before saving it.
| Key | Action |
|---|---|
Space |
Focus search / run search |
Enter |
Select / play |
Tab / Shift+Tab |
Switch mode |
[ / ] |
Previous / next season (TV & Anime) |
j / k or arrows |
Move |
n |
Next episode |
h |
History |
s |
Settings |
? |
In-app keybinding help |
q |
Quit |
Everything else: docs/KEYBINDINGS.md
Works with zero config. Change settings in-app (s), via ~/.config/kari/settings.json, or env vars:
| Variable | Description |
|---|---|
KARI_PLAYER |
Force a player: mpv, iina, vlc |
KARI_DOWNLOAD_DIR |
Download destination |
KARI_IMG_PROTOCOL |
kitty, iterm, sixel, blocks, none |
JELLYFIN_URL / JELLYFIN_API_KEY |
Enable Jellyfin mode |
Full reference: docs/CONFIGURATION.md
Optional, for downloads: yt-dlp and aria2
brew install yt-dlp aria2 # macOS
sudo apt install yt-dlp aria2 # Debian/Ubuntu
winget install yt-dlp aria2 # Windows-
Install Termux from F-Droid (not Google Play).
-
Set up packages and storage:
pkg install curl termux-api yt-dlp aria2 termux-setup-storage
-
Install MPV Android.
-
Install Kari with the install script above.
-
In your mpv Android client: Settings → Advanced → Edit mpv.conf, add:
include=/storage/emulated/0/Android/media/<package>/.mpv.confThe default package is
is.xyz.mpv. To use another client, setKARI_MPV_ANDROID_PACKAGEto its Android package name in your Termux environment, then use that same package in the include path. This passes stream headers and subtitles from Termux to MPV.
If a downloaded binary is blocked:
xattr -d com.apple.quarantine ./kariRequires Go 1.26+.
git clone https://github.com/Dhairya3391/kari.git
cd kari
./build.sh # or: go build -o kari ./cmd/kari
./kariPRs welcome. Adding a provider is the easiest way in.
- CONTRIBUTING.md: workflow and pull request checklist
- docs/CODEBASE.md: engineering standards
- docs/PROVIDERS.md: provider architecture
- docs/EXTENDING.md: adding providers and players
Looking for something to pick up? Check good first issues.
Kari hosts, stores and distributes no media. It queries third-party sources and launches your local player. You are responsible for complying with copyright law where you live.
