Purpose
FluxDown is a multi-protocol download manager positioned as a free, open-source IDM alternative, used to centrally manage various download tasks on desktop, mobile, or server.
Main Capabilities
- Dynamic download acceleration: Rust + Tokio engine, supporting adaptive segmentation and slow-segment remediation.
- Multi-protocol support: HTTP/HTTPS, FTP, BitTorrent, eD2K, HLS, and DASH streaming.
- Multi-client: Native GPUI desktop, Kotlin Android, SwiftUI iOS app, React Web UI, and CLI.
- Browser integration: Chrome / Edge / Firefox extensions, with a three-layer interception engine, plus user scripts.
- For AI agents: Built-in MCP (Model Context Protocol) server, allowing AI clients such as Claude and Cursor to manage downloads.
- Automation and 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 is stored locally by default.
Usage
Browser extension: After installing the extension, FluxDown can automatically take over browser downloads via Native Messaging; a Tampermonkey user script is also provided.
Server deployment: The headless service consists of fluxdown-agent --server plus fluxdownd , with a built-in Web UI. The Docker image retains the name ghcr.io/zerx-lab/fluxdown-server. After starting with the provided Compose configuration, visit http://<server>:17800/, and set the access key in the first-run wizard (must be 8–128 visible ASCII characters and contain both letters and numbers). Server mode listens by default on 0.0.0.0:17800, which can be overridden with FLUXDOWN_BIND . Persist /data(database, logs, and access key) and /root/Downloads(downloaded content). Native deployment requires placing fluxdown-agent and fluxdownd in the same directory.
CLI and HTTP API: Thefluxdown CLI connects by default to the HTTP API of a running desktop client or server. On desktop, the management API must first be enabled in "Settings → API Service"; provide the access key via FLUXDOWN_TOKEN , and select a remote server using FLUXDOWN_URL or --url . The desktop default address is 127.0.0.1:17800.
MCP server: Implements a stateless Streamable HTTP subset on the same API port (JSON-RPC 2.0, POST /mcp). The default desktop configuration endpoint is http://127.0.0.1:17800/mcp. Authentication uses a Bearer token (Authorization: Bearer <token> or X-FluxDown-Token), shared with the management API. On desktop, the MCP endpoint can be enabled in "Settings → API Service"; headless servers enable it by default.
Building from source: Requires the Rust toolchain and platform-native build tools (MSVC on Windows, Xcode Command Line Tools on macOS); Linux desktop builds also require graphics-, audio-, and tray-related development libraries; the Web UI requires Bun. Android uses Android Studio's JBR, Android SDK/NDK, and cargo-ndk; iOS uses Xcode.
Architecture Highlights
- The Daemon handles the download itself: engine, download database, queue, RSS, plugins, and Webhooks.
- The Agent handles integration: UI gateway, FluxCloud account/sync, device collaboration, browser capture, and desktop tray/lifecycle.
- Shared contracts:
native/protocoldefines transport-agnostic DTOs, methods, and events;native/apiexposes REST, aria2, and MCP through ApiHost. - Engine independence: EventSink and HostSelection connect the engine and the host. The same data directory can only be written by one engine at a time.
- Desktop paths:
fluxdown-desktop → fluxdown-agent → fluxdownd; headless deployment reuses the agent and daemon, paired with a React Web UI. Native Android and iOS clients connect via UniFFI (native/mobile).
Use Cases
Users who need unified management of multi-protocol download tasks across desktop, mobile, and server; users who want downloads automatically taken over via browser extension; users who want AI clients to manage download workflows via MCP; users who need RSS subscriptions, scheduled queues, or Webhook-automated downloads.
Limitations and Notes
- Local downloads do not require a FluxCloud account; cloud features are optional. Anonymous installation and daily active usage statistics are controlled by
analytics_enabledand can be disabled, and no download/task information is collected; however, the official documentation explicitly states that this is not a zero-telemetry application. - Standalone mode cannot share the same data directory with a running engine; you must first stop the service using that directory.
- The server side should complete initial key setup within a trusted network before being exposed externally; remote access should use an HTTPS reverse proxy; for unattended deployment, provide
FLUXDOWN_TOKENvia the deployment environment or a secret manager, and do not write it into committed files. - If the download disk needs to sleep, it is recommended to place
/dataon SSD/cache storage. - The old native/server crate is frozen and is no longer the deployment entry point.
- The official Android version uses the signing credentials of the native project
ANDROID_NATIVE_*and cannot overwrite-install an old Flutter APK; back up data before uninstalling the old app. - The project is distributed under the GNU Affero General Public License v3.0.
Other
- Official website and downloads:
https://fluxdown.zerx.dev - Source repository:
https://github.com/zerx-lab/FluxDown - Feedback channels: GitHub Issues or the official website feedback page; QQ group 832143651.
- For the contribution process, see CONTRIBUTING.md in the repository.