A media-download ecosystem built entirely in Rust. Two production products share one high-performance core:
- dora β a Catppuccin-themed terminal client for your desktop
- doradura bot β a Telegram bot with audio FX, 9+ output formats, and 1000+ supported platforms
A pixel-perfect TUI built with ratatui and the Catppuccin Mocha palette β 7 logo themes, full mouse support, 60 fps.
Paste a URL β preview with ASCII thumbnail β pick quality β download. History, lyrics search, and persistent settings included.
# macOS
brew tap Jacke/dora && brew install dora
# Ubuntu / Debian
curl -fsSL https://iamjacke.com/doradura/KEY.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/dora.gpg
echo "deb [signed-by=/etc/apt/keyrings/dora.gpg] https://iamjacke.com/doradura stable main" \
| sudo tee /etc/apt/sources.list.d/dora.list
sudo apt update && sudo apt install dora
# Arch Linux
yay -S dora-bin
# From source
cargo install --path crates/doratuiYouTube Β· SoundCloud Β· TikTok Β· Instagram Β· VK Β· Spotify Β· Bandcamp Β· Twitter/X Β· and 1000+ more via yt-dlp.
| Formats | Audio FX (Premium) | Features |
|---|---|---|
| MP3 Β· MP4 Β· WAV Β· FLAC Β· OGG Β· M4A | Pitch Β· Tempo Β· Bass Boost | Video notes (auto-split circles) |
| GIF Β· SRT Β· Opus Β· AAC | Lofi Β· Wide Β· Morph profiles | Ringtones (iPhone .m4r / Android) |
| 128kβ320k audio Β· up to 4K video | Archive ZIP download of history | |
| Share pages with streaming links |
Commands: /start Β· /download <url> Β· /info <url> Β· /history Β· /settings Β· /plan
Languages: English Β· Π ΡΡΡΠΊΠΈΠΉ Β· FranΓ§ais Β· Deutsch
cp .env.example .env # add TELOXIDE_TOKEN, TELEGRAM_API_ID/HASH, ADMIN_USERNAME
cargo run -p doraduraOr deploy with Docker / Railway:
# Docker
docker build -t doradura .
docker run -e TELOXIDE_TOKEN=... -e TELEGRAM_API_ID=... \
-e TELEGRAM_API_HASH=... -v doradura-data:/data doradura
# Railway β just connect repo and set env vars, auto-deploy on push
railway upEnvironment variables
| Variable | Required | Description |
|---|---|---|
TELOXIDE_TOKEN |
β | Telegram bot token |
TELEGRAM_API_ID |
β | Telegram API ID |
TELEGRAM_API_HASH |
β | Telegram API hash |
ADMIN_USERNAME |
β | Bot username (without @) |
DATABASE_URL |
SQLite path (default: /data/database.sqlite) |
|
WARP_PROXY |
SOCKS5 proxy β required for YouTube on Railway | |
BOT_API_URL |
Local Bot API for files up to 2 GB | |
WEB_BASE_URL |
Base URL for share pages & admin dashboard | |
DOWNSUB_GRPC_ENDPOINT |
Subtitle service endpoint |
doradura/
βββ crates/
β βββ doracore/ Shared library β download pipeline, storage, i18n, lyrics
β β βββ download/ SourceRegistry β YtDlpSource / HttpSource β Pipeline
β β βββ storage/ SQLite + Postgres (SharedStorage), migrations, TempDirGuard
β β βββ core/ Config, web server (share pages + admin), metrics
β β
β βββ health-monitor/ Bot health watchdog β auto-recovers title & checks /health
β β
β βββ dorabot/ Telegram bot β handlers, menus, callbacks, audio/video
β β
β βββ doratui/ Terminal UI β ratatui, settings, preview, lyrics
β
βββ locales/ Fluent i18n (en, ru, fr, de)
βββ migrations/ 39 SQLite migrations
βββ Dockerfile Multi-stage build (cargo-chef + s6-overlay runtime)
| Language | Rust 1.93+ Β· async Tokio |
| TUI | ratatui Β· crossterm Β· Catppuccin Mocha |
| Telegram | teloxide Β· local Bot API support |
| Database | SQLite + Postgres (SharedStorage) Β· rusqlite Β· sqlx Β· Redis |
| Media | FFmpeg Β· yt-dlp (nightly + Deno) |
| Web | Axum Β· HMAC-SHA256 Telegram auth |
| Observability | Tracing with per-task op IDs Β· Prometheus metrics Β· health monitor |
| Deploy | Railway Β· Docker Β· s6-overlay |
| i18n | fluent-templates (4 languages) |
| EXTENDING_SOURCES.md | Add custom download backends |
| SUBSCRIPTIONS.md | Subscription tier management |
| PROXY_SYSTEM.md | WARP/Tailscale proxy for YouTube |
| HEALTH_CHECK.md | Health monitoring & avatar status |
| YTDLP.md | yt-dlp setup, updates & troubleshooting |
MIT License Β· Made with Rust Β· Jacke/doradura
Download anything. From anywhere. Beautifully.

