omnipackage — zsh
$ omnipackage release ~/projects/my-awesome-project
:: building   ubuntu · debian · fedora · opensuse …
✓ signed     with your GPG key
✓ published  → s3://your-bucket   (apt · dnf · zypper repo)
# install page generated — share the link, your users are done

Build and distribute your own RPM and DEB packages — with your own repository

We had centralized software repositories long before the App Store. Why is distributing software for Linux still so hard? OmniPackage makes it easy.

Build RPM and DEB packages for many distros and publish them to a self-hosted apt, dnf, or zypper repository on any S3-compatible storage or local filesystem. Runs on GitHub Actions, your laptop, or anywhere.

License: GPL-3.0 CI status Available via OmniPackage stable repository Available via OmniPackage master (unstable) repository

OmniPackage is an open-source CLI that builds RPM and DEB packages and publishes them to your own apt, dnf, or zypper repository on S3-compatible storage or a local filesystem. It scaffolds an RPM spec file and the DEB equivalents, then runs rpmbuild and dpkg-buildpackage in containers for each supported distro. Packages are signed with your GPG key and uploaded to your bucket or directory, which serves as the repository. It also generates an install page — share the link, and your users are done.

One command to build, sign, and publish your packages:

~/projects/my-awesome-project
omnipackage release ~/projects/my-awesome-project

How it works

  1. 01Scaffold

    OmniPackage scaffolds an RPM spec file and the other files RPM and DEB packaging need.

  2. 02Release

    Add your storage details — an S3-compatible bucket or a local filesystem path — and a few config options, then run omnipackage release. Packages are built in containers for each distro, signed with your GPG key, and published to your repository.

  3. 03Share

    Share the install page generated with the packages so users can add the repository and install with their native package manager.

From your users' perspective

On the latest Ubuntu, for example, four commands add the repository and install your package:

user@ubuntu:~$
echo 'deb https://repositories.omnipackage.org/omnipackage-rs/stable/ubuntu_26.04 stable/' | sudo tee /etc/apt/sources.list.d/omnipackage_omnipackage.list
curl -fsSL https://repositories.omnipackage.org/omnipackage-rs/stable/ubuntu_26.04/stable/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/omnipackage_omnipackage.gpg > /dev/null
sudo apt-get update
sudo apt-get install omnipackage

Users do this once. After that, updates arrive through apt upgrade alongside everything else from the official Ubuntu repos — no extra steps, no separate updater. The same applies on Debian, Fedora, openSUSE, and the other supported distros, each through its native package manager.

Supported distros

Packages are built for the build host's architecture. All supported base images except Mageia are multiarch, so both x86_64 and ARM64 work.

Loading supported distros…

Fetched live from distros.yml in the OmniPackage repo.

No vendor lock-in

  • Open source and not tied to any cloud or hosting provider
  • Host repositories on your own S3 bucket — AWS S3, Cloudflare R2 (recommended for free egress), MinIO, or any S3-compatible service — or a local filesystem path
  • No subscriptions, registrations, or credit cards

What OmniPackage doesn't do

  • Build new package formats. RPM and DEB only — Flatpak, Snap, AppImage, AUR, and Nix are different bets.
  • Host your repository. You bring the storage — an S3 bucket or a local filesystem path — and in return get no vendor lock-in, with your packages in storage you control.
  • Sandbox installed software. Packages run with the same privileges any apt install package gets — no Flatpak-style isolation unless you ship it yourself (e.g. an AppArmor / SELinux profile, or a bwrap / firejail wrapper around your binary).

Projects using OmniPackage

Frequently asked questions

Does OmniPackage require Docker?
No. Podman works too and is recommended — it is the most-tested runtime. Docker is supported as well. Either is auto-detected; you can force one with the --container-runtime flag.

Can I distribute proprietary software with OmniPackage?
Yes. Unlike official distro repositories, your own OmniPackage repository can host any binaries you want, including closed-source ones.

How is OmniPackage different from Snap, Flatpak, or AppImage?
Snap and Flatpak ship their own runtimes; AppImage bundles dependencies. OmniPackage builds native RPM and DEB packages so users install with apt, dnf, or zypper — no extra runtime, no sandbox, no separate installer. Updates arrive through the system package manager alongside everything else.

What architectures does OmniPackage support?
Packages are built for the host's architecture. All supported base images except Mageia are multiarch, so both x86_64 and ARM64 work — run OmniPackage on the architecture you want the packages to target.

Can I host the apt or yum repository on AWS, Cloudflare R2, or MinIO?
Yes. OmniPackage publishes to any S3-compatible storage or a local filesystem path. Cloudflare R2 is recommended for free egress; AWS S3 and MinIO also work, as does any other S3-compatible service. The bucket (or local directory) serves as a self-hosted apt, dnf, or zypper repository.

Is OmniPackage free?
Yes. OmniPackage is free and open-source software, licensed under GPL-3.0.