anitrack
AniTrack is a companion CLI for ani-cli. It adds watch-progress tracking and navigation while delegating search and playback to ani-cli.
Screenshot

Credit
AniTrack depends on ani-cli for anime search and streaming playback.
This project does not replace ani-cli; it orchestrates and extends the workflow around it.
Installation
Arch Linux (AUR)
Recommended (prebuilt binary, no Rust toolchain required):
Source build (Rust toolchain required only while building):
Both AUR packages declare ani-cli as a dependency, so it is installed automatically if missing.
Equivalent yay commands also work if you use yay instead of paru.
crates.io (any distro with Rust)
Install from crates.io:
This method does not install ani-cli, so install ani-cli separately and ensure it is on your PATH.
Verify installation:
Upgrade to the latest release (crates.io):
Troubleshooting (Arch)
If paru -S anitrack fails to build on your system, install the prebuilt package instead:
Uninstall
AUR:
# or
crates.io:
Quick Start
Command Reference
anitrack- Opens the TUI (default command)
anitrack start- Runs
ani-cli - Reads
ani-clihistory before and after playback - Stores the latest meaningful watch change (new show ID or updated episode/title)
- If history content is unchanged for that run, tries a short-window
ani-clilog match to resolve the watched entry
- Runs
anitrack next- Loads the most recently seen show from AniTrack DB
- Plays the next episode using
ani-cli -cwith a seeded temporary history entry - Updates DB progress only if playback exits successfully
- Persists the final episode reached in the
ani-clisession (includingnext/replayactions from the in-session menu)
anitrack replay- Replays the currently stored episode for the most recently seen show
- Persists the final episode reached in the
ani-clisession - Uses a safe fallback path for episode 1
anitrack list- Lists tracked entries ordered by most recent update
anitrack tui- Opens an interactive terminal UI with tracked shows (latest first)
Up/Downselects showLeft/Rightselects action (Next/Replay/Previous/Select, defaultNext)slaunches search (runsani-cliUI and returns to the TUI after exit)- Search sync uses the same detection rules as
start(history delta first, then log fallback) ddeletes selected tracked entry (with confirmation prompt)Enterruns the selected action for the selected show (Selectlaunchesani-cliepisode selection flow)qquits
For local development, run from the repository root:
Data and Paths
- AniTrack database path:
${XDG_DATA_HOME:-$HOME/.local/share}/anitrack/anitrack.db(Linux default behavior)
ani-clihistory path read by AniTrack:$ANI_CLI_HIST_DIR/ani-hstsifANI_CLI_HIST_DIRis set- otherwise
${XDG_STATE_HOME:-$HOME/.local/state}/ani-cli/ani-hsts
History line format expected by AniTrack:
episode<TAB>id<TAB>title
AniTrack also accepts space-separated history lines when tabs are not present:
episode id title...
Behavior Notes
- If the database or parent directory does not exist, AniTrack creates them automatically.
- If
anitrack nextoranitrack replayplayback fails or is interrupted, progress is not updated. - If you navigate episodes inside
ani-cliafter playback starts (for example using itsnextoption), AniTrack stores the last episode reached when the session ends successfully. - If no prior entry exists,
nextandreplayinstruct you to runanitrack startfirst. - TUI/start sync only records entries tied to the current run and does not backfill arbitrary old history rows, so deleted DB entries are not resurrected unless watched again.
License
This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).
See LICENSE.
Changelog
See CHANGELOG.md for release history and notable changes.
Maintainer Notes
Release workflow details (CI, GitHub Releases, crates.io publish, and AUR update values) are documented in docs/release.md.