Same files.
More disk.
a0 compresses the stuff you haven't opened in a week and unpacks it the second you do. Nothing moves, nothing gets renamed, no new folder to remember. Your files just take less space.
curl -fsSL https://a0.0a0.dev/install.sh | sh
Linux on x86_64 or 64-bit ARM. Arch, Debian, Ubuntu, Mint, Fedora, openSUSE, Alpine. Installs nothing else and compresses nothing until you tell it which folders.
One laptop, two days in
A 1 TB laptop with a 710 GB home folder: games, an Unreal project, Java builds, old backups. Everything except keys and container images. 130 GB of it turned out to be duplicate data, which is stored once.
Where it came from
- Unreal Engine game project79.3 → 19.6 GB
- Steam library81.8 → 38.4 GB
- Minecraft client mod, builds and Gradle37.4 → 5.3 GB
- Old backups46.3 → 17.1 GB
- Portfolio and design files23.8 → 1.8 GB
- Roblox via Vinegar (Flatpak)17.7 → 1.2 GB
- Motion design project12.1 → 0.1 GB
- Gradle cache10.4 → 2.8 GB
By file type
- Zip archives
.zip60.6 → 21.7 GB - PNG images
.png36.7 → 0.6 GB - Windows DLLs (Proton games)
.dll26.3 → 4.0 GB - Unreal assets
.uasset21.8 → 1.8 GB - Object files and static libs
.o .a34.7 → 5.0 GB - Debug symbols
.pdb20.1 → 3.6 GB - Linux shared libraries
.so21.7 → 5.3 GB - Logs
.log15.2 → 0.8 GB
Already-compressed formats get one test run and are kept only if they shrink by 10% or more. Plenty of zips are stored without compression, and PNGs repeat across projects.
Speed
| Compressing, in the background16 of 32 threads, lowest CPU and disk priority | 190 MB/s |
| Opening a compressed 440 MB filethe program waits this long once, then it's a normal file again | 0.6 s |
| Opening a compressed 2 GB file, cold cachethe same file uncompressed reads in 1.1 s | 2.3 s |
Pausing ita0 pause stops a running scan | under 1 s |
| Protected again after a restart162,386 compressed files re-armed | 0.24 s |
| Daemon memory when idle | ~10 MB |
Tested on
| InstallerDebian 12, Ubuntu 20.04 and 24.04, Fedora 41, Arch, Alpine, openSUSE Tumbleweed | 7 / 7 |
| Filesystemsext4, btrfs, xfs, and inside the hardened systemd sandbox | 4 × 61 checks |
| Crash, power cut, file opened mid-compressionreaders racing the compressor for 20 s never saw wrong data | 0 wrong reads |
How it works
- Every few hours a0 looks for files nobody touched in 7 days. Over a megabyte, not already compressed, not in your config or keys.
- It packs them into one shared store and leaves the file where it was. Same name, same size, same date. It just doesn't take up blocks anymore.
- When any program opens one, Linux pauses that program while a0 unpacks it. Usually under a second. Then the program carries on and never knows.
render.pak 2.0 GB on disk 2.0 GB
│ untouched for 7 days
▼
render.pak 2.0 GB on disk 0 B store +716 MB
│ something opens it
▼
render.pak 2.0 GB on disk 2.0 GB ~1.4 s later
Before you install
- The a0 service has to be running. It starts before you log in. If you stop it, compressed files read as empty until it's back —
a0 statustells you. - First launch of a compressed game is slower, roughly a second per GB. After that it's a normal file again until it sits unused for another week.
- It refuses to compress anything that's open, checks every block before freeing space, and survives crashes and power cuts mid-way.
- Undo is one command:
sudo a0 thaw-allputs every file back, even with the service stopped. - It uses half your CPU threads, at the lowest priority.
a0 speedchanges that,a0 pause 2hstops it for a while. - Container and VM images are never touched (Docker, Podman, LXC, Waydroid), whatever the config says.
- Needs a normal desktop kernel (fanotify permission events — Arch, Ubuntu, Fedora, Debian all ship it) and ext4, xfs or btrfs.
After installing
- a0 estimate ~
- How much you'd get back. Reads only, changes nothing.
- sudoedit /etc/a0/config.toml
- Pick folders. Or install with
--hometo start with your home folder. - sudo a0 scan --dry-run
- The exact list it would compress.
- a0 status
- How much it saved.
- a0 pause 2h
- Leave the CPU alone for a while.
a0 resumepicks up where it stopped. - a0 speed 4
- How many threads it may use. Default: one per core.
- sudo a0 thaw-all
- Everything back to normal.
Home folder straight away:
curl -fsSL https://a0.0a0.dev/install.sh | sh -s -- --home
Remove it (unpacks everything first):
curl -fsSL https://a0.0a0.dev/install.sh | sh -s -- --uninstall