omnigraph

ModernRelayMIT活跃维护

基于对象存储的图数据库,支持分支和类型化本体,用 Rust 写成,适合在 S3 等存储上构建可版本化的知识图谱与上下文图。

Object-storage native graph database with branching and typed ontology

v0.15.0发布于 2026-11-09 07:58 UTC1,958star +30 / 7 天268fork同步于 2026-11-10 11:46 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | bash
硬件要求按 README 说明

README 未说明显存或 GPU 要求;存储可放本地磁盘或 S3 兼容对象存储(RustFS、MinIO、AWS S3、R2、GCS,Azure 为预览)。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

面向长时程智能体的对象存储原生图数据库,支持分支与类型化本体

基于对象存储的图数据库,支持分支和类型化本体,用 Rust 写成,适合在 S3 等存储上构建可版本化的知识图谱与上下文图。

核心能力

  • 用 .pg 模式声明节点边类型与约束,写入时强制校验
  • 单次查询融合图遍历、向量 ANN、全文检索与 RRF 排序
  • 按智能体或任务建分支,支持三方合并与全图时间旅行
  • 用 cluster.yaml 声明式管理,plan 预览、apply 收敛
  • Cedar 策略在服务端对每次写入强制执行,含审计

容易踩的坑

客户端 HTTP 契约须与服务端版本匹配,0.14 服务端要求契约 0.14;从源码构建完整 CI 和部分测试需要 protobuf-compiler;GQT 与 DST 测试套件需单独运行,直接 cargo test --workspace 会失败。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.15.0
  1. v0.15.0最新正式版2026-11-09 · 2026-11-09 07:58 UTC

    In local LDBC SF30 runs, CSV bulk loads take under half the 0.14 time. Reads on an open graph do not wait for its writes. Diffs and merges read only the data that changed. MCP exposes every graph operation except byte streams. Policy alone decides what an agent can run. An S3 cluster server stops writing at its lease deadline. This release changes @card and @unique checks, MCP flags, organization commands, saved plans and a Rust error type. Read the upgrade actions before you upgrade. Graph storage and the HTTP contract stay the same. Existing graphs open without a rebuild.

    Highlights

    CSV bulk load: SF30 in under half the 0.14 time

    Pipelined bulk load: an overwrite load csv streams from the source object to the Lance writers. Each parse partition range-reads its own 8 MiB pieces, checks uniqueness in a shared hash table and probes integer-keyed edge endpoints as rows arrive; full fragments are written while the next rows parse. The removal scan runs only when a retained-edge check needs it, and a refused load leaves no fragment. In the pull requests' LDBC SNB SF30 runs (31 overwrite statements into a fresh graph, release builds, an Apple silicon workstation on local disk), the load fell from 261 s at 0.14.0 to 87–110 s. #1141, #1147, #1158, #1178

    Reads no longer wait for a write

    Read-copy-update: an open graph's branch state is a copy-on-write value behind an atomic pointer. A read loads it without a lock; a publish, refresh or schema pass works on a copy and installs it with one compare-and-swap. A multi-table write validates and commits its tables concurrently: two serial round trips at commit instead of two per table. The first read after another process commits refreshes __manifest in 11 or 12 storage calls instead of 18 to 20 (DST cost ledger, in-memory store). #1228, #1270, #1230

    Merges at 1,024 commits: 4,168 storage requests down to 54

    Change discovery from fragment metadata: Lance keeps each row's stable row id and the version that last wrote it in its fragment's metadata. A diff across several commits of one history pairs rows by id and reads only those whose stamps differ, so its data read is flat in table size; ten updated rows in a 100,000-row type cost 277 data reads and 6.9 MB before. A merge reads candidates only from each side's changed fragments, which the exact-id primary key makes safe. After 1,024 one-row commits, a fast-forward merge sends 54 storage requests instead of 4,168 and a three-way merge 135 instead of 3,216 (GQT --measure, DST in-memory store). Diverged heads and Blob tables keep the full comparison. #1201, #1220, #1229

    MCP: every graph operation, gated by policy

    Tool parity: /mcp has a tool for every graph operation that is not a byte stream, including diff, branches_diff, commits_publish and stored mutations. Each tool calls its HTTP route's handler under the same Cedar action, so the server lists every tool and the caller's policy decides what runs. query takes GQ source or a stored read's name. A ranked read returns a ranking object: the search, its score order, whether it was exhaustive, and the score columns. #1139, #1207, #1130

    S3 clusters: no write after the lease deadline

    Deadline fencing: the storage scope holds the owner's lease deadline, and admission, each multipart part and each poll of a request check it before sending. After a process pause, whichever task resumes first sends nothing past the deadline, and a restarted server never takes the lock from an owner that still heartbeats. A conditional control-object write on S3 or Azure whose answer was lost is re-issued unchanged and read back; equal bytes mean it landed. #1221, #1176

    Upgrade actions

    Each change closes a gap between what Omnigraph declared and did. A @card minimum held or failed by how a write reached the graph. A @unique on a list or vector could never be satisfied. MCP flags hid tools the same credential could call over HTTP; policy is now the only

  2. edge-20261109-3f249ccEdge edge-20261109-3f249ccpre-release2026-11-09 · 2026-11-09 06:56 UTC
    查看更新说明

    Edge build of 3f249cc from main, published as edge-20261109-3f249cc. Edge builds are prereleases built once a day from a commit on main whose CI passed; they do not receive the qualification a stable release does. The latest stable release is v0.14.0.

    Compatibility

    This buildv0.14.0
    Version0.15.0-edge+3f249cc0.14.0
    Storage format written1616
    Storage formats servedv14 to v16v14 to v16
    HTTP contract0.140.14

    Storage. This build writes storage format 16, as v0.14.0 does.

    HTTP. This build speaks HTTP contract 0.14, as v0.14.0 does.

    Install this build

    curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | VERSION=edge-20261109-3f249cc bash
    
    iwr -UseBasicParsing https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.ps1 -OutFile install.ps1
    powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 -Version edge-20261109-3f249cc
    

    Every archive carries a build provenance attestation: gh attestation verify <archive> --repo ModernRelay/omnigraph checks that this repository's release workflow built it from 3f249cc.

    Unreleased changes

    Release notes recorded since the last stable release, as v0.15.0 will publish them.

  3. edge-20261104-60bb6a8Edge edge-20261104-60bb6a8pre-release2026-11-05 · 2026-11-05 05:44 UTC
    查看更新说明

    Edge build of 60bb6a8 from main, published as edge-20261104-60bb6a8. Edge builds are prereleases built once a day from a commit on main whose CI passed; they do not receive the qualification a stable release does. The latest stable release is v0.14.0.

    Compatibility

    This buildv0.14.0
    Version0.14.1-edge+60bb6a80.14.0
    Storage format written1616
    Storage formats servedv14 to v16v14 to v16
    HTTP contract0.140.14

    Storage. This build writes storage format 16, as v0.14.0 does.

    HTTP. This build speaks HTTP contract 0.14, as v0.14.0 does.

    Install this build

    curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | VERSION=edge-20261104-60bb6a8 bash
    
    iwr -UseBasicParsing https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.ps1 -OutFile install.ps1
    powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 -Version edge-20261104-60bb6a8
    

    Every archive carries a build provenance attestation: gh attestation verify <archive> --repo ModernRelay/omnigraph checks that this repository's release workflow built it from 60bb6a8.

    Unreleased changes

    Release notes recorded since the last stable release, as v0.14.1 will publish them.

  4. edge-20261103-03e0b62Edge edge-20261103-03e0b62pre-release2026-11-04 · 2026-11-04 05:22 UTC
    查看更新说明

    Edge build of 03e0b62 from main, published as edge-20261103-03e0b62. Edge builds are prereleases built once a day from a commit on main whose CI passed; they do not receive the qualification a stable release does. The latest stable release is v0.14.0.

    Compatibility

    This buildv0.14.0
    Version0.14.1-edge+03e0b620.14.0
    Storage format written1616
    Storage formats servedv14 to v16v14 to v16
    HTTP contract0.140.14

    Storage. This build writes storage format 16, as v0.14.0 does.

    HTTP. This build speaks HTTP contract 0.14, as v0.14.0 does.

    Install this build

    curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | VERSION=edge-20261103-03e0b62 bash
    
    iwr -UseBasicParsing https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.ps1 -OutFile install.ps1
    powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 -Version edge-20261103-03e0b62
    

    Every archive carries a build provenance attestation: gh attestation verify <archive> --repo ModernRelay/omnigraph checks that this repository's release workflow built it from 03e0b62.

    Unreleased changes

    Release notes recorded since the last stable release, as v0.14.1 will publish them.

  5. edge-20261103-36d3ea0Edge edge-20261103-36d3ea0pre-release2026-11-03 · 2026-11-03 05:20 UTC
    查看更新说明

    Edge build of 36d3ea0 from main, published as edge-20261103-36d3ea0. Edge builds are prereleases built once a day from a commit on main whose CI passed; they do not receive the qualification a stable release does. The latest stable release is v0.14.0.

    Compatibility

    This buildv0.14.0
    Version0.14.1-edge+36d3ea00.14.0
    Storage format written1616
    Storage formats servedv14 to v16v14 to v16
    HTTP contract0.140.14

    Storage. This build writes storage format 16, as v0.14.0 does.

    HTTP. This build speaks HTTP contract 0.14, as v0.14.0 does.

    Install this build

    curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | VERSION=edge-20261103-36d3ea0 bash
    
    iwr -UseBasicParsing https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.ps1 -OutFile install.ps1
    powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 -Version edge-20261103-36d3ea0
    

    Every archive carries a build provenance attestation: gh attestation verify <archive> --repo ModernRelay/omnigraph checks that this repository's release workflow built it from 36d3ea0.

    Unreleased changes

    Release notes recorded since the last stable release, as v0.14.1 will publish them.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Omnigraph is engineered for the new workload introduced by long-horizon agents: multiple agents sharing a typed world model to continuously retrieve and update context and coordinate work. Agents and UIs can become thin stateless consumers of durable state.

    Omnigraph Cloud is in private preview: join the waitlist.

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

    Capabilities

    CapabilityWhat it gives you
    Typed ontologyAgents share one enforceable model of the domain. .pg schemas declare node and edge types, keys and constraints, and the engine enforces them on every write.
    Multimodal retrievalAgents assemble high-precision & recall context in one query: graph traversal + vector ANN + full-text + Reciprocal Rank Fusion in one runtime, with filtering.
    BranchingAgents propose reviewable changes instead of writing to main: a branch per agent or task, three-way merge, time travel across the whole graph.
    Declared as codeA cluster.yaml declares graphs, schemas, stored queries, embedding providers and policies. cluster plan previews, cluster apply converges, Terraform-style.
    Security as codeCedar policy enforced server-side on every mutation, per graph or server-wide; bearer auth, server-resolved actors, audit tracking.
    Object-storage native, open formatDecoupled storage and compute. Store graphs on local disk or S3-compatible storage: RustFS / MinIO, AWS S3 / R2 / GCS, or Azure preview. Graph data uses open, versioned Lance, including Blob values.

    What you can build

    Use caseWhat it's for
    Company brainOrg knowledge unified into one graph every agent can query
    Agentic memoryDurable, versioned memory: a branch per agent or per task, merged on review
    Context graphDecision traces and codified tribal knowledge for retrieval
    Dev graphIssues & dependency model that coding agents read and write
    R&D / ML data layerExperiments 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. The omnigraph binary carries the omnigraph agent skill written for it: the operational playbook covering cluster mode, the two config surfaces, schema evolution, query linting, data writes, branches, Cedar policy, and the common gotchas. Export it where your agent loads skills, so the skill always matches the installed CLI:

    omnigraph skill export ~/.claude/skills/omnigraph --force
    

    With an older CLI that has no skill command, or none installed, npx skills add ModernRelay/omnigraph@omnigraph installs the copy on the default branch instead.

    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 cluster declares graphs, schemas, stored queries, and policies in a configuration bundle. cluster plan previews changes and cluster apply submits them to the selected destination. The cluster-only HTTP server exposes graphs at /graphs/{id}/… and activates applied changes without a restart.

    Keep desired configuration separate from its destination:

    company-brain/
    ├── cluster.yaml
    ├── people.pg          # schema for the "knowledge" graph
    ├── queries/           # stored queries: the .gq files ARE the declaration
    │   └── people.gq
    ├── cluster.policy.yaml # deployment permissions
    └── graph.policy.yaml   # graph permissions
    
    # cluster.yaml
    version: 1
    metadata:
      name: company-brain
    graphs:
      knowledge:
        schema: people.pg
        queries: queries/                          # every `query <name>` in queries/*.gq registers
    policies:
      cluster-access:
        file: cluster.policy.yaml
        applies_to: [cluster]
      graph-access:
        file: graph.policy.yaml
        applies_to: [knowledge]
    

    For first boot, follow the cluster guide, including writer ownership transfer and authentication. The deployment guide covers containers and object stores; Azure writers require its admission wrapper.

    The applied cluster policy must grant the authenticated operator config_manage. Schema changes also require read and schema_apply on the affected graphs. With those grants and a server target named production, deploy local edits:

    omnigraph cluster validate --config ./company-brain
    omnigraph cluster plan --target production --config ./company-brain
    omnigraph cluster apply --target production --config ./company-brain
    

    --config names the source bundle; --target names the destination. Omitting storage from the bundle uses the selected destination's root. If present, storage must match that root; it never selects or redirects the target. Apply prints a deployment ID. If delivery is interrupted, inspect that ID before submitting again; see deployment recovery.

    Query and mutate

    Define a server target with default_graph and set defaults.target once in ~/.omnigraph/config.yaml (configuration), 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 target, graph, and stored query to one name, then omnigraph alias triage runs it. Data commands use --target NAME for a configured server or managed resource, plus --graph ID when needed. Use --target ./graph.omni for a standalone local graph. Control-plane login and organization operations use --profile; see operator configuration.

    Security & governance

    • Engine-wide enforcement: every write path goes through the same Cedar gate, so the HTTP server, the CLI, and the embedded SDK obey identical rules.
    • Declared in the cluster: a policy bundle is bound to graphs (or the whole server) via policies: → applies_to.
    • Scoped: rules apply per graph, per branch, or server-wide.
    • Static server credentials: static bearer tokens are hashed at startup and compared in constant time.
    • Forge-proof identity: the actor is resolved server-side from the token; clients can't set it.

    See the policy guide.

    Clients & SDKs

    ClientUse it forWhere
    TypeScript SDKtyped access from Node / TS@modernrelay/omnigraph · source
    Built-in MCPconnect an agent to the server's /mcp, directly or through omnigraph mcp --target NAMEMCP guide
    HTTP / OpenAPIuse the wire contract from any languageHTTP guide · OpenAPI

    Match the client's HTTP contract to the server's. The 0.14 server requires contract 0.14; see client availability before selecting an npm package.

    Docs

    Build and test

    cargo build --workspace --locked
    cargo test --workspace --exclude omnigraph-gqt --exclude omnigraph-gqt-served --exclude omnigraph-dst --locked \
      --features omnigraph-engine/failpoints,omnigraph-cluster/failpoints
    

    Notes:

    • Rust stable toolchain, edition 2024
    • The GQT corpus (cargo test -p omnigraph-gqt) and the DST suite (cargo test from crates/omnigraph-dst, which supplies its process environment) run separately; a plain cargo test --workspace starts the DST binaries without that environment and they refuse. Commands and CI gates: docs/dev/testing.md
    • Full CI and some local test flows require protobuf-compiler
    • S3 integration tests expect an S3-compatible endpoint such as RustFS

    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.