Why I Built ani-sync: The Zero-Buffering Terminal Anime Streamer with Multi-Cloud Sync
DEV Community

Why I Built ani-sync: The Zero-Buffering Terminal Anime Streamer with Multi-Cloud Sync

If you have ever tried streaming anime directly from your terminal, you have probably used tools like ani-cli or simple web scrapers. While minimalist bash scripts are great, they frequently hit three major bottlenecks: - Buffering & Connection Throttling: Single-threaded HTTP streams choke when remote anime CDNs throttle transfer rates to ~50 KB/s. - Manual Scrobbling Friction: After finishing an episode, you still have to switch windows to update MyAnimeList, AniList, or Kitsu manually. - Browser Bloat: Running heavy browser tabs consumes 2-3 GB of RAM, spins laptop fans, and exposes users to intrusive ad trackers. To solve this, I built ani-sync - an open-source, hardware-accelerated terminal anime streaming player and downloader with automated multi-platform synchronization. ⚡ Architecture: Achieving Zero-Buffering Playback Instead of streaming video sequentially through a single slow TCP socket, ani-sync uses a 4-tier acceleration pipeline: [ Remote HLS Stream ] │ ▼ (64 Concurrent Parallel Sockets via yt-dlp) [ ⚡ Turbo Multi-Thread Engine ] │ ▼ (10,000+ MB/s Shared Memory Bus) [ 💾 RAM Disk (/dev/shm) Cache ] ◄── (Background Pre-fetch of Episodes N+1, N+2) │ ▼ (GPU Hardware Acceleration: Intel VAAPI / NVDEC / AMD) [ 🎬 MPV Player (Zero-Buffer Local Stream) ] │ ▼ (On Window Close / Finish) [ 🔄 Multi-Cloud OAuth API Scrobbler ] 64-Connection Parallel Swarm: By pulling 64 segments concurrently across multiple TCP sockets, entire 25-minute episodes load in 3-5 seconds, completely saturating available bandwidth. Linux RAM-Disk Caching (/dev/shm): Video fragments stream straight into tmpfs shared RAM at 10,000+ MB/s, eliminating disk I/O bottlenecks and preventing SSD write wear. Predictive Dual Pre-Fetching: While you watch Episode 1, Episodes 2 and 3 preload silently in a background thread, enabling instant 0.00s transitions between episodes. Hardware Video Offloading: Video decoding is offloaded to the GPU via --hwdec=auto-safe, keeping CPU utilization under 5% and RAM usage around 30 MB. 📊 Performance Benchmark - 💾 RAM Footprint: 1,800 MB - 3,500 MB (Browser) ➔28 MB - 45 MB (ani-sync) - ⚡ CPU Utilization: 30% - 60% (Browser) ➔2% - 5% GPU Decoded (ani-sync) - 🛡️ Telemetry & Trackers: 40+ JS Pixels (Browser) ➔0 Telemetry (ani-sync) - ⏱️ Seek & Start Latency: 10s - 30s Buffering (Browser) ➔0.00s Instant RAM Cache (ani-sync) - 🔄 Progress Auto-Sync: ❌ Manual (Browser) ➔✅ MAL + AniList + Kitsu (ani-sync) - ⏩ Opening / Ending Skip: ❌ Manual scrubbing (Browser) ➔✅ AniSkip [Tab]/[o] (ani-sync) ✨ Standout Features 🔄 Multi-Platform Background Sync: Marks progress simultaneously across MyAnimeList, AniList (GraphQL), and Kitsu (JSON:API) the moment an episode finishes. ⏩ Frame-Accurate AniSkip Integration: Integrates with api.aniskip.com timestamps to automatically skip intros/outros or skip on demand with Tab or o. 🔍 Interactive FZF Search: Built-in fuzzy filtering across episode pickers, seasons, and local watch history. 💬 Discord Rich Presence: Broadcasts current episode progress and title directly over local IPC without third-party bloat. 🚀 Quick Install Linux & macOS (One-Liner): Bash curl -fsSL https://raw.githubusercontent.com/idrisharis12/ani-sync/main/install.sh | bash Arch Linux (AUR): Bash yay -S ani-sync Debian / Ubuntu (.deb): Bash curl -LO https://github.com/idrisharis12/ani-sync/releases/latest/download/ani-sync_2.7.1_all.deb sudo apt install -y ./ani-sync_2.7.1_all.deb Windows (PowerShell): PowerShell irm https://raw.githubusercontent.com/idrisharis12/ani-sync/main/install.ps1 | iex 🎮 CLI Usage Example Bash 1. Search and stream ani-sync "frieren" 2. Resume last watched anime ani-sync continue 3. Stream with auto-skip enabled ani-sync "attack on titan" --skip 4. Batch download episodes for offline travel ani-sync "jujutsu kaisen" -d -e 1-12 ⭐ Source Code & Documentation: ani-sync Top comments (0)

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.