- 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.5 KiB
CLI Guide
Core Repo Flow
omnigraph init --schema ./schema.pg ./repo.omni
omnigraph load --data ./data.jsonl --mode overwrite ./repo.omni
omnigraph snapshot ./repo.omni --branch main --json
omnigraph read --uri ./repo.omni --query ./queries.gq --name get_person --params '{"name":"Alice"}'
omnigraph change --uri ./repo.omni --query ./queries.gq --name insert_person --params '{"name":"Mina","age":28}'
Branching And Reviewable Data Flows
omnigraph branch create --uri ./repo.omni --from main feature-x
omnigraph branch list --uri ./repo.omni
omnigraph branch merge --uri ./repo.omni feature-x --into main
omnigraph ingest --data ./batch.jsonl --branch review/import-2026-04-09 ./repo.omni
omnigraph export ./repo.omni --branch main --type Person > people.jsonl
omnigraph commit list ./repo.omni --branch main --json
omnigraph commit show --uri ./repo.omni <commit-id> --json
Remote Server Mode
Serve a repo:
omnigraph-server ./repo.omni --bind 127.0.0.1:8080
Read through the HTTP API:
omnigraph read \
--target http://127.0.0.1:8080 \
--query ./queries.gq \
--name get_person \
--params '{"name":"Alice"}'
If the server requires auth, set OMNIGRAPH_SERVER_BEARER_TOKEN on the server
and configure the matching bearer_token_env in omnigraph.yaml.
Runs, Policy, And Diagnostics
omnigraph query lint --query ./queries.gq --schema ./schema.pg --json
omnigraph query check --query ./queries.gq ./repo.omni --json
omnigraph schema plan --schema ./next.pg ./repo.omni --json
omnigraph schema apply --schema ./next.pg ./repo.omni --json
omnigraph policy validate --config ./omnigraph.yaml
omnigraph policy test --config ./omnigraph.yaml
omnigraph policy explain --config ./omnigraph.yaml --actor act-alice --action read --branch main
omnigraph commit list ./repo.omni --json
omnigraph commit show --uri ./repo.omni <commit-id> --json
(The legacy omnigraph run list/show/publish/abort subcommands were removed in MR-771; mutations and loads publish atomically and the commit graph (omnigraph commit list) is the audit surface.)
query lint and query check are the same command surface. In v1, repo-backed
lint uses local or s3:// repo URIs; HTTP targets are only supported when you
also pass --schema.
Config
omnigraph.yaml lets the CLI and server share named graphs, defaults, and
query roots:
graphs:
local:
uri: ./demo.omni
dev:
uri: http://127.0.0.1:8080
bearer_token_env: OMNIGRAPH_BEARER_TOKEN
cli:
graph: local
branch: main
query:
roots:
- queries
- .
The config file can also define:
- server bind defaults
- auth env files
- query aliases for common read and change commands
policy.filefor Cedar authorization rules
When policy is enabled, schema apply is authorized through the
schema_apply action and is typically limited to admins on protected main.
Updating
Update both binaries in place from the latest GitHub Release:
omnigraph update # default: stable channel, prompts for confirmation
omnigraph update --check # only check; do not install
omnigraph update --yes # skip prompt
omnigraph update --channel edge
Homebrew installs are detected and short-circuited with a hint to run
brew upgrade ModernRelay/tap/omnigraph instead. Each invocation of
omnigraph also performs a best-effort cached check (24-hour TTL) for newer
releases and prints a one-line stderr notice; suppress with
OMNIGRAPH_NO_UPDATE_CHECK=1. Full details: install.md.