Simple self-hosted video downloader with a web UI. Powered by yt-dlp.
Amia is the online alias of Mizuki Akiyama from Project Sekai's Niigo group. Mizuki is a video editor, and just like how she work with videos, this tool help you download videos from the internet!
- 🎬 Download from 1000+ sites (YouTube, TikTok, Twitter/X, etc.)
- 🌍 Multi-language (English / Spanish)
- 🎵 High-Quality Music Metadata via SomeDL
- 📦 Playlist support (optional, ZIP download)
- 🔒 Private downloads (UUID tokens, no database)
- 🐳 Docker ready
# Clone
git clone https://github.com/Multex/amia.git
cd amia
# Config
cp .env.example .env
# Edit .env to your liking
# Run with Docker
docker compose up -dAccess at http://localhost:3000
git pull
docker compose restartCopy .env.example to .env and adjust:
| Variable | Default | Description |
|---|---|---|
LANGUAGE |
en |
UI language (en or es) |
DOWNLOAD_TTL_MINUTES |
15 |
How long files stay after download |
DOWNLOAD_CLEANUP_INTERVAL_MINUTES |
5 |
How often to clean expired files |
DOWNLOAD_MAX_FILE_SIZE_MB |
500 |
Max file size in MB |
DOWNLOAD_MAX_DOWNLOADS_PER_FILE |
1 |
Downloads before auto-delete (0 = unlimited) |
DOWNLOAD_TEMP_DIR |
temp |
Where to store temporary files |
DOWNLOAD_MAX_PLAYLIST_ITEMS |
5 |
Max videos from a playlist |
DOWNLOAD_RATE_LIMIT_MAX |
5 |
Max downloads per IP in time window |
DOWNLOAD_RATE_LIMIT_WINDOW_MINUTES |
60 |
Rate limit time window in minutes |
DOWNLOAD_MAX_CONCURRENT |
3 |
Max number of concurrent downloads allowed |
See .env.example for detailed comments on each variable.
- Backend: Express + TypeScript (tsx)
- Frontend: Vanilla HTML/CSS/JS
- Downloader: yt-dlp + ffmpeg + somedl
Put behind Nginx, Caddy, or Cloudflare Tunnel:
http://localhost:8085 -> https://your-domain.com
MIT License - See LICENSE file for details.

