omnigraph README

The project's README from github.com/ModernRelay/omnigraph. As one markdown file: README.md.

OMNIGRAPH

Lakehouse graph database for context assembly & multi-agent coordination
Multimodal retrieval · Git-style branching · object-storage native

Quickstart  ·  Docs  ·  Cookbooks  ·  CLI

License: MIT Rust


Omnigraph is the operational state and coordination layer for fleets of agents.
Run it as a server, declared as code; hundreds of agents operate and enrich the graph on parallel isolated branches, and every change is reviewed and merged safely.

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

Key capabilities

Capability What it gives you
Declared as code A cluster.yaml declares graphs, schemas, stored queries, embedding providers, and policies; cluster apply converges it and omnigraph-server brings every graph online at /graphs/{id}/….
Built for fleets of agents Hundreds of agents enrich the graph on parallel isolated branches; changes are reviewed and merged safely, Git-style, across the whole graph.
Multimodal retrieval Graph traversal + vector ANN + full-text + Reciprocal Rank Fusion in one query runtime, for context assembly.
Security as code Cedar policy enforced server-side on every mutation, per-graph and server-wide; bearer auth; actor/audit tracking.
Runs on your infrastructure Local storage or any S3-compatible object store (RustFS / MinIO, AWS S3 / R2 / GCS, Azure). VPC, on-prem, hybrid; your data never leaves your store.
Open, versioned storage Lance columnar format: branchable, time-travelable, with native blob-as-data (docs, images, video).

What you can build

Use case What it's for
Company brain Org knowledge unified into one graph every agent can query
Agentic memory Durable, versioned memory: a branch per agent or per task, merged on review
Context graph Decision traces and codified tribal knowledge for retrieval
Dev graph Issues & dependency model that coding agents read and write
R&D / ML data layer Experiments and trials written into branches, versioned for training & eval

Install

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

This installs omnigraph (CLI) and omnigraph-server into ~/.local/bin from published release binaries. Or with Homebrew:

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

Set it up with an AI agent

Omnigraph is built to be run by coding agents. Two ways in:

Teach your agent the playbook. This repo ships the omnigraph agent skill: the operational playbook covering cluster mode, the two config surfaces, schema evolution, query linting, data writes, branches, Cedar policy, and the common gotchas.

npx skills add ModernRelay/omnigraph@omnigraph

Or have an agent set it up from scratch. Paste this into Claude Code, Codex, or any agent that can read a URL and run a shell command:

Help me set up Omnigraph

1. Read the docs at https://github.com/ModernRelay/omnigraph, starting with
   docs/user/clusters/index.md, then docs/user/deployment.md.
2. Skim the starter graphs and seed data in the cookbooks:
   https://github.com/ModernRelay/omnigraph-cookbooks
3. Ask me what I want to build (company brain, agent memory, dev graph,
   research / R&D layer, …). Then stand up a cluster for it, load a little
   data, and run a query so I can see it working.

For ready-to-run graphs with real seed data (company brain, VC operating system, pharma & industry intel), ModernRelay/omnigraph-cookbooks is the fastest way to see Omnigraph shaped to a real domain.

Deploy

A deployment is a cluster: a multigraph config directory that declares its graphs, schemas, stored queries, and policies as code. You manage it Terraform-style: cluster plan previews the diff, cluster apply converges it. omnigraph-server then boots from the cluster and brings every graph online at /graphs/{id}/…, each behind its own policy.

1. Declare the cluster.

company-brain/
├── cluster.yaml
├── people.pg          # schema for the "knowledge" graph
├── queries/           # stored queries: the .gq files ARE the declaration
│   └── people.gq
└── base.policy.yaml   # a Cedar policy bundle
# cluster.yaml
version: 1
metadata:
  name: company-brain
storage: s3://company/clusters/company-brain   # ledger, catalog, and graph data live here
graphs:
  knowledge:
    schema: people.pg
    queries: queries/                          # every `query <name>` in queries/*.gq registers
policies:
  base:
    file: base.policy.yaml
    applies_to: [knowledge]                    # graph-bound; use [cluster] for server-level

2. Stand up your object store. On-prem, run RustFS (or MinIO); Omnigraph writes Lance over the standard S3 API. In the cloud, use S3 / R2 / GCS through AWS_*. Native az:// roots are also available as a qualification preview. Every Azure writer, including cluster apply and the server, must use the checked-in admission wrapper; follow the Azure deployment guide instead of running the bare commands below.

3. Converge and run. apply creates each graph, applies its schema, and publishes queries and policies into the content-addressed catalog. It is idempotent; re-running is always safe.

omnigraph cluster validate   # parse + typecheck everything
omnigraph cluster plan       # preview what apply would do
omnigraph cluster apply      # converge

# Boot the server from the cluster dir; storage resolves through cluster.yaml
omnigraph-server --cluster company-brain --bind 0.0.0.0:8080

The bare commands above describe local and S3 deployments. See the cluster guide for the day-2 loop (edit → plan → apply → restart), approval gates for destructive changes, drift inspection, and recovery; the deployment guide for containers, AWS/Railway/Azure, auth, and the object-store environment contracts.

Query and mutate

Set a default server and graph once in ~/.omnigraph/config.yaml, and the everyday commands stay short. Stored queries and mutations run by name:

omnigraph query  search_docs --params '{"q":"AI safety"}'
omnigraph mutate add_person  --params '{"name":"Mina"}'

# Branch, review, merge across the whole graph; agents write in isolation
omnigraph branch create --from main agent/ingest-42
omnigraph branch merge  agent/ingest-42 --into main

An alias is shorter still: bind a server, graph, and stored query to one name, then omnigraph alias triage runs it. For an ad-hoc target, any command still takes --server <name|url> --graph <id> (or --store <uri> for a local graph). See the CLI reference.

Security & governance

See the policy guide.

Clients & SDKs

Client Use it for Where
TypeScript SDK typed access from Node / TS @modernrelay/omnigraph · source
MCP server bridge Omnigraph to LLM hosts (Claude, Codex, …) @modernrelay/omnigraph-mcp
HTTP / OpenAPI any language, the wire contract the server's OpenAPI spec
Python SDK typed access from Python coming soon

Both npm packages are versioned in lockstep with omnigraph-server.

Local quick test (no server)

1-min setup to try it: an embedded, local file-backed graph (no server, no object store). For dev and experiments; production is the deployed cluster above.

cat > schema.pg <<'PG'
node Source {
  slug: String @key
  title: String
}

node Claim {
  slug: String @key
  statement: String
}

edge Supports: Source -> Claim
PG
printf '%s\n' \
  '{"type":"Claim","data":{"slug":"lower-latency","statement":"The migration reduced request latency."}}' \
  '{"type":"Source","data":{"slug":"load-test","title":"Load test report"}}' \
  '{"edge":"Supports","from":"load-test","to":"lower-latency"}' > data.jsonl

omnigraph init  --schema schema.pg ./graph.omni
omnigraph load  --data data.jsonl --mode overwrite --store ./graph.omni

# "Which sources support the lower-latency claim?"
omnigraph query --store ./graph.omni \
  --params '{"claim":"lower-latency"}' \
  -e 'query sources_for_claim($claim: String) {
    match {
      $claim_node: Claim { slug: $claim }
      $source supports $claim_node
    }
    return { $source.title as source }
  }'
# → Load test report

Docs

Build And Test

cargo build --workspace
cargo test --workspace --exclude omnigraph-gqt --exclude omnigraph-dst

Notes:

Workspace Crates

Contributing

Please open an issue before sending large code changes — a maintainer triages it, and the accepted label is the green light for a PR (see GOVERNANCE.md). 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.

omnigraph (ModernRelay/omnigraph)

Searching Database…

这是什么?Omnigraph 是一个湖仓原生的图数据库,充当 AI 智能体集群的运行状态与协调层,把图遍历、向量搜索和全文搜索与 Git 风格的分支结合起来,让大量智能体能安全地充实同一个共享知识图谱。
这是我要运行的服务器,还是嵌入使用的库?它以 CLI(omnigraph)加服务器(omnigraph-server)的形式交付,按声明好的 'cluster' 部署,但也可以完全无服务器地以嵌入和本地方式运行,还有 TypeScript/Python SDK 和一个 MCP 服务器供客户端访问。
怎么让它跑起来?把 CLI 和服务器从 release 二进制文件(或通过 Homebrew)安装到 ~/.local/bin,在 cluster.yaml 中声明你的图/模式/策略,然后运行 cluster apply;要快速测试,有一个 1 分钟即可建好、基于本地文件的嵌入式图,无需服务器或对象存储。
在生产环境运行需要 S3 存储桶吗?正式部署需要兼容 S3 的对象存储——RustFS、MinIO、AWS S3、Cloudflare R2、GCS 或 Azure Blob——因为 Omnigraph 通过标准 S3 API 写入其 Lance 数据。
Azure 存储和 S3 一样达到生产就绪了吗?原生 Azure(az://)支持被明确称为资格预览(qualification preview),每个 Azure 写入方都必须经过一个特殊的、随代码入库的准入包装器,而不能像 S3 那样直接运行裸命令;Python SDK 也被列为“即将推出”,尚未发布。
我的数据会留在自己的基础设施上吗?会——Omnigraph 运行在你控制的存储上,无论是本地磁盘、你自己的 VPC、本地机房还是混合部署,README 也声明你的数据绝不离开你的存储。
Git 风格的分支到底是干什么用的?数百个智能体可以同时在同一个图的并行隔离分支上工作;每次更改都像 Git pull request 一样经过审查并安全合并回来,因此实验不会破坏共享图。
AI 智能体如何连接 Omnigraph?通过一个专用 MCP 服务器(@modernrelay/omnigraph-mcp)把 Omnigraph 桥接到 Claude 或 Codex 等 LLM 宿主,另有面向 Node 的 TypeScript SDK、供任何语言使用的原始 HTTP/OpenAPI 接口,以及一个标注即将推出的 Python SDK。
写入如何防护行为异常的智能体?每条写入路径——HTTP 服务器、CLI 和嵌入式 SDK——都要经过同一个在服务器端强制执行的 Cedar 策略引擎;持有者令牌在启动时做哈希并以恒定时间比较,实际执行身份由服务器端解析,客户端无法伪造。
我可以用它构建什么东西?README 列出的用例包括:全公司范围的知识大脑、持久的按智能体/按任务的智能体记忆、决策溯源上下文图、供编程智能体读写的开发图,以及面向实验的带版本研发/机器学习数据层。
What are similar projects?ruflo, xerj, m_flow, chroma, encore, OB1, executor, memory-lancedb-pro
Size
29.9 MB
Stars
1.3K
Age
6mo
Commits · 90 Days