Getting started
Install the CLI and build the bundled C example end-to-end.
Install the CLI
Options:
- OmniPackage repositories — recommended
- AUR — Arch alternative, e.g.
yay -S omnipackage - Source — requires Rust 1.85+ (2024 edition)
Verify:
Expected output: omnipackage <version> confirming the binary is on $PATH.
Build the example project
Clone the examples repo and enter the C/Makefile sample:
Generate a GPG signing key. To reuse an existing one, see Signing packages.
echo "GPG_KEY=$(omnipackage gpg generate --name 'Your Name' --email 'you@example.com' --format base64)" >> .env
The key is ASCII-armored, then base64-encoded so it fits in an env variable without newline escaping.
OmniPackage reads .env from the project root by default; override with --env-file. .env now holds your private signing key — keep it out of version control (the examples repo already gitignores it).
Run release (. is the project directory containing .omnipackage/config.yml):
The build log streams for each distro in .omnipackage/config.yml.
The command writes local repositories to ~/omnipackage-examples-repos/c_makefile. Open ~/omnipackage-examples-repos/c_makefile/install.html in a browser — a generated landing page with copy-paste instructions for each distro. The path comes from the repositories block in .omnipackage/config.yml; the first entry is used by default.
Next steps
Switch to S3 for production
Local repositories suit testing; production usually means S3. The example config already includes an S3 block. Select it by name:
How secrets flow
Secrets are declared in config.yml and passed from the environment via ${...}. config.yml is the single source of truth; .env (or any other env file, or the process environment) holds the values. No hidden env settings exist beyond what config.yml declares.