packwing 0.2.0 · free and open source

The file archiver that
uses every core you have.

ZIP, 7z, tar.xz, tar.zst and tar.bz2 made on all of your cores at once, and big archives opened the same way. ZIP, RAR, 7z, tar, disc images and age files, opened safely. A native app built in Rust, on hivepack.

  • macOS
  • Windows
  • Linux
  • Every core
  • GPL-3.0
  • 15 languages
packwing's window with a 7z archive open: its folders and files, Extract, Add files and Test, and a note that one program in it keeps its Internet mark

Built for speed, on every core.

A big archive is a lot of work for one core while the others wait. packwing shares it among all of them, so it is made, and opened, many times sooner.

  • Made on every core. ZIP, 7z, .tar.gz, .tar.xz, .tar.zst, .tar.bz2 and .tar.lz4 are compressed on all of your cores at once: ZIP a file on each, and one large file on all of them, as pigz does gzip; the others a piece on each. Files added to a ZIP archive are compressed on every core too.
  • Opened on every core. What is written in pieces (by packwing, xz -T, pzstd, pbzip2 or 7-Zip) is read a piece on each core, and so is any bzip2 file and a macOS package. ZIP and RAR archives’ files, and 7z’s solid blocks, come out several at once, a solid RAR archive’s large files are decoded on several cores, and a tar or cpio archive’s files are written while it is still being read, and decompressed only once.
  • A .tar.zst that opens on every core. From 256 MiB, a .tar.zst goes in frames of 32 MiB with zstd’s seek table, so every core opens it at once, for a fraction of a percent in size. One frame, the smallest, is a click away.
  • Smaller blocks, when you ask. A .tar.xz or a 7z archive goes in its format’s own blocks, the smallest archive, which are fewer than your cores below a few GB. New archive, or pkw --blocks small, cuts enough for 32 cores: up to twice as fast, a few percent larger.
  • The same archive, byte for byte. One core or thirty-two, what is made is identical: the cores change only how soon it is done.
  • Never out of memory. The threads take no more than 70% of the memory free, and leave at least 2 GB of it to everything else (half, where little is free), within a container’s limits too, whether they make an archive or open one: a RAR or 7z archive gets as many as its dictionaries leave room for. Where one level would take more, it is lowered, and you are told.
  • As many as you like. All of them by default; Settings › General, or pkw --threads N, sets fewer.
Project files 2026.tar.zst16 threads
Same archive, byte for byteWithin 70% of the memory free

More than cores. How fast a job goes depends on the format and level too, the memory free, and how quickly your disk reads and writes.

Extract without a second thought.

An archive from anyone can hold surprises. packwing checks each one as it goes, so a bad archive stops before it does harm, and tells you why.

  • Nothing lands outside the folder. A name that climbs out (../), an absolute path, or a link that leads elsewhere is refused or left out.
  • Archive bombs stop. What comes out is held to a size limit, however small the archive.
  • Your files stay yours. A file already there is never written over unless you say so.
  • Programs ask first. A file opened from an archive opens as a copy in a temporary folder, after asking; a program always asks.
  • The Internet mark stays. On Windows and macOS, what came from the Internet is still marked when extracted, so the system warns before it runs.
  • Names this system can use. Names your system cannot take are asked about once, all together, before anything is written: skip, rename or stop.
  • Nothing half-done. A tar, cpio or XAR archive comes out in a private folder, moved into place at the end; one a crash leaves behind is removed when packwing starts again.
packwing's Extract dialog: Smart puts the files in a new folder, and a note says nothing leaves the folder or passes the size limit

Everything an archive needs.

Look inside before you extract, make archives others can open, and keep the work going in the background.

Look before you extract

Search all of it, see a file, take only what you need

A search through every folder of an archive, whatever the case and accents: resume findsRésumé. Pictures and text show in a preview, and Extract takes just what is selected. A password is asked once, kept in memory, and forgotten ten minutes after its last use.

An archive's folder in packwing, with a picture from it in the preview beside the list
Writes archives

ZIP, 7z and tar, your way

ZIP, 7z, .tar.gz, .tar.xz and .tar.zst, with five levels, AES-256 on ZIP and 7z (7z can hide the names too), and parts as 7-Zip cuts them. For a backup, a tar archive keeps each file’s owner, group and extended attributes, ACLs among them, and gives them back when you extract it; an archive to share leaves them out. It tells you who can open what you make.

packwing's New archive dialog, making a 7z archive, with a note on which systems open it
In the background

Keep working while it works

Extracting, compressing, testing, copying and signing go on behind, two at a time. The Jobs page says how far each is, waits for a password one needs, and the system tells you when one ends.

packwing's Jobs page: an archive being extracted, one waiting for a password, and others done
In your file manager

Right-click, and it is done

Extract here, extract to a new folder, open, or compress to ZIP from the right-click menu of Windows Explorer, macOS Finder and Linux file managers (Nautilus, Dolphin, Nemo and Thunar), and drag files into the window.

packwing's Settings, choosing which items its right-click menu holds
age built in

Encrypted files, the modern way

Opens and writes .age files with a passphrase, age keys, Ed25519 SSH keys and post-quantum keys.

ZIP and 7z

Edit an archive in place

Add, delete and rename inside a ZIP or 7z archive. The new one takes its place only once it reads back whole, and starts only where there is room for it. A 7z archive’s blocks that lose nothing are copied as they are, encrypted or not.

Signatures

Sign what you share

Sign with an SSH Ed25519 key, or a new key of Ed25519 and ML-DSA-65 together. An SSH signature checks with ssh-keygen -Y verify, without packwing.

Checksums

Check a download

SHA-256 and SHA-1, or SHA-512, MD5 and BLAKE3, in one pass. Paste the one from a download page, or a SHA256SUMS list, to compare; save them beside the file for sha256sum -c.

Updates

Updates you can trust

A daily look for a newer version, in a list believed only when its signatures verify. Nothing is downloaded or installed unless you ask.

Every day

Made to feel at home

An interface in 15 languages, light and dark, back and forward with your mouse, and a window that comes back as you left it.

Opens what you come across.

packwing tells a file by what it holds, not by its name, so a ZIP under another name opens as one.

Opens

  • ZIPsplit archives too; jar, apk, epub, cbz
  • RAR1.4 to 7, volumes too
  • 7zand its parts, .7z.001
  • tarand cpio
  • Disc imagesISO 9660 and UDF
  • PackagesDebian .deb, RPM, snap, AppImage and macOS .pkg
  • Compressedgzip, zstd, xz, bzip2, lz4, lzma: any layers around them
  • agepassphrase, age, SSH and post-quantum keys

Writes

  • ZIPAES-256, in parts
  • 7zAES-256, names hidden, in parts
  • .tar.gz · .tar.xz · .tar.zstand .tar.bz2, .tar.lz4; five levels; owners and ACLs for a backup
  • .ageto a passphrase or keys

And converts between them, an entry at a time, with no folder in between.

Your archives, wherever they are.

Browse folders, buckets and servers as a file manager does, and copy and move between them. Secrets stay in the system’s keychain.

Folders

on this computer, and the drives it sees

S3

Amazon S3, and S3-compatible storage

WebDAV

any WebDAV server

SFTP

any server you reach over SSH

Archives in place

Read a remote archive without downloading it

A ZIP or 7z archive on a storage is listed, and a file taken from it, without fetching the rest.

packwing, without the window.

pkw is for a terminal, a server over SSH or a script: the same formats, the same safety and the same organization policies as the app.

Passwords stay off the command line

pkw asks for one in a terminal, or reads it from a file, standard input or an environment variable, where others cannot see it.

Exit codes that say what happened

  • 0 done
  • 1 failed
  • 2 not understood
  • 3 password or key needed, or wrong
  • 4 not an archive it opens
  • 5 done, with some files skipped or damaged
  • 130 stopped by Ctrl-C, what it was making removed

Set it once, for everyone.

Keep the Internet mark on what is extracted, require encryption on every new archive, and set which passwords are allowed and how long they have to be. Keep an audit log of what packwing does, who extracted, made or copied which archive and when, chained so that a record changed or taken out shows, and sent to the Event Log, macOS’s unified log or journald too. What the organization fixes shows as locked in the app, and pkw follows it too.

The policies
  • WindowsGroup Policy
  • macOSa configuration profile
  • Linuxa file in /etc

Questions, answered.

Is packwing free?

packwing is free software under the GPL-3.0: the source is on GitHub, and you can build it, change it and share it.

Does packwing use all of my cores?

Yes. ZIP, 7z, .tar.gz, .tar.xz, .tar.zst, .tar.bz2 and .tar.lz4 are compressed on every core at once, and so is one large file in a ZIP archive. What is written in pieces (by packwing, xz -T, pzstd, pbzip2 or 7-Zip) is read on every core, as is any bzip2 file and a macOS package; ZIP and RAR archives' files and 7z's solid blocks are extracted several at once, and a tar archive's files are written while it is read. A .tar.zst of 256 MiB or more is made in frames that every core opens at once, and a .tar.xz or 7z archive in smaller blocks when you ask. The archive is the same, byte for byte, however many cores made it. The threads take no more than 70% of the memory free, and leave at least 2 GB of it to everything else, and Settings › General, or pkw --threads N, sets how many.

What does "opens archives safely" mean?

Nothing is written outside the folder you extract to, or through a link in the archive. An archive bomb stops at a size limit. A file that is already there is never written over unless you say so. A file opened from an archive opens as a copy in a temporary folder, after asking, and a program always asks first. On Windows and macOS, what came from the Internet keeps its mark when extracted, so the system still warns before running it.

Which formats does it open and write?

It opens ZIP (split archives too), RAR 1.4 to 7 (volumes too), 7z, tar, cpio, ISO 9660 and UDF disc images, Debian and RPM packages, snaps, AppImages and macOS packages, inside gzip, zstd, xz, bzip2 and other layers, and .age files. It writes ZIP, 7z, .tar.gz, .tar.xz, .tar.zst, .tar.bz2, .tar.lz4 and .age, with AES-256 on ZIP and 7z, and parts as 7-Zip cuts them, and adds, deletes and renames inside ZIP and 7z archives.

Can I make backups with it?

Yes. When you ask, a tar archive keeps each file's owner and group and its extended attributes (Linux's ACLs among them), and holds a file with several names once. Extracting gives them back when Settings › Extracting, or pkw extract --same-owner --xattrs, says so; only an administrator gives files to other users. An archive to share leaves them out, so it does not name its users. pkw create --mtime, or SOURCE_DATE_EPOCH, gives the same files the same archive.

Can I use it without the window?

Yes. pkw is packwing for the terminal, a server over SSH or a script: it lists, extracts, tests, makes, changes and converts archives, signs and verifies files, makes and checks checksums, and copies to and from your storages, with JSON output and exit codes that say what went wrong.

Where are my passwords kept?

An archive’s password is kept in memory while you use it, and forgotten ten minutes after its last use; it is never written down. The secrets of your storages (S3, WebDAV, SFTP) are kept in the system’s keychain.

Can my organization set it up?

Yes. Group Policy on Windows, a configuration profile on macOS, or a file in /etc on Linux can keep the Internet mark, require encryption, set which kinds of passwords are allowed and how long they have to be, and keep an audit log of what packwing does, on the computer and in the system’s own log. The settings they fix show as locked.

How do I install it, and how does it update?

Download it for your system above: a .dmg for macOS, an installer for Windows (for everyone, or for you alone), a .deb or an .rpm for Linux, or pkw, the command line, alone. Once a day packwing looks for a newer version, in a list it believes only when its signatures verify, and a badge says so; nothing is downloaded or installed until you ask. The .dmg app and the Windows installer update themselves when you say so; for a .deb or an .rpm, the app shows the commands; pkw alone does not update itself. The Windows installer is not signed yet, so SmartScreen asks you to allow it the first time.

Is there a mobile app?

Coming soon, for iOS and Android, to open the archives you are sent.

Get packwing 0.2.0

Free and open source, for macOS, Windows and Linux; iOS and Android are coming soon. It tells you when a new version is out, and installs it when you say so. Only need the command line? pkw comes alone too.

Download for macOSApple silicon · M1 and later · .dmg

macOS

macOS 13 Ventura or later

Install

  1. Open the .dmg.
  2. Drag packwing into Applications.
  3. Open it from Applications or Spotlight, or open an archive with it in Finder.
# Or with Homebrew
brew install --cask hivepaas/tap/packwing
First launch. Signed and notarized by Apple. macOS asks once whether to open an app downloaded from the internet: choose Open.

Install

  1. Run the installer: for everyone, into Program Files (Windows asks for an administrator), or for you alone.
  2. Start packwing from the Start menu, or right-click a file in Explorer.
  3. pkw, the command line, is in your PATH: open a new terminal to use it.
  4. Updates install themselves when you say so.
First launch. Not signed yet: SmartScreen may say "Windows protected your PC". Choose More info › Run anyway.

Linux

glibc 2.35+ (Ubuntu 22.04, Debian 12, Fedora, openSUSE Leap 15.6 or newer), Wayland or X11

Install

  1. Debian or Ubuntu: install the .deb with apt.
  2. Fedora: install the .rpm with dnf. openSUSE: with zypper.
  3. When a new version is out, the app shows the commands that install it, with its SHA-256.
  4. With the .deb, packwing’s items are in Nautilus’s own right-click menu: run nautilus -q once.
# Debian / Ubuntu
curl -LO https://github.com/hivepaas/packwing/releases/download/v0.2.0/packwing_0.2.0_amd64.deb
sudo apt install ./packwing_0.2.0_amd64.deb

# Fedora
curl -LO https://github.com/hivepaas/packwing/releases/download/v0.2.0/packwing_0.2.0_x86_64.rpm
sudo dnf install ./packwing_0.2.0_x86_64.rpm

# openSUSE
curl -LO https://github.com/hivepaas/packwing/releases/download/v0.2.0/packwing_0.2.0_x86_64.rpm
sudo zypper --no-gpg-checks install ./packwing_0.2.0_x86_64.rpm
First launch. The .rpm is not signed: dnf warns and goes on, and zypper needs --no-gpg-checks.

Command line

pkw alone, with no app: Linux with glibc 2.34+ (Ubuntu 22.04, Debian 12, RHEL 9 or newer), macOS 13 or later, Windows 10 or 11 x64

Install

  1. For a server, a terminal over SSH or a script: the same pkw the app’s packages hold, alone.
  2. Unpack it and put pkw (pkw.exe on Windows) in a folder on your PATH.
  3. Its manual pages and its completions for bash, zsh and fish come with it; README.txt says where they go.
  4. With Homebrew, on macOS and Linux, one command installs it with its manual pages and completions, and brew upgrade updates it.
  5. Unpacked by hand, it does not update itself: a newer one is on the releases page.
# Homebrew (macOS and Linux)
brew install hivepaas/tap/pkw

# Linux x86_64
curl -LO https://github.com/hivepaas/packwing/releases/download/v0.2.0/pkw_0.2.0_linux_x86_64.tar.gz
tar -xzf pkw_0.2.0_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 pkw_0.2.0_linux_x86_64/pkw ~/.local/bin/pkw

# macOS (Apple silicon)
curl -LO https://github.com/hivepaas/packwing/releases/download/v0.2.0/pkw_0.2.0_macos_aarch64.tar.gz
tar -xzf pkw_0.2.0_macos_aarch64.tar.gz
mkdir -p ~/.local/bin
install -m 755 pkw_0.2.0_macos_aarch64/pkw ~/.local/bin/pkw

~/.local/bin/pkw --version
First launch. On macOS pkw is signed and notarized, and runs from Terminal with no question. On Linux it needs only the C library. Try pkw --help.

iOS Coming soon

packwing for iPhone and iPad is coming soon, to open the archives you are sent.

Android Coming soon

packwing for Android is coming soon, to open the archives you are sent.

Like it? Star packwing on GitHub to follow what comes next.