What is Omnigraph?
A typed property graph database with git-style branching, graph queries, search, and a deployable server runtime.
Most agent systems spread state across too many places. The workflow engine knows one thing, the vector store another, the database another. That works for a demo. It breaks once multiple agents need to read the same state, write changes back, react to each other, and leave behind something you can inspect later.
Omnigraph gives agent systems a single, structured state core: a typed property graph with branching, queries, search, and a deployable server runtime.
How it works
A schema defines the entities and relationships your agents work with:
node Task {
slug: String @key
title: String @index
status: enum(pending, in_progress, completed)
}
edge DependsOn: Task -> TaskA query describes the condition that matters:
query unblocked_tasks() {
match {
$t: Task { status: "pending" }
not {
$t dependsOn $dep
$dep.status != "completed"
}
}
return { $t.slug, $t.title }
}That same query can answer a read request, power a hook that fires when new work appears, and show the effect of a branch before you merge it.
Key capabilities
- Typed graph queries: Match, traverse, filter, and project over typed
graph entities using the
.gqquery language. - Git-style branching: Let agents propose changes on branches, inspect what changed, and merge back when ready.
- 6 search modes: Full-text, fuzzy, BM25, phrase, vector KNN, hybrid with reciprocal rank fusion.
- Hooks for coordination: React to graph changes or query-result changes without building a separate event layer.
- CLI and HTTP API: Operate locally with the CLI or remotely via the server.
Under the hood
Omnigraph uses Lance as the storage backbone. The graph runtime is layered on top:
_schema.pgstores the schema source_manifest.lancepins a consistent snapshot across the graphnodes/andedges/hold per-type Lance datasets opened for that snapshot- traversal, search, branching, diffing, and time-travel all run against the same snapshot model
.pg schema -> Catalog -> Per-type Lance datasets
.gq queries -> Typecheck -> IR -> Executor (scan + index + traversal)Get started
- Install: Get the binaries with curl, Homebrew, or a source build.
- Quick Start: Create a graph, run a query, branch a change, and merge it back in minutes.
- Schema: Define your domain with typed nodes, edges, interfaces, and constraints.
- Queries: Write typed graph queries with traversal, filtering, and projections.
- Branching: Propose changes on isolated branches, diff them, and merge back when ready.
- Deployment: Run Omnigraph locally, on object storage, or in a containerized server deployment.