Open-source project
ilikenwf/apt-fast avatar
ilikenwf/apt-fast

apt-fast: a shell wrapper that made apt downloads feel fast, and then waited

apt-fast: A shellscript wrapper for apt that speeds up downloading of packages.

2,156 stars198 forksShellGPL-3.0

At a glance

What is it?
A GPL shell script that puts aria2 in front of apt-get, with a configuration file for mirrors and connection counts, and a repository whose last push was in April 2026.
Who is it for?
apt-fast is a small idea that was genuinely useful once: apt downloads packages one at a time from one mirror, and routing those same packages through aria2 with segmented, parallel connections can cut a slow mirror down to nothing. What you find here today is a well documented shell script with excellent configuration coverage and a repository whose last push was 2026-04-02.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Activity is slowing. The repository last received commits 6 months ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

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

Editorial analysis

What the script actually does

The description is minimal and accurate: a shell script wrapper for apt that speeds up downloading of packages. The README expands it, calling it a wrapper for apt-get and aptitude that improves download times by downloading packages in parallel, with multiple connections per package.

The mechanism is not clever, which is why it works. apt resolves and downloads one package at a time from a single mirror. apt-fast instead has apt do the resolution and the dependency work, intercepts the download step, and hands the package URLs to aria2, which can open several connections per file and several files at once. Once the archives are on disk, apt installs from the cache as it normally would, so the parts of apt that people trust are untouched.

That division is the reason this approach aged more gracefully than most. It does not reimplement apt, patch apt, or replace the package database. It sits in front of one specific step and steps aside.

The repository is small in the way a script should be: an `apt-fast` script, an `apt-fast.conf` configuration file, a `Makefile`, a `quick-install.sh`, directories for `completions/`, `man/` and a `LICENSE`. There is no compiled code and no runtime beyond bash, aria2 and apt itself.

Three ways to install, and the one that will bite you

The documented primary route is the Ubuntu PPA.

sh
sudo add-apt-repository ppa:apt-fast/stable
sudo apt-get update
sudo apt-get -y install apt-fast

The PPA is described as offering a graphical configuration file setup and automatic updates. There is also a quick install that avoids any package manager at all.

bash
/bin/bash -c "$(curl -sL https://git.io/vokNn)"

And there is a manual path, which requires aria2 to be present first.

sh
cp apt-fast /usr/local/sbin/
chmod +x /usr/local/sbin/apt-fast
cp apt-fast.conf /etc

The manual route is the most informative about how the tool is laid out. The script goes into `/usr/local/sbin`, the configuration goes to `/etc`, and the completions and man pages go into their standard locations. The `Makefile` automates exactly this and adds the aria2 install as its first step, along with the zsh and bash completion copies and both man pages, `apt-fast.8` and `apt-fast.conf.5`, gzipped with maximum compression.

The README also documents non-interactive installation for image builders, using `DEBIAN_FRONTEND=noninteractive apt-get install -y apt-fast`, followed by debconf selections to set configuration values at install time.

The warning that matters most is short and specific: when using Linux Mint, do not set the package manager to `apt`, because the distribution provides its own shell script of that name with different functionality that apt-fast does not support. Mint users can still use `apt-get` or `aptitude`. This is the kind of incompatibility a README usually omits, and it is worth the forty words it costs.

Configuration is the real product

Configuration lives in `/etc/apt-fast.conf`, and the documentation for it is longer than the documentation for the script itself. That is the right ratio for a tool whose behaviour is mostly knobs.

The first key chooses the underlying package manager.

sh
_APTMGR=apt-get

Supported values are `apt-get`, `aptitude` and `apt`, with the Mint caveat above attached to the last one.

The second decides whether the tool interrupts you. Setting `DOWNLOADBEFORE` to any value suppresses the confirmation dialog and downloads directly; leaving it empty means apt-fast asks first. The README notes that this does not affect the package manager's own confirmation, so the two prompts are separate.

The mirrors list is where most of the speed comes from, and the file takes a whitespace and comma-separated array.

sh
MIRRORS=( 'http://deb.debian.org/debian','http://ftp.debian.org/debian, http://ftp2.de.debian.org/debian, http://ftp.de.debian.org/debian, ftp://ftp.uni-kl.de/debian' )

The README links to the official Debian and Ubuntu mirror lists and tells you to pick mirrors near your location. It also attaches an easy to miss note: to use any mirror you already have in `sources.list` or `sources.list.d`, you must add it to the apt-fast mirror list as well. Mirror definitions are not inherited, which will surprise you once.

The rest of the table of contents shows the same attention to detail, with separate entries for maximum connections, maximum connections per server, maximum connections per file, file split size, the piece selection algorithm, the download manager log file, the download manager command and its proxy setting, the download folder, the apt archives cache, verbose output and colors. A piece selection algorithm setting is worth pausing on, since aria2 can split a file in different ways and choosing between minimum or maximum piece selection changes behaviour on slow links.

The PPA instructions contain a version warning

For distributions without apt-fast in their own repositories, such as Debian and Kali Linux, the README explains how to add the PPA by hand by creating a sources file at `/etc/apt/sources.list.d/apt-fast.sources`.

The file uses the deb822 format, and the interesting part is what follows it. The README notes that the PPA version might need to be updated with the current Ubuntu LTS codename to stay current, and points at the Ubuntu release list for possible values.

That note is doing quiet work, because the example source file itself names the focal suite, and the note refers to jammy. Both strings are in the same document. On a current Ubuntu LTS you would be expected to substitute the right codename yourself, which is a manual step that the quick install path hides and the PPA path handles automatically.

The key setup is also documented properly rather than glossed over, with the keyring directory created, the signing key fetched from a keyserver and dearmored into `/etc/apt/keyrings/apt-fast.gpg`, and the sources file pointing at it through `Signed-By`. That is the correct deb822 pattern, and following it exactly will not produce the experimental warning apt produces when a key is trusted globally instead of per repository.

Getting the key is a single pipeline, run as root, using a keyserver lookup with the maintainer key identifier in the search parameter.

There is also a quick install script, `quick-install.sh`, for people who want none of this. For a machine you will maintain, the manual or PPA route is the better one.

Shell completions and man pages are shipped properly

The completions are the quiet sign of a project that has been around. The README documents Bash, Zsh and Fish separately, each with the destination path and a `chown root:root` afterwards.

The design decision worth noting is that the completions delegate to apt-get rather than reimplementing the option surface. For Bash that means installing `bash-completion` first, since apt-fast's completion file relies on apt-get's existing completion being present. For Zsh and Fish, the README notes the required completions ship by default in their `*-common` packages.

The Bash setup is the one people usually skip.

sh
apt-get install bash-completion
cp completions/bash/apt-fast /etc/bash_completion.d/
chown root:root /etc/bash_completion.d/apt-fast
. /etc/bash_completion

The Zsh route installs into `/usr/share/zsh/functions/Completion/Debian/` and sources the file directly, and the Fish route installs into `/etc/fish/conf.d/completions/`. All three are also handled by the `Makefile`, which creates the directories with `mkdir -p` before copying.

Man pages get the same treatment, with both the command page and the configuration page copied into `/usr/local/share/man/man8/` and `/usr/local/share/man/man5/` and gzipped. Having a configuration man page at all is unusual for a shell script and tells you how seriously the maintainer took the settings.

Version numbers disagree, and the last push is in April 2026

Two details in the repository deserve to be reported rather than smoothed over.

The first is the version string, which is inconsistent. The licence header comment at the top of the script says apt-fast v1.11, while the README's own section heading says apt-fast 1.9. Neither is authoritative in a way a reader can resolve, so if you need a version for a bug report, cite the commit rather than a number.

The second is activity. The last push to the default branch was on 2026-04-02, which is over six months ago as of this writing. The repository is not archived, and it has around 2100 stars, just under 200 forks and 23 open issues. Nothing here suggests abandonment in the sense of a broken repository, but the honest description is that changes have not landed in some months, and apt itself has moved on: newer apt versions ship with pipelining, and the `Makefile` still passes `--force-yes`, a flag that modern apt has deprecated. Treat the tool as stable and unchanging rather than as something that will adapt to your distribution.

The provenance is also worth naming. The script's header credits Matt Parnell for the original work between 2008 and 2012, with improvements, maintenance and revisions attributed to Dominique Lasserre in 2012 and again across 2017 to 2019. The licence is GPL-3.0, which is the right choice for a script that lives in `/usr/local/sbin` on other people's machines.

There are no published releases at all in the repository, so version tracking is entirely commit based.

Editorial conclusion

apt-fast is a small idea that was genuinely useful once: apt downloads packages one at a time from one mirror, and routing those same packages through aria2 with segmented, parallel connections can cut a slow mirror down to nothing. What you find here today is a well documented shell script with excellent configuration coverage and a repository whose last push was 2026-04-02. Read that date as the deciding fact. Install it on a workstation if you like the idea and you have bandwidth to spare; do not build a new deployment around it without checking how your distribution's apt behaves. Two warnings in the README deserve attention first, the Linux Mint incompatibility with `apt` as the package manager, and the PPA source file that still names the focal suite.

Frequently asked questions

What does apt-fast actually change about apt?

It leaves apt's resolution, dependency handling and installation alone and replaces only the download step. Package URLs are handed to aria2, which can open multiple connections per file and download several packages in parallel, after which apt installs from its normal archive cache. There is no compiled code; the repository holds a shell script, a config file, a Makefile, completions and man pages.

How do I install apt-fast?

The documented primary route is the Ubuntu PPA: `sudo add-apt-repository ppa:apt-fast/stable`, then `sudo apt-get update` and `sudo apt-get -y install apt-fast`. A quick install pipes a curl command into bash. For a manual install, install aria2, copy the `apt-fast` script to `/usr/local/sbin/`, make it executable and copy `apt-fast.conf` to `/etc`. The Makefile automates the manual route.

Can I use apt-fast on Linux Mint?

Yes, but not with `apt` as the package manager. The README warns that Linux Mint ships its own shell script named apt with different functionality that apt-fast does not support, so Mint users should leave the `_APTMGR` setting as `apt-get` or switch to `aptitude`. That is the only incompatibility called out in the documentation.

Where is the apt-fast configuration file and what is in it?

It lives at `/etc/apt-fast.conf` and has its own man page, `apt-fast.conf.5`. The settings cover the package manager via `_APTMGR`, the confirmation dialog via `DOWNLOADBEFORE`, a `MIRRORS` list of parallel mirrors, maximum connections overall and per server and per file, the file split size, the piece selection algorithm, the download folder, the apt archives cache, verbose output and colors. Mirrors are not inherited from sources.list, so any mirror you want must be listed again here.

Is apt-fast still being worked on?

The repository is not archived, but the last push was 2026-04-02, so changes have not landed in some months. The README is detailed and consistent about configuration, and the GPL-3.0 script still installs and runs, but the Makefile uses `--force-yes`, a flag newer apt versions have deprecated. Plan around the tool being stable rather than adapting to your distribution. There are no published releases, so cite a commit when reporting a problem.

Which package managers can apt-fast wrap?

Three: `apt-get`, `aptitude` and `apt`, chosen with the `_APTMGR` setting. The `apt` value carries the Mint caveat described in the README. The `DOWNLOADBEFORE` setting is independent of this one: setting it suppresses apt-fast's own confirmation dialog but not the package manager's.

Official sources

  1. ilikenwf/apt-fast on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
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/ilikenwf-apt-fast.svg)](https://hysenlabs.com/projects/ilikenwf-apt-fast)

Was this useful?