FluxDown
FluxDown’s MCP server lets AI agents manage downloads through JSON-RPC tools.
Create download tasks for HTTP/HTTPS, FTP, magnet links, and BitTorrent with optional cookies, queue, save directory, checksum, filename, proxy, referrer, segment count, and User-Agent.
List download tasks and filter by status; get detailed task information by ID.
Pause or resume individual tasks, or pause/resume all active or paused tasks.
Remove tasks, optionally deleting downloaded files.
List named queues and their configuration.
Allows adding, monitoring, and managing BitTorrent and magnet link downloads via the MCP server.
FluxDown
Downloads, Supercharged.
A blazing fast, multi-protocol download manager — the free & open-source IDM alternative.
Website · Download · Changelog · FAQ · Feedback
Highlights
Dynamic download acceleration — Rust + Tokio engine with adaptive segmentation and slow-segment rescue
Multi-protocol — HTTP/HTTPS, FTP, BitTorrent, eD2K, HLS & DASH streaming
One engine, multiple clients — native GPUI desktop, Kotlin Android and SwiftUI iOS apps, React Web UI and CLI
Browser integration — Chrome / Edge / Firefox extension with a 3-layer interception engine, plus a userscript
AI-agent ready — built-in MCP (Model Context Protocol) server: let Claude, Cursor & other AI clients manage your downloads
Automation & remote management — RSS subscriptions, scheduled queues, webhooks, plugins and optional FluxCloud device collaboration
Local-first — free and open source, no ads, no account required for local downloads; resumable state stored locally by default
Related MCP server: unfetch
Features
Feature | Description |
Rust-Powered Engine | Shared Rust + Tokio engine, independent of UI and FFI, used by desktop, mobile, server and standalone CLI hosts |
Smart Segmentation | Segments split dynamically at runtime; idle workers take over slow segments |
Multi-Protocol | Dedicated engines for HTTP/HTTPS, FTP, BitTorrent (DHT/UPnP/magnet), eD2K (server + Kad DHT source finding, MD4 verification), HLS (AES-decrypt) and DASH |
Queues & Speed Control | Named queues, scheduling and token-bucket global rate limiting |
Persistence & Resume | SQLite with WAL by default; server deployments can use PostgreSQL; recover downloads from persisted state |
Browser Integration | Download interception, streaming media sniffing, Alt+Click bypass, right-click send and connection diagnostics |
Desktop & Web UI | GPUI desktop and React Web management, light/dark themes, custom themes, task details and segment visualization; desktop tray keeps the service available after the UI closes |
RSS & Automation | Feed filters, unattended downloads, JavaScript plugins, managed FFmpeg/yt-dlp components and task-event webhooks |
Remote Devices | Optional FluxCloud account, settings sync and remote task management, plus LAN device pairing and direct connections |
APIs & CLI | REST/OpenAPI, aria2-compatible JSON-RPC, MCP with 12 tools, and a CLI for scripts or standalone downloads |
Privacy: local downloads do not require a FluxCloud account. Cloud features are optional. Anonymous installation and daily-active statistics are controlled by analytics_enabled and can be disabled; they do not collect download/task information. This is not a zero-telemetry application.
FluxDown vs. IDM
FluxDown | IDM | |
Price | Free & open source | $24.95 + renewals |
Open source | Yes (AGPL-3.0) | No |
Platforms | Windows / macOS / Linux / NAS / Android | Windows only |
BitTorrent & magnet | Yes | No |
eD2K / eMule links | Yes | No |
HLS / DASH streaming | Yes | Partial |
Dynamic segmentation | Yes | Yes |
Browser extension | Chrome / Edge / Firefox | Yes |
Ads | None | — |
Installation
Grab the latest build from GitHub Releases or fluxdown.com:
Platform | Packages |
Windows (x64 / ARM64) |
|
macOS (Intel / Apple Silicon) |
|
Linux (x64) |
|
Android (arm64-v8a / armeabi-v7a / x86_64) | per-ABI |
NAS / Server (headless, x64 / ARM64) | Docker · Synology DSM 6/7 |
Browser Extension
Install the extension so FluxDown takes over browser downloads automatically:
The extension connects to the desktop agent through Native Messaging. A Tampermonkey userscript is also available.
NAS / Server
The current headless service is fluxdown-agent --server + fluxdownd, with an embedded Web UI. The Docker image retains the name ghcr.io/zerx-lab/fluxdown-server.
From a checkout, use the supplied Compose configuration:
docker compose -f docker/docker-compose.yml up -dOpen http://<server>:17800/ and set an access key in the first-run wizard. The key must contain 8–128 visible ASCII characters, including both a letter and a digit. Set it up on a trusted network before exposing the service; use an HTTPS reverse proxy for remote access.
Server mode listens on
[::]:17800(IPv4 + IPv6, falling back to0.0.0.0without IPv6) by default; override it withFLUXDOWN_BIND.For unattended setup, supply
FLUXDOWN_TOKENthrough your deployment environment or secret manager, not a committed file. It initializes the key only if one has not already been set.Persist
/datafor the database, logs and access key, and/root/Downloadsfor downloads. The supplied Compose file uses a named data volume anddocker/downloads/on the host.Prefer SSD/cache storage for
/dataif download disks need to sleep.Native deployments must keep
fluxdown-agentandfluxdowndin the same directory.
CLI & HTTP APIs
The fluxdown CLI connects to the running desktop or server HTTP API by default. On desktop, enable the management API in Settings → API Service first. Supply the access key via FLUXDOWN_TOKEN; use FLUXDOWN_URL or --url to select a remote server.
fluxdown ping
fluxdown add "https://example.com/file.zip"
fluxdown --json list
# Standalone mode: embed the engine instead of connecting to a service
fluxdown add --local "https://example.com/file.zip"Standalone mode cannot share a data directory with a running engine: stop the service using that directory first.
Interface | Endpoint | Purpose |
REST management API |
| Tasks, queues, RSS and other management operations |
OpenAPI |
| Machine-readable API schema |
aria2-compatible JSON-RPC |
| Integration with aria2-compatible clients |
MCP |
| AI-agent tools |
Official UI protocol |
| GPUI/Web gateway; distinct from the aria2 API |
Desktop defaults to 127.0.0.1:17800, with management API and MCP disabled until enabled. Server mode enables both by default and requires an access key. See the OpenAPI specification for the REST contract.
MCP Server (Model Context Protocol)
FluxDown ships a built-in MCP server so AI agents (Claude Desktop, Cursor, Cline, …) can manage downloads via the Model Context Protocol. It implements a stateless Streamable HTTP subset (JSON-RPC 2.0 over POST /mcp) on the same API port — no separate MCP process needed.
Endpoint:
http://127.0.0.1:17800/mcpfor the default desktop configuration; use your server address for headless deploymentsAuth: Bearer token (
Authorization: Bearer <token>orX-FluxDown-Token), shared with the management APIEnable: Settings → API Service → toggle MCP endpoint (a token is generated automatically); the headless server enables it by default
Tools (12)
Tool | Description |
| Create a download task (HTTP/HTTPS, FTP, magnet, BitTorrent) |
| List tasks with progress/speed/status, optional status filter |
| Get a single task by ID |
| Pause / resume one task |
| Pause / resume all tasks |
| Remove a task, optionally deleting downloaded files |
| List named queues and their configuration |
| List RSS subscriptions with their configuration and runtime state |
| Subscribe to an RSS feed and start polling it on a schedule |
| Delete an RSS subscription and the items it collected |
Client configuration
{
"mcpServers": {
"fluxdown": {
"url": "http://127.0.0.1:17800/mcp",
"headers": { "Authorization": "Bearer <your-token>" }
}
}
}The MCP layer is implemented in native/api/src/mcp.rs on top of the same ApiHost trait that powers the REST management API and aria2-compatible JSON-RPC.
Architecture
One Rust download engine, multiple hosts and clients. Desktop uses fluxdown-desktop → fluxdown-agent → fluxdownd; headless deployments reuse the agent and daemon with a React Web UI. Native Android and iOS clients connect through UniFFI (native/mobile), using an embedded agent and daemon for local downloads or /rpc for remote hosts.
flowchart TD
UI["GPUI desktop"] -->|"WebSocket /rpc"| AGENT["fluxdown-agent — UI gateway and desktop shell"]
WEB["React Web UI"] -->|"WebSocket /rpc"| AGENT
EXT["Browser Extension (WXT)"] -->|Native Messaging| NMH["fluxdown_nmh"]
NMH --> AGENT
CLI["fluxdown CLI"] -->|"HTTP API"| AGENT
AGENT -->|"Authenticated JSON-RPC"| DAEMON["fluxdownd — download core"]
DAEMON --> ENGINE["fluxdown_engine"]
MOBILE["Native Android / iOS"] -->|"UniFFI"| CORE["fluxdown_mobile"]
CORE -->|"embedded or remote"| AGENT
LOCAL["fluxdown add --local"] --> ENGINE
ENGINE --> PROTOCOLS["HTTP/HTTPS, FTP, BitTorrent, eD2K, HLS, DASH"]
ENGINE --> DB[("SQLite / PostgreSQL")]Daemon owns downloads: engine, download database, queues, RSS, plugins and webhooks.
Agent owns integration: UI gateway, FluxCloud account/sync, device collaboration, browser capture and desktop tray/lifecycle.
Shared contracts:
native/protocoldefines transport-independent DTOs, methods and events;native/apiexposes REST, aria2 and MCP throughApiHost, without depending on the engine.Engine independence:
EventSinkandHostSelectionconnect the engine to hosts. Only one engine may write to a data directory at a time; the diagram shows alternative hosts, not concurrent writers.
Layer | Tech | Path |
Desktop UI | Rust + GPUI; app composition and capability crates | |
Agent / daemon | UI gateway and headless host / download core | |
Shared protocol / HTTP API | JSON-RPC DTOs / REST, aria2, MCP adapters | |
Download engine | Rust + Tokio, no UI or FFI dependencies | |
Mobile UI / bridge | Kotlin + Jetpack Compose / SwiftUI + UniFFI | |
Web management UI | React + TypeScript + Vite | |
CLI | HTTP client or embedded engine | |
Browser integration | WXT + TypeScript, Native Messaging, userscript | |
Website | Astro + React |
Building from Source
Start with the Rust toolchain and your platform's native build tools (MSVC on Windows, Xcode command-line tools on macOS). Linux desktop builds also need graphics, audio and tray development libraries; the maintained Ubuntu package list is in CI. Bun is needed for the Web UI. Android uses Android Studio's JBR, Android SDK/NDK and cargo-ndk; iOS uses Xcode.
# Clone the development branch (main = active development, stable = stable releases)
git clone -b main https://github.com/zerx-lab/FluxDown.git
cd FluxDownDesktop (GPUI)
# Build desktop UI, agent, daemon and browser relay, then launch
cargo desktop-dev
# Build only (also stages a signed development .app on macOS)
cargo desktop-dev --build-onlyThe launcher reuses an existing desktop/service instance rather than forcibly restarting it. Quit the UI and stop its services before testing changes to running code.
Headless server & Web UI
# Build the Web UI BEFORE building the agent
cd web
bun install --frozen-lockfile
bun run build
cd ..
cargo build -p fluxdown_daemon
cargo run -p fluxdown_agent --features web-ui -- --serverThe web-ui feature embeds web/dist into the agent binary at compile time. After changing the frontend, rebuild the Web UI and then the agent. FLUXDOWN_WEBROOT optionally serves a directory from disk instead.
For frontend development, run cd web && bun run dev in a second terminal while the server is running: Vite listens on port 5173 and proxies backend requests to port 17800.
CLI
cargo build -p fluxdown_cli
cargo run -p fluxdown_cli -- pingNative mobile
Android lives in mobile/Android; iOS lives in mobile/FluxDown. Both use the shared Rust core in native/mobile and shared translations in assets/i18n.
# Android: use Android Studio's JBR as JAVA_HOME
(cd mobile/Android && ./gradlew :core:testDebugUnitTest :bridge:testDebugUnitTest :app:assembleDebug)
# iOS: from repository root
mobile/FluxDown/scripts/build-core.sh
(cd mobile/FluxDown && xcodebuild build -project FluxDown.xcodeproj -scheme FluxDown -destination 'generic/platform=iOS Simulator')Official Android releases use the native project's ANDROID_NATIVE_* signing credentials. They cannot be installed over the old Flutter APK; back up needed data before uninstalling the old app. The retired Flutter SDK, Rinf and hub are no longer build prerequisites. Shared assets, legacy desktop data/theme upgrade compatibility and the website's legacy theme editor remain supported.
cargo test -p fluxdown_engine # Engine tests
cargo test -p fluxdown_api # HTTP / aria2 / MCP contracts
cargo test -p fluxdown_agent # Gateway / server
cargo test -p fluxdown_cli # CLI
cd web && bun test && cd .. # Web UI
cargo test -p fluxdown_mobile # Shared native mobile coreContributing & Community
Bug reports / feature requests — GitHub Issues or the website feedback page
QQ Group — 832143651
Pull requests are welcome! Branch off main and target main — it is the development branch, while stable only tracks stable releases (maintainers advance it from main). Before submitting, please make sure:
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warningsSee CONTRIBUTING.md for the full workflow.
License
Distributed under the GNU Affero General Public License v3.0.
If FluxDown saves you time, consider giving it a Star — it helps more people discover the project.
Made by zerx-lab
Available Tools
9 toolsdownload_addB
新建一个下载任务。支持 HTTP/HTTPS/FTP/磁力链接/BitTorrent。返回新任务 ID。
Inputs: url (required), cookies, queueId, saveDir, +6 more.
download_getB
按任务 ID 查询单个任务的详细信息。
Inputs: taskId (required).
download_listA
列出下载任务,可按状态过滤。返回任务数组(含进度、速度、状态等)。
Inputs: status.
download_pauseC
暂停指定任务。
Inputs: taskId (required).
download_pause_allA
暂停全部活跃任务(pending / downloading / preparing)。
Inputs: no named parameters.
download_removeA
删除指定任务,可选同时删除已下载的磁盘文件。
Inputs: taskId (required), deleteFiles.
download_resumeC
恢复指定的已暂停任务。
Inputs: taskId (required).
download_resume_allA
恢复全部已暂停任务。
Inputs: no named parameters.
queue_listA
列出全部命名队列及其配置(并发数、限速、默认目录等)。
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
每个工具都有明确的用途,添加、获取、列表、暂停、恢复、删除和队列管理之间没有功能重叠,区分清晰。
大部分工具采用'download_'前缀+动词的命名模式,如download_add、download_list,但queue_list没有遵循此模式,存在轻微不一致。
9个工具覆盖了下载管理的基本操作,数量适中,既不过多也不过少,适合该服务器的用途。
提供了下载任务的完整CRUD操作及批量控制,但缺少对单个任务的高级设置(如限速、优先级调整),略有不足。
Maintenance
Related MCP Connectors
QuLab MCP remote server (Streamable HTTP) for computational science and lab tools.
MCP server for the FFmpeg Micro video transcoding API — create, monitor, download transcodes.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Official MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables parsing, downloading, and converting HLS (m3u8) streaming media through FFmpeg integration. Provides a desktop application with MCP server capabilities for handling streaming playlists, extracting segments, and managing video downloads.1-
- AlicenseNot gradedqualityBmaintenanceA download manager for humans and AI with a native MCP server: add_task, list_tasks, wait_for_task with progress notifications from any MCP host. Multi-threaded multi-mirror HTTP, BT/magnet, 1000+ video sites (yt-dlp), RSS, token-secured remote Web UI. ~8MB, open source.11,976,094 npm1MIT
- AlicenseAqualityDmaintenanceMCP server to drive a local JDownloader 2 instance through its entire download lifecycle, including adding links/containers, linkgrabber management, queue control, priority, force-start, progress tracking, and cleanup.175MIT
- FlicenseNot gradedqualityDmaintenanceA self-hosted MCP gateway that aggregates all your MCP servers behind a single Streamable HTTP endpoint, with automatic registry discovery (19,000+ servers), on-demand Docker provisioning, multi-device support via SSH, OAuth2 PKCE authentication, and a workflow engine for saving and replaying multi-step tool sequences.1-