Overview
OmniGet is a terminal-first download manager written in Rust. It supports video, audio, and file downloads across 1000+ websites, powered by yt-dlp.
No GUI bloat. No Electron. Just a fast, self-contained binary.
Features
| Feature | Description |
|---|---|
| Multi-platform downloads | YouTube, Instagram, TikTok, Twitter/X, Reddit, Twitch, Pinterest, Vimeo, Bluesky, Bilibili, and 1000+ more |
| Batch processing | Download multiple URLs from a text file in one command |
| Auto dependencies | yt-dlp and FFmpeg are downloaded automatically on first run |
| Progress tracking | Real-time progress bars with speed and download phase |
| Queue management | Concurrent downloads with session persistence |
| Settings system | Read, write, and list configuration via JSON path notation |
| Activity logs | Tail application logs from the terminal |
| Audio extraction | Download audio-only streams with --audio-only |
Installation
Precompiled binaries
- Go to the Releases page.
- Download the binary for your OS (
.exefor Windows, ELF for Linux/macOS). - Add it to your PATH.
From source
git clone https://github.com/julesklord/omniget.git
cd omniget
cargo build --release
Binary is at target/release/omniget-cli.
Prerequisites
- Rust 1.70+ (stable)
- Git
All runtime dependencies (yt-dlp, FFmpeg) are managed automatically.
Usage
omniget-cli [OPTIONS] <COMMAND>
Global options
| Option | Description |
|---|---|
-v, --verbose |
Enable verbose logging |
--theme <THEME> |
Theme: brutalist, zen, or auto |
--ascii-only |
Force ASCII-only output (no Unicode) |
download — Download media from a URL
omniget-cli download <URL> [OPTIONS]
| Option | Description |
|---|---|
-o, --output <DIR> |
Output directory (default: system Downloads) |
-q, --quality <QUALITY> |
Target quality, e.g. 1080p, 720p |
-a, --audio-only |
Extract audio only |
Examples:
download-multiple — Batch download from a file
One URL per line.
info — Inspect media metadata
list — List queue items
clean — Clear download history
config — Manage settings
check — Verify dependencies
Downloads missing yt-dlp / FFmpeg if needed.
update — Force-update internal deps
logs — View activity logs
about — App info
Supported platforms
Media platforms
| Platform | Content |
|---|---|
| YouTube | Videos, Shorts, Playlists |
| Posts, Reels | |
| TikTok | Videos |
| Twitter / X | Videos, GIFs |
| Videos, Images | |
| Twitch | Clips |
| Images, Videos | |
| Vimeo | Videos |
| Bluesky | Images, Videos |
| Bilibili | Videos, Series |
Additional
- Torrent / Magnet: via built-in client (
librqbit) - Generic yt-dlp: 1000+ sites
- P2P file sharing: planned
Architecture
omniget/
├── omniget-cli/ # CLI binary (clap + indicatif)
│ └── src/
│ ├── main.rs # Command dispatch
│ └── reporter.rs # Terminal UI
│
├── omniget-core/ # Download engine
│ └── src/
│ ├── core/ # Queue, HTTP, ytdlp, cookies, HLS
│ ├── platforms/ # YouTube, Instagram, TikTok, etc.
│ └── models/ # Shared data types
│
└── omniget-plugin-sdk/ # Plugin extension SDK
| Crate | Role |
|---|---|
omniget-cli |
Standalone CLI binary |
omniget-core |
The engine — platform-agnostic download logic, queue, dependency management |
omniget-plugin-sdk |
SDK for extending download capabilities |
Configuration
Settings stored in the OS app data directory:
| OS | Path |
|---|---|
| Windows | %APPDATA%\omniget\ |
| macOS | ~/Library/Application Support/omniget/ |
| Linux | ~/.local/share/omniget/ |
Portable mode: place portable.txt or .portable next to the binary to use a local data/ folder instead.
Roadmap
| Version | Milestone |
|---|---|
| v0.2.0 | Standalone rewrite — GUI removed, core refactored ✅ |
| v0.3.0 | Interactive TUI mode (ratatui) |
| v0.4.0 | Plugin system |
| v0.5.0 | P2P file sharing |
Related projects
- yt-dlp — Media extraction engine
Contributing
See CONTRIBUTING.md for guidelines.