Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
- Overview
- Cross-Platform Compatibility
- Using as a Rust Library (mangofetch-core)
- Installation
- Technical Architecture
- How the Engine Works
- Command Reference
- Acknowledgments
- Contributing
- License
Overview
MangoFetch is a fast, versatile, and comprehensive media downloader suite built in Rust. It's designed to be a complete tool out-of-the-box, providing maximum control and granular options (like specific video/audio formats and resolutions) without sacrificing speed or simplicity.
At its heart is mangofetch-core, a lightweight and headless engine. Built on Tokio and Reqwest, it uses a simple API with Rust Traits to handle YouTube, Torrents (Magnet), SoundCloud, Instagram, and over 1000+ other platforms thanks to its intelligent wrapping of yt-dlp and ffmpeg.
For everyday use, MangoFetch ships with a complete frontend suite:
mangofetch-gui: A beautifully designed, highly-responsive, hardware-accelerated desktop application powered byegui. It features a dark-industrial MonolithUI design system, persistent engine logs, telemetry, and drag-and-drop ease.mangofetch tui: A terminal dashboard built withratatuifeaturing mouse support, modal dialogs, queue management, and 11 fun Tropical Fruit color palettes.mangofetch cli: A rapid, scriptable command-line interface for batch downloads and single-shot commands.
Cross-Platform Compatibility
MangoFetch is built in Pure Rust, guaranteeing native performance and ubiquitous compatibility. The entire suite (Core, GUI, TUI, and CLI) compiles and runs natively across a wide range of architectures and operating systems:
- Operating Systems: Windows (10/11), macOS (Intel & Apple Silicon), GNU/Linux (Ubuntu, Arch, Fedora, Arch, Alpine, etc.), and *BSD variants.
- Architectures: AMD64 (x86_64), ARM64 (aarch64), ARMv7, making it perfect for powerful desktops, MacBooks, and even Raspberry Pi or low-power home servers.
- Self-Healing: If your system is missing
yt-dlp,ffmpeg, oraria2c, the MangoFetch engine can detect your OS and architecture and securely download the correct standalone binaries automatically. You don't need to manually configure PATH dependencies.
Using as a Rust Library (mangofetch-core)
Unlike big, clunky GUI downloaders, MangoFetch is built to be part of your project. If you're making a Discord bot, a web server, or your own custom app, you can just plug mangofetch-core right into your Rust code.
Add it to your Cargo.toml:
[]
= { = "https://github.com/julesklord/mangofetch" }
Why use mangofetch-core?
- Simple Telemetry: Check progress easily using standard
tokio::sync::mpscchannels. No UI blocking or complicated setup needed. - Unified Traits: Whether it's a direct link, a torrent, or a TikTok video, you can talk to them all through the same
PlatformDownloadertrait. - Easy Dependencies: The engine takes care of managing and checking external tools like
yt-dlpandffmpegin its own space. - Reliable Queue: A smart download manager that handles retries and network hiccups automatically.
CLI/TUI Installation
Via Cargo (Recommended)
The fastest way to install the CLI directly to your system path:
From Source
For developers who want the absolute bleeding edge:
# The compiled binary will be available at: target/release/mangofetch
Run
Testing note: to run tests and CI in an environment that avoids runtime network downloads of external tools (yt-dlp, ffmpeg, deno), set:
)
Technical Architecture
MangoFetch is well-organized, keeping things clean and modular. This design makes the core engine portable, easy to test, and separate from how it's shown on screen.
graph TD
User([Terminal / App User]) -->|CLI / Events| Frontend(CLI / Bot / Custom GUI)
subgraph MangoFetch Workspace
Frontend -->|Dispatch & Read MPSC| Core(mangofetch-core)
subgraph Core Engine
Core --> Manager[Manager: Queue & Recovery]
Core --> Registry[Platform Registry]
Manager --> IO[Tokio Async I/O]
Registry --> Ext_Native[Native Extractors]
Registry --> Ext_Generic[Generic Extractor]
end
Frontend -.->|Dynamic Linking| SDK(mangofetch-plugin-sdk)
end
Ext_Generic -->|Wraps| YTDLP[yt-dlp Binary]
Ext_Native -->|Muxes Audio/Video| FFmpeg[FFmpeg Binary]
Ext_Native -->|BitTorrent / P2P| RQBit[librqbit]
YTDLP -.-> Network((Internet))
IO -.-> Network
IO --> Disk[(Local Storage)]
Core Components
mangofetch-core: The heart of the system. It handles the download queue and works with sites like YouTube, Instagram, and TikTok. It also managesyt-dlpandffmpegfor you, even downloading them if they aren't on your system.mangofetch: A simple frontend built withclapandratatui. It's fast, looks great, and shows you everything that's happening in real-time.mangofetch-plugin-sdk: A toolkit for adding new features to MangoFetch while it's running.
How the Engine Works
The mangofetch-core queue is smart and reliable. It handles many downloads at once, and if something goes wrong with one, it just retries later without stopping everything else.
stateDiagram-v2
[*] --> Queued : Submit URL
Queued --> FetchingMetadata : Worker Thread Picks Item
FetchingMetadata --> Active : Media Info Resolved
FetchingMetadata --> Error : Network/Parse Failure
state Active {
[*] --> Allocating
Allocating --> Downloading : Progress Stream via MPSC
Downloading --> Muxing : Audio+Video Merge (FFmpeg)
Muxing --> [*]
}
Active --> Paused : User Pauses
Paused --> Active : User Resumes
Active --> Seeding : BitTorrent Complete
Seeding --> Complete : Seed Goal Reached
Active --> Complete : Success
Active --> Error : Interruption / Connection Drop
Error --> Queued : Retry Logic Triggered (Auto-Recovery)
Complete --> [*]
Key Features under the hood
- Fast Progress Reporting: Uses background channels to show progress without slowing down the app. This keeps the interface smooth and responsive.
- Self-Healing Tools: Automatically finds and sets up the external tools it needs (
ffmpeg,yt-dlp). - Smart Parsing: Tries to handle links directly first, only using extra tools when it really needs to.
Command Reference
For a full list of commands and how to use the TUI, check out our Official Wiki.
| Full Command | Short Alias (Upcoming) | Description |
|---|---|---|
mangofetch download <url> |
mango d <url> |
Just download a single link. |
mangofetch download-multiple <file> |
mango dm <file> |
Download a whole bunch of links from a file. |
mangofetch info <url> |
mango i <url> |
See info about a link without downloading it. |
mangofetch list |
mango ls |
See what's currently in your queue. |
mangofetch clean |
mango c |
Clear your history and cache. |
mangofetch config |
mango cfg |
Change settings like limits and paths. |
mangofetch check |
mango ch |
Check if your tools are working correctly. |
mangofetch update |
mango up |
Update the external tools to their latest versions. |
mangofetch logs |
mango log |
View app logs if you're curious or debugging. |
mangofetch about |
mango a |
Show version and license info. |
Acknowledgments
- OmniGet — A big inspiration for this project. Huge thanks to tonhowft for the original ideas and engine logic.
- yt-dlp — The amazing tool that does the heavy lifting for so many sites.
Contributing
Pull requests are always welcome. We have a few rules to keep the code clean, so if you're planning a big change, just open an issue first so we can chat about it. Check out CONTRIBUTING.md for more info.