A terminal download manager that drives aria2c, yt-dlp and wget for you.
Paste a url, muxget picks the right backend, queues it, and shows live progress. Direct files, torrents and magnets go to aria2c, everything else goes to yt-dlp, and playlists expand into one row per video. Point it at a page instead and it crawls for links, or mirrors the whole site for offline use.
Queues have their own slots, schedules, bandwidth quotas and retry limits, and the whole list, pauses included, comes back where you left it.
Documentation: maniebra.github.io/muxget
- Files, FTP, torrents, magnets, videos, playlists, whole channels, whole sites
- Queues with their own concurrency, so a busy lane never blocks another
- Resumes from the partial file, across restarts, pauses included
- Existing-file picker with resume, overwrite, rename and skip choices
- Time windows, bandwidth quotas, retry counts and periodic re-syncs per queue
- Routing rules by extension, domain, url pattern or size, with captures
- Crawls a page for every file it links to, or mirrors the site offline
- Vim keys, mouse support, six themes, and a built-in manual on
?
aria2c and yt-dlp on your PATH, plus wget for crawling. curl is optional
for showing the remote size of an existing direct HTTP download.
cargo install --path .Prebuilt .deb, .rpm, AppImage, MSI and tarballs are on the
releases page. Full steps are in
the install guide.
muxget # empty, add urls with `a`
muxget https://example.com/linux.iso # start with urls queued
muxget -d ~/Downloads -j 5 <url>... # directory and concurrent slots
muxget --theme nord # theme for this run
muxget --log-level debug # chattier log, still in ~/.config/muxget/muxget.log| flag | means |
|---|---|
-d <dir> |
download directory for this run, otherwise the saved one, otherwise $PWD |
-j <n> |
slots for the default queue this run, 1-16 |
--theme <name> |
theme for this run, or set MUXGET_THEME |
--log <file|off> |
where the log is written, off for nowhere, or set MUXGET_LOG |
--log-level <level> |
debug, info (default), warn, error, or set MUXGET_LOG_LEVEL |
--log-format <template> |
line template, {date} {time} {level} {text}, or set MUXGET_LOG_FORMAT |
--log <file> |
log file for this run, off to disable, or set MUXGET_LOG (default <config>/muxget.log) |
--log-level <level> |
debug, info, warn or error, or set MUXGET_LOG_LEVEL (default info) |
--log-format <template> |
line template, or set MUXGET_LOG_FORMAT. Placeholders: {date} {time} {level} {text} |
<url>... |
queued on startup, routed by the same rules as a |
Nothing on the command line is persisted. -d, -j and --theme override
the saved values for that run only.
Everything the log tab shows is also appended to ~/.config/muxget/muxget.log,
rotated to muxget.log.1 once it passes 1 MB.
Everything the log tab shows is also appended to ~/.config/muxget/muxget.log,
which is rotated to muxget.log.1 once it passes 1 MB.
| key | action |
|---|---|
a |
add a url |
v |
add the urls in the clipboard |
c |
crawl a page for links |
p / x / d |
pause or resume / stop / delete the selection |
Space M A |
select a row / a range / everything on screen |
j k [ ] |
move the cursor, switch queue |
s |
settings |
? |
the built-in manual |
q |
quit |
g and i open two-key menus for queue and item commands. The full list is in
the keyboard reference.
The site is the complete guide, and docs/ is its source.
| page | covers |
|---|---|
| Install | packages, requirements, command line flags |
| Getting started | the screen, moving around, selecting rows |
| Downloading | the add form, playlists, channel sync, clipboard, passwords |
| Queues and schedules | slots, time windows, quotas, retries |
| Crawling | link discovery and offline mirrors |
| Routing rules | queues, folders and backends by rule |
| Settings and themes | backend flags, the log, themes |
| Files on disk | what is saved and what comes back |
| How it works | processes, parsing, the event loop, adding a backend |
| Troubleshooting | when something does not download |
src/
models/ downloads, queues, crawls, backends, option specs, state file
views/ table, sidebars, dialogs, options panel, themes
controllers/ state, event loop, keys, queue, crawl and settings actions
utils/ progress parsing, argument files, credential files
tests/ mirrors src/
cargo test runs the suite. Adding a backend is
four functions.
MIT, see LICENSE.
