Open-source project
amir1376/ab-download-manager avatar
amir1376/ab-download-manager

AB Download Manager: a Kotlin desktop downloader with queues, schedulers and a REST API

A Download Manager that speeds up your downloads

18,113 stars928 forksKotlinApache-2.0

At a glance

What is it?
AB Download Manager is an Apache-2.0 desktop download manager written in Kotlin with Compose Multiplatform, shipped for Windows, Linux, macOS and Android. It installs through winget, Scoop, Homebrew or a shell script, and pairs with Chrome and Firefox extensions.
Who is it for?
Adopt AB Download Manager if you want a desktop download manager with queues, schedulers, a browser extension and a documented REST API, and you are willing to install it from GitHub Releases or a package manager. Do not adopt it if you need a server-side headless downloader, since the README describes a desktop application.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Who AB Download Manager is for, and what it replaces

Browsers handle a single large file badly. They give you one connection, a progress bar that disappears when you close the tab, and no queue when you start five downloads at once. AB Download Manager exists to take that job off the browser's hands. The README describes it as "a desktop app that helps you manage and organize your downloads more efficiently than ever before", and the feature list names the concrete pieces: faster download speed, queues and schedulers, browser extensions, multiple themes, and multiplatform builds for Android, Windows, Linux and Mac.

The target user is someone who downloads large files regularly on a personal machine: ISO images, datasets, video, archives. The queue and scheduler features matter most there, because they let a download start when the machine is idle rather than when you click. It is not aimed at CI pipelines or servers. Nothing in the README describes a headless mode, and the installation section is written entirely around installing an app on a device.

The project is Apache-2.0, so the licence permits commercial use and modification. The README also carries an explicit warning that the software is not on Google Play or other app stores unless listed there, and that any version claiming to be related to the project should be considered a scam. That warning is worth reading before you search for a download link.

How the desktop app, the browser extension and the REST API fit together

The repository is a Gradle multi-module Kotlin project, and the top-level entries show the split: desktop/, android/, shared/, downloader/, integration/, compositeBuilds/ and scripts/. The desktop and Android targets share code through shared/, which is consistent with the Compose Multiplatform topics on the repository (compose, compose-desktop, compose-multiplatform, kotlin-multiplatform). The downloader/ module is where the download engine lives, separate from the UI that drives it.

Browser integration is deliberately kept out of this repository. The README lists a separate repository, ab-download-manager-browser-integration, that "contains the Browser Extension to be installed on your browser". The main app and the extension therefore ship and version independently, and the extension is published on two stores: Firefox Add-ons and the Chrome Web Store, each linked from the README with its own badge.

There is also a REST-API.yml file at the top level of the repository. That means the application exposes an HTTP interface, and the OpenAPI-style description of it is versioned alongside the code. The README does not document the endpoints or the port, so anyone planning to script against it should read REST-API.yml rather than the README. This is the most under-documented part of the project relative to how useful it could be.

Installing AB Download Manager on Linux, Windows and macOS

The README gives four installation paths and calls the Linux shell script the recommended way to install on that platform. It fetches a script from the master branch and pipes it into bash:

bash
bash <(curl -fsSL https://raw.githubusercontent.com/amir1376/ab-download-manager/master/scripts/install.sh)

On Windows there are two package-manager options. The README shows winget first, then Scoop:

bash
winget install amir1376.ABDownloadManager
bash
scoop install extras/abdownloadmanager

For macOS and Linux, Homebrew is supported through the author's tap, installed as a cask:

bash
brew tap amir1376/tap && brew install --cask ab-download-manager

After installation, the first real use is to let the extension hand downloads to the app. Install the browser extension from the Firefox Add-ons or Chrome Web Store listing linked in the README, then start a download in the browser and confirm it is passed to the desktop app rather than handled by the browser. The README does not describe the exact handoff prompt, so expect to confirm the first transfer interactively.

If you prefer not to use a package manager, the README points to GitHub Releases and to the project website. The README also says the wiki page covers alternative installation methods and uninstallation instructions. That is where to look for the uninstall procedure, because the main README does not include one.

Building from source requires a specific JDK, not just any JDK

The README's build section is short but unusually specific. It says to clone the project and then download and extract JBR, the JetBrains Runtime, making it available either by adding it to PATH or by setting JAVA_HOME. In other words, the build is not expected to work with an arbitrary installed JDK; the project targets JetBrains Runtime, which is what Compose Desktop applications commonly use for rendering and for its bundled runtime patches.

That is a real constraint for contributors. If your machine already has a different JDK on PATH, the Gradle build may pick it up and fail in ways that are not obvious. Setting JAVA_HOME explicitly to the extracted JBR directory is the safer route, and the README names both options. The build instructions are also truncated in the README excerpt, so the remaining steps (the Gradle invocation and the output location) are not documented there; check CONTRIBUTING.md and the compositeBuilds/ directory for the rest.

For users rather than contributors this section is irrelevant. The packaged installers and package-manager entries are the intended path, and building from source is only worth it if you want to patch the app or run an unreleased commit.

Where AB Download Manager is the wrong tool

The clearest limitation is the one the README never addresses: there is no described headless or server mode. If you need to fetch files on a remote machine, in a container, or as part of an automated pipeline, this project's documented shape does not fit. The REST-API.yml file suggests the running desktop app can be controlled over HTTP, but that still requires the desktop app to be running, and the README does not document the API at all.

A second gap is platform coverage. The README's feature list claims Android, Windows, Linux and Mac, and the repository contains an android/ module, but the installation section only documents the Linux script, winget and Scoop for Windows, and Homebrew for macOS and Linux. The Android build is not covered by any installation instruction in the README. If Android is your reason for choosing this project, the README does not tell you how to get it.

Third, the README does not document rollback or downgrade. There is no section on reverting to a previous release, and no statement about whether the app migrates its configuration between versions. The wiki is named as the place for uninstallation details, but the README itself is silent on both. Anyone deploying this on a managed machine should treat that as an open question rather than assume a clean uninstall.

How it compares with JDownloader and with command-line downloaders

JDownloader is the obvious comparison, and it is the one people search for. The two take different architectural bets. JDownloader is a Java application with a long history and a plugin ecosystem aimed at link-hosting sites, with a heavy emphasis on parsing pages and captchas. AB Download Manager, judging by the README, is narrower: it is a general-purpose download manager with queues, schedulers and a browser extension, and its code is Kotlin with a Compose Multiplatform UI. The README does not claim link-hosting plugin support, so if your workflow depends on that, the feature sets are not equivalent.

Against command-line tools like curl or wget, the difference is not speed but state. Those tools download one thing and exit; they have no persistent queue, no scheduler and no resume UI. AB Download Manager's value is in keeping that state across sessions and across the browser boundary, which is exactly what a terminal tool does not try to do.

The honest summary is that the choice between AB Download Manager and JDownloader is mostly about which ecosystem you already depend on. If you want a modern Compose UI, a documented REST API file in the repository and a small feature surface, this project is the more legible codebase. If you need mature host-specific plugins, it is not a drop-in replacement.

Maintenance, licence and upgrade cost

The repository is not archived, and the last push was on 2026-09-08. Releases v1.10.4 and v1.10.3 both landed on 2026-09-08, and v1.10.2 on 2026-08-22, so the release cadence in the weeks before that date was tight. That is the observable signal; the README makes no statement about long-term support or release policy.

The licence is Apache-2.0. That permits use, modification and redistribution, including in commercial settings, provided the licence terms are met. It does not grant trademark rights, and the README's warning about fake builds is a practical reminder that the project name is being used by others. Nothing here is legal advice; if you redistribute a modified build, read the LICENSE file at the repository root.

Upgrade cost is low for normal users: winget, Scoop and Homebrew all handle updates through their own commands, and the README's recommended Linux path is a script that can be re-run. The cost that is not documented is configuration migration. The README says nothing about whether settings survive a version jump, so a cautious approach is to note your queue and scheduler settings before a major upgrade. The CHANGELOG.md at the repository root is the place to check what changed.

Editorial conclusion

Adopt AB Download Manager if you want a desktop download manager with queues, schedulers, a browser extension and a documented REST API, and you are willing to install it from GitHub Releases or a package manager. Do not adopt it if you need a server-side headless downloader, since the README describes a desktop application. Before rolling it out, check the release assets for your architecture, confirm the extension is installed from the Firefox Add-ons or Chrome Web Store listing, and read the wiki page for uninstallation steps, because the README does not document rollback.

Frequently asked questions

Is AB Download Manager safe?

The project is Apache-2.0 and its source is public on GitHub, so the code can be inspected. The README warns that the software is not on Google Play or other app stores unless listed there, and that any version claiming to be related to the project should be considered a scam. Install only from the links the README gives: the project website, GitHub Releases, winget, Scoop, Homebrew or the Linux install script.

How do I install AB Download Manager on Linux?

The README calls the shell script the recommended way to install on Linux: bash <(curl -fsSL https://raw.githubusercontent.com/amir1376/ab-download-manager/master/scripts/install.sh). Homebrew is also supported through the author's tap with brew tap amir1376/tap && brew install --cask ab-download-manager. The wiki page is named for alternative installation methods.

How do I use the AB Download Manager browser extension?

Install the extension from the Firefox Add-ons or Chrome Web Store listing linked in the README, then start a download in the browser and confirm it is handed to the desktop app. The extension lives in a separate repository, ab-download-manager-browser-integration, so it versions independently of the app. The README does not describe the exact handoff prompt.

How do I delete AB Download Manager?

The README does not include uninstallation instructions in the main text; it points to the wiki page for uninstallation details and alternative installation methods. If you installed through winget, Scoop or Homebrew, the matching package manager's uninstall command is the natural first step. The README does not document rollback or downgrade behaviour.

Is AB Download Manager better than JDownloader?

They make different bets. JDownloader is a Java application with a long-standing plugin ecosystem aimed at link-hosting sites. AB Download Manager is Kotlin with a Compose Multiplatform UI, and its README lists queues, schedulers, browser extensions and themes rather than host-specific plugins. If your workflow depends on link-hosting plugins, the feature sets are not equivalent.

How can I download AB Download Manager for my PC?

The README points to GitHub Releases and the project website for downloads. On Windows it documents winget install amir1376.ABDownloadManager and scoop install extras/abdownloadmanager. It also warns that versions outside the listed sources should be considered a scam.

Official sources

  1. amir1376/ab-download-manager on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/amir1376-ab-download-manager.svg)](https://hysenlabs.com/projects/amir1376-ab-download-manager)