omnigraph/docs/install.md
Devin AI fa27c7d318 feat(cli): add self-update mechanism (MR-612)
- New `omnigraph update` subcommand: GitHub Releases API → archive download
  → SHA256 verification → atomic POSIX rename of both binaries.
- Detects Homebrew installs and short-circuits with a hint to run
  `brew upgrade ModernRelay/tap/omnigraph`.
- Channels: `--channel stable` (default) or `edge`. `--check` for
  check-only, `--yes` to skip the confirmation prompt.
- Best-effort startup version check (24h cached at
  `~/.cache/omnigraph/update-check.json`) with one-line stderr notice.
  Cache is refreshed via a detached `__refresh-update-cache` subprocess so
  the foreground command never blocks on the network. Suppression: CI,
  `OMNIGRAPH_NO_UPDATE_CHECK=1`, non-TTY stdout, and `version`/`update`
  subcommands.
- Integration tests use an in-process raw-TCP HTTP fixture (no extra
  dev-deps) and override `OMNIGRAPH_UPDATE_API_BASE` /
  `OMNIGRAPH_UPDATE_DOWNLOAD_BASE` to keep the suite hermetic.
- Docs: `install.md`, `cli.md`, `cli-reference.md` updated.

Co-Authored-By: Ragnor Comerford <ragnor.comerford@gmail.com>
2026-05-11 23:02:24 +00:00

3.3 KiB

Install

Quick Install

curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | bash

By default the installer places:

  • omnigraph
  • omnigraph-server

in ~/.local/bin.

The default installer is binary-only. It downloads a published release asset, verifies the SHA256 checksum, and unpacks it. It does not build from source. If no stable tag is published yet, the installer automatically falls back to the rolling edge release.

Homebrew

brew tap ModernRelay/tap
brew install ModernRelay/tap/omnigraph

Channels

Stable binaries:

curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | bash

Rolling edge binaries from main:

curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | RELEASE_CHANNEL=edge bash

Install from source:

curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install-source.sh | bash

Useful Overrides

Install to a different directory:

curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | INSTALL_DIR="$HOME/bin" bash

Install a specific tag:

curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | VERSION=v0.1.0 bash

Build from a specific git ref:

curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install-source.sh | SOURCE_REF=main bash

Manual Source Build

cargo build --release --locked -p omnigraph-cli -p omnigraph-server
install -m 0755 target/release/omnigraph ~/.local/bin/omnigraph
install -m 0755 target/release/omnigraph-server ~/.local/bin/omnigraph-server

Release Assets

Tagged releases are expected to publish:

  • omnigraph-linux-x86_64.tar.gz
  • omnigraph-macos-x86_64.tar.gz
  • omnigraph-macos-arm64.tar.gz

Each archive contains both binaries:

  • omnigraph
  • omnigraph-server

Verify The Install

omnigraph version
omnigraph-server --help

Updating

After installing via the script (or a manual binary install) you can update both omnigraph and omnigraph-server in place:

omnigraph update            # update from the latest stable release
omnigraph update --check    # only check for a newer version
omnigraph update --yes      # skip the confirmation prompt
omnigraph update --channel edge  # follow the rolling `edge` channel

omnigraph update:

  • detects the platform automatically (Linux x86_64 / macOS arm64),
  • downloads the matching omnigraph-<platform>.tar.gz and .sha256,
  • verifies the SHA256 digest before touching anything,
  • replaces both binaries in the install directory atomically (POSIX rename), and
  • detects Homebrew installs and asks you to run brew upgrade ModernRelay/tap/omnigraph instead.

Each invocation of omnigraph also performs a best-effort, cached check (once every 24 hours) for newer stable releases and prints a one-line stderr notice if one is available. The notice is suppressed when:

  • OMNIGRAPH_NO_UPDATE_CHECK=1 is set,
  • CI is set,
  • stdout is not a TTY (pipes, scripts), or
  • the running subcommand is version or update.

The cache lives at $XDG_CACHE_HOME/omnigraph/update-check.json (default ~/.cache/omnigraph/update-check.json).