Installing OMG
Install OMG on Arch, Debian 12, Ubuntu 24.04, Fedora, and macOS; enable shell integration, update, and uninstall.
Install with the universal installer
The universal installer detects your operating system and package backend, downloads the matching release binaries, and installs them to ~/.local/bin. It requires the GitHub CLI (gh) to verify the release attestation. Download the script, review it, then run it.
Linux and macOS, including WSL
curl -fsSL https://getomg.xyz/install.sh -o omg-install.sh
less omg-install.sh && bash omg-install.shPlatform packages
Supported platforms and install methods
| Platform | Install method |
|---|---|
| Arch Linux | Universal installer or a matching GitHub release archive |
| Debian 12 and Ubuntu 24.04 | Universal installer, or download a release tarball and copy the binary to /usr/local/bin |
| Fedora | Universal installer or a matching Fedora release archive |
| macOS | Universal installer. Homebrew packaging is not available yet |
| Windows | WSL2 on Arch, Debian 12, Ubuntu 24.04, or Fedora, using the universal installer inside the distribution |
Release binaries support x86_64 Linux and Apple Silicon macOS. Linux archives are backend-specific for Arch, Debian/Ubuntu, and Fedora. Intel macOS, Linux ARM64, 32-bit x86, ARMv7 release installs, and native Windows are unsupported. The installer maps RHEL/CentOS-family identification to the Fedora artifact as a best-effort fallback, but Fedora evidence does not establish RHEL compatibility. The supported installation channels are the universal installer and GitHub release downloads.
Debian 12 and Ubuntu 24.04 use the APT 6 archives. Debian 13 and Ubuntu 26.04 need APT 7 binaries. The newer installer selects a `debian-trixie` release pair for those hosts, but v0.1.223 does not publish that pair, so installation cannot complete there until a compatible release is available.
Backend and feature matrix
| Backend | What it means |
|---|---|
| Arch (`arch`) | libalpm plus AUR workflows; the default source-build feature set |
| Debian/Ubuntu (`debian`) | Native APT operations; source builds need libapt-pkg-dev and native build headers |
| Fedora (`fedora`) | DNF/RPM operations; source builds use the pure-Rust RPM database path |
| Apple Silicon macOS (`macos`) | Homebrew package operations; published macOS binaries are ARM64 |
| Debian index/test (`debian-pure`) | Pure-Rust index fixtures only; refuses live package mutations |
| Windows | No native backend or binary; install inside WSL and use the guest distribution backend |
Shell integration and first checks
Enable the shell hook so runtime versions switch when you change directories.
echo 'eval "$(omg hook bash)"' >> ~/.bashrcFor Zsh, add the same hook to ~/.zshrc. For Fish, add omg hook fish | source to ~/.config/fish/config.fish.
Verify the installation.
omg --version && omg doctorOptionally install completions for your shell.
omg completions zsh
Installer options
The installer reads environment variables. Put them on the bash side of the pipe, not in front of curl, so they reach the installer process.
Installer environment variables
| Variable | Effect |
|---|---|
| OMG_NO_TELEMETRY=1 | Skip the telemetry consent prompt and keep telemetry disabled |
| OMG_SKIP_SHELL=1 | Skip shell integration setup |
| OMG_VERSION=v0.1.223 | Install a specific release |
| INSTALL_DIR=~/.omg/bin | Install to a custom directory |
Combine options in one command
curl -fsSL https://getomg.xyz/install.sh | OMG_NO_TELEMETRY=1 OMG_SKIP_SHELL=1 bashUpdating and uninstalling
Update OMG itself
omg self-updateomg self-update verifies and stages the matching omg and omgd binaries before replacing either one. Each replacement is atomic, and a failure restores the prior files. Restart a running daemon afterward so it loads the new code. You can also obtain a release through the universal installer or GitHub releases.
Remove a script installation
curl -fsSL https://getomg.xyz/install.sh -o omg-install.sh
less omg-install.sh && bash omg-install.sh --uninstallBuild from source
Source builds use the Rust toolchain pinned by the repository. Select exactly one package backend with `--no-default-features`; feature names are additive. A source build is not the same trust path as a release archive and should come from a reviewed checkout.
Backend-specific builds
cargo build --release --locked --no-default-features --features arch,pgp,license
cargo build --release --locked --no-default-features --features debian,pgp,license
cargo build --release --locked --no-default-features --features fedora,pgp,license
cargo build --release --locked --no-default-features --features macos,pgp,license
cargo build --release --locked --no-default-features --features debian-pure,pgp,licenseDaemon and release pairing
Check and start the daemon
omg daemon-status
omg daemon --foreground
omg daemonRelease archives pair `omg` with `omgd` on supported Linux and macOS targets. Restart a running daemon after `omg self-update` so it loads the new binary. Package queries and vulnerability scans can use direct backends when the daemon is unavailable. Metrics still need the daemon; SOC 2 export can scan directly on Unix.
Build from source
Source builds use the Rust toolchain pinned by the repository. Select exactly one package backend with `--no-default-features`; feature names are additive. A source build is not the same trust path as a release archive and should come from a reviewed checkout.
Backend-specific builds
cargo build --release --locked --no-default-features --features arch,pgp,license
cargo build --release --locked --no-default-features --features debian,pgp,license
cargo build --release --locked --no-default-features --features fedora,pgp,license
cargo build --release --locked --no-default-features --features macos,pgp,license
cargo build --release --locked --no-default-features --features debian-pure,pgp,licenseDaemon and release pairing
Check and start the daemon
omg daemon-status
omg daemon --foreground
omg daemonRelease archives pair `omg` with `omgd` on supported Linux and macOS targets. Restart a running daemon after `omg self-update` so it loads the new binary. In v0.1.223, vulnerability audits require omgd. Current main has a direct audit fallback. Metrics still need daemon support.
If the command is not found
The installer places the binary in ~/.local/bin. If that directory is missing from PATH, add it and restart the shell. If the binary exists but will not run, restore its execute permission.
Fix PATH and permissions
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
chmod +x ~/.local/bin/omgFor CI pipelines, install OMG in a setup step, add ~/.local/bin to PATH, then select the runtime your build needs, for example omg use node 20 followed by omg run build.