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

What the installer checks Two independent gates run before anything is copied into your home folder. A failed gate stops the install.
What the installer checksWhat the installer checks. Steps in reading order: Download the script (curl to omg-install.sh); Read it with less (you decide to run it); Check the archive (published sha256); Verify build proof (gh attestation verify); Install the binaries (into ~/.local/bin); Stop and report (do not disable the check); Add the folder to PATH. Connections: Download the script to Read it with less; Read it with less to Check the archive; Check the archive to Verify build proof; Verify build proof to Install the binaries; Install the binaries to Add the folder to PATH; Check the archive to Stop and report (mismatch); Verify build proof to Stop and report (failed).Download the scriptcurl to omg-install.shRead it with lessyou decide to run itCheck the archivepublished sha256Verify build proofgh attestation verifyInstall the binariesinto ~/.local/binStop and reportdo not disable the checkAdd the folder to PATHmismatchfailed

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.sh

Platform packages

Supported platforms and install methods

PlatformInstall method
Arch LinuxUniversal installer or a matching GitHub release archive
Debian 12 and Ubuntu 24.04Universal installer, or download a release tarball and copy the binary to /usr/local/bin
FedoraUniversal installer or a matching Fedora release archive
macOSUniversal installer. Homebrew packaging is not available yet
WindowsWSL2 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

BackendWhat 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
WindowsNo native backend or binary; install inside WSL and use the guest distribution backend

Shell integration and first checks

  1. Enable the shell hook so runtime versions switch when you change directories.

    echo 'eval "$(omg hook bash)"' >> ~/.bashrc
  2. For Zsh, add the same hook to ~/.zshrc. For Fish, add omg hook fish | source to ~/.config/fish/config.fish.

  3. Verify the installation.

    omg --version && omg doctor
  4. Optionally 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

VariableEffect
OMG_NO_TELEMETRY=1Skip the telemetry consent prompt and keep telemetry disabled
OMG_SKIP_SHELL=1Skip shell integration setup
OMG_VERSION=v0.1.223Install a specific release
INSTALL_DIR=~/.omg/binInstall to a custom directory

Combine options in one command

curl -fsSL https://getomg.xyz/install.sh | OMG_NO_TELEMETRY=1 OMG_SKIP_SHELL=1 bash

Updating and uninstalling

Update OMG itself

omg self-update

omg 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 --uninstall

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,license

Daemon and release pairing

Check and start the daemon

omg daemon-status
omg daemon --foreground
omg daemon

Release 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,license

Daemon and release pairing

Check and start the daemon

omg daemon-status
omg daemon --foreground
omg daemon

Release 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/omg

For 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.