- 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>
3.3 KiB
Install
Quick Install
curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | bash
By default the installer places:
omnigraphomnigraph-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.gzomnigraph-macos-x86_64.tar.gzomnigraph-macos-arm64.tar.gz
Each archive contains both binaries:
omnigraphomnigraph-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.gzand.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/omnigraphinstead.
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=1is set,CIis set,- stdout is not a TTY (pipes, scripts), or
- the running subcommand is
versionorupdate.
The cache lives at $XDG_CACHE_HOME/omnigraph/update-check.json (default
~/.cache/omnigraph/update-check.json).