Lakehouse-native graph engine with git-style workflows https://omnigraph.dev
Find a file
Andrew Altshuler df0b0eadd1
docs(readme): make Common Commands cluster-first, not store-first (#263)
Follow-up to #262: the command examples led with single-file `--store ./graph.omni`
for everything (init/load/query/mutate/branch), which reads as a single-graph-file
product — the opposite of the cluster-first paradigm.

Reframe so the everyday loop is the headline: declare a cluster → `cluster apply`
→ `omnigraph-server --cluster …` → work against the served graph with
`--server <name> --graph <id>`, invoking stored queries by name. `--store` is
demoted to a clearly-secondary "Local / ad-hoc" note for standalone-graph
iteration. Folds the former separate "Serving" section into step 1.

All served examples verified to resolve correctly (`→ http://…/graphs/<id>
(served)`).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:40:11 +03:00
.cargo Raise LANCE_MEM_POOL_SIZE to 1 GB in .cargo/config.toml 2026-04-19 22:27:49 +03:00
.context Investigate Lance MergeInsertBuilder CAS granularity (MR-766 prereq) 2026-04-28 23:30:17 +00:00
.github ci(release): single-writer release publish — fix the matrix finalize race (#261) 2026-06-16 11:08:20 +03:00
crates Fix aws server startup config test 2026-06-16 04:23:07 +03:00
docker feat(docker): cluster-mode entrypoint and the CLI in the image 2026-06-10 22:44:54 +03:00
docs docs(releases): finalize v0.7.0 notes (#259) 2026-06-16 05:04:49 +03:00
scripts ci: pin RustFS to 1.0.0-beta.8 2026-06-10 18:44:05 +03:00
.dockerignore feat(docker): cluster-mode entrypoint and the CLI in the image 2026-06-10 22:44:54 +03:00
.gitignore release: v0.5.0 (#115) 2026-05-23 13:59:42 +01:00
AGENTS.md docs(readme): align with cluster-first paradigm + RFC-011 CLI ergonomics (#262) 2026-06-16 11:18:16 +03:00
Cargo.lock refactor(compiler): remove dead OpenAI embedding client (RFC-012 Phase 1) 2026-06-15 15:07:54 +02:00
Cargo.toml build(deps): bump Lance 6.0.1 → 7.0.0 (correct-by-design substrate alignment) (#229) 2026-06-14 20:42:24 +02:00
CLAUDE.md Add AGENTS.md as canonical agent guide; symlink CLAUDE.md to it 2026-04-28 23:10:09 +02:00
CODE_OF_CONDUCT.md Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
CONTRIBUTING.md governance: external contribution model (issues/discussions/RFCs/PRs) (#143) 2026-06-06 23:58:08 +03:00
Dockerfile feat(docker): cluster-mode entrypoint and the CLI in the image 2026-06-10 22:44:54 +03:00
GOVERNANCE.md governance: external contribution model (issues/discussions/RFCs/PRs) (#143) 2026-06-06 23:58:08 +03:00
LICENSE Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
og-cheet-sheet.md feat: inline query strings in CLI and HTTP server (#110) 2026-05-29 13:41:54 +02:00
omnigraph.example.yaml example config: use graphs / cli.graph, matching the MR-603 rename 2026-04-18 23:40:35 +03:00
openapi.json [codex] fix RFC-011 follow-up regressions (#258) 2026-06-16 03:11:43 +03:00
README.md docs(readme): make Common Commands cluster-first, not store-first (#263) 2026-06-16 11:40:11 +03:00
rust-toolchain.toml Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
SECURITY.md Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00

Omnigraph

License: MIT Rust Crates.io CI

Lakehouse native graph engine built for context assembly

Omnigraph acts as operational state & coordination layer for agents. Hundreds of agents can enrich the graph on parallel isolated branches and changes can be reviewed and merged safely.

  • Git-style versioning & branching
  • Multimodal retrieval (graph+vector/fts+filters) optimized for context assembly
  • Object storage native (S3, RustFS)
  • Native blob-as-data support (docs, images, videos, etc)
  • VPC, On-prem, hybrid deployment
  • Lance format as open storage layer
AS CODE What it means
Schema AS CODE Typed .pg schemas, planned, applied, enforced
Context AS CODE Linted queries & agentic nudges, versioned and reusable
Security AS CODE Cedar policies enforced server-side on every mutation
Dashboards AS CODE Declarative views & controls over the graph (coming)

Core Use Cases

Use case What it's for
Company brain Org knowledge unified into one queryable graph
Context graph Decision traces and codified tribal knowledge
Agentic memory Durable, versioned memory for long-running agents
Dev graph Issues & dependency model for coding agents
R&D data layer Experiments & trials data written into branches
ML workflows Versioned, branchable graphs for training & eval
Karpathy's LLM wiki A living, agent-updatable knowledge base

Quick Install

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

This installs omnigraph and omnigraph-server into ~/.local/bin from published release binaries.

Or install with Homebrew:

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

For starter graphs and agent skills to bootstrap and operate Omnigraph, see ModernRelay/omnigraph-cookbooks.

One-Command Local RustFS Bootstrap

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

That bootstrap:

  • starts RustFS on 127.0.0.1:9000
  • creates a bucket and S3-backed graph
  • loads the checked-in context fixture
  • launches omnigraph-server on 127.0.0.1:8080

Docker must be installed and running first.

The RustFS bootstrap prefers the rolling edge binaries and only falls back to source builds when release assets are unavailable.

If a previous run left objects under the same graph prefix but did not finish initializing the graph, rerun with RESET_REPO=1 or set PREFIX to a new value.

Common Commands

A deployment is a cluster. A cluster.yaml declares its graphs, schemas, stored queries, and policies; you converge it with cluster apply and serve it. The server is cluster-first — it boots only from a cluster and serves every graph under /graphs/{id}/…. Day-to-day work goes through that server: graphs are addressed with --server <name> (+ --graph <id>), and query/mutate invoke a stored query from the catalog by name.

# 1. Converge the declared cluster, then serve it
omnigraph cluster apply --config ./company-brain
omnigraph-server --cluster ./company-brain --bind 0.0.0.0:8080
#    or config-free from object storage — the bucket IS the deployment:
#    omnigraph-server --cluster s3://my-bucket/company-brain --bind 0.0.0.0:8080

# 2. Work against the served graph — stored queries invoked by name
omnigraph query  find_people --server prod --graph knowledge --params '{"q":"AI safety"}'
omnigraph mutate add_person  --server prod --graph knowledge --params '{"name":"Mina"}'
omnigraph load   --data ./data.jsonl --mode merge --server prod --graph knowledge

# 3. Branch and merge, Git-style across the whole graph
omnigraph branch create --from main review/2026-06 --server prod --graph knowledge
omnigraph branch merge  review/2026-06 --into main --server prod --graph knowledge

Set a default scope (or a --profile) in ~/.omnigraph/config.yaml — operator identity, named servers/clusters, credentials — and the --server/--graph flags drop away (omnigraph query find_people --params …).

Local / ad-hoc. For quick iteration on a standalone graph (no cluster, no server), address storage directly with --store (or a positional file:// / s3:// URI) and run ad-hoc .gq with --query (the positional then selects which query in the file):

omnigraph init  --schema ./schema.pg ./graph.omni
omnigraph load  --data ./data.jsonl --mode merge --store ./graph.omni
omnigraph query --query ./queries.gq get_person --params '{"name":"Alice"}' --store ./graph.omni

See docs/user/cli/index.md, the CLI reference, the cluster guide, and the deployment guide for schema apply, snapshots, commits, profiles, and policy/queries tooling.

Clients

For programmatic access to a running omnigraph-server:

  • TypeScript SDK@modernrelay/omnigraph (source). Instance-per-client, typed errors, camelCase types, async-iterator streaming export.

    npm install @modernrelay/omnigraph
    
  • Model Context Protocol server@modernrelay/omnigraph-mcp (source). Bridges Omnigraph to LLM hosts (Claude Desktop, Claude Code, …) over stdio. Exposes tools and resources for schema, branches, queries, mutations, ingest, and bundles curated best-practices guidance from the cookbook.

    npm install -g @modernrelay/omnigraph-mcp
    

Both packages are versioned in lockstep with omnigraph-server on major.minor: @modernrelay/omnigraph@X.Y.* targets omnigraph-server@X.Y.*. See ModernRelay/omnigraph-ts for the monorepo.

Docs

Build And Test

cargo build --workspace
cargo check --workspace
cargo test --workspace

Notes:

  • Rust stable toolchain, edition 2024
  • CI runs cargo test --workspace --locked
  • Full CI and some local test flows require protobuf-compiler
  • S3 integration tests expect an S3-compatible endpoint such as RustFS

Workspace Crates

  • crates/omnigraph-compiler: shared schema/query parser, typechecker, catalog, and IR lowering (zero Lance dependency)
  • crates/omnigraph (package omnigraph-engine): storage/runtime, branching, merge, change detection, query execution, and embeddings
  • crates/omnigraph-policy: Cedar policy compilation and enforcement
  • crates/omnigraph-api-types: shared HTTP wire DTOs used by both the server and the CLI
  • crates/omnigraph-cluster: cluster config validation, planning, and apply (the control plane)
  • crates/omnigraph-server: Axum HTTP server — cluster-first, serving N graphs under /graphs/{id}/…
  • crates/omnigraph-cli: CLI for graph lifecycle (init/load), query/mutate, branch/commit/merge, schema/lint, snapshot/export, cluster control, policy/queries, profiles, and maintenance (optimize/repair/cleanup)

Contributing

Please open an issue, spec, or design discussion before sending large code changes. Design feedback and concrete problem statements are the fastest way to collaborate on the roadmap.

Community

Join the Omnigraph Slack community to ask questions, share feedback, and follow development.