Omnigraph — графовая база данных с ветвлением для общей памяти ИИ-агентов

· 6 мин чтения
graph-database ai-agents context-engineering knowledge-graph rust
📂 Исходный код на GitHub

Графовая база данных, которая работает поверх S3-совместимого объектного хранилища и хранит данные в формате Lance. Объявляет схемы, запросы и политики доступа как код в cluster.yaml, поддерживает ветки и слияние изменений по всему графу, проверяет каждую запись политиками Cedar. Лицензия MIT, язык — Rust.

Omnigraph — графовая база данных с ветвлением для общей памяти ИИ-агентов

Omnigraph — это графовая база данных на Rust, которая хранит данные прямо в объектном хранилище: S3, R2, GCS, MinIO или RustFS. Поддерживает ветвление в духе Git — агент пишет в свою ветку, её можно посмотреть и только потом слить с основной. Лицензия MIT, проект открытый.

Сделали её для работы нескольких ИИ-агентов над общей моделью предметной области. Агенты не держат контекст у себя в памяти, а читают и записывают его в один общий граф. Сами агенты при этом остаются простыми программами без своего состояния.

Какую задачу решает

Когда вы пишете агента, который живёт долго — не один запрос, а десятки шагов, — рано или поздно встаёт вопрос: где лежит накопленный контекст. Файл в рабочей папке? Запись в обычной базе? Текст в промпте, который надо каждый раз перечитывать целиком?

Omnigraph предлагает ответ: хранить контекст в графе, где у записей есть связи и проверяемые типы. Агент спрашивает граф одним запросом и получает нужные связи, векторный поиск и совпадения по тексту одновременно.

Отдельная деталь — ветвление. Агент не обязан писать в основную копию. Он создаёт ветку, работает в ней, а человек или другой агент смотрит на изменения и принимает решение о слиянии. Для агентов это заметно безопаснее, чем запись напрямую.

Что внутри

Возможность Что это даёт
Типизированная модель Схемы в файлах .pg объявляют типы узлов, типы связей, ключи и ограничения. Движок проверяет их при каждой записи.
Гибридный поиск Обход графа, векторный поиск по близости и полнотекстовый поиск выполняются в одном движке, а результаты объединяются алгоритмом Reciprocal Rank Fusion.
Ветвление Ветка на агента или на задачу, слияние в три стороны и возможность вернуться к состоянию графа на любой момент в прошлом.
Конфигурация как код Файл cluster.yaml описывает графы, схемы, запросы, провайдеры эмбеддингов и политики.
Права доступа как код Политики Cedar проверяются на сервере при каждом изменении — отдельно для каждого графа или для всего сервера.
Открытый формат Данные лежат в формате Lance, версионируются и не покидают ваше хранилище.

Ключевая деталь в последней строке. Обычная база прячет данные внутри своего собственного формата на сервере. Здесь база — это слой над S3: сами файлы лежат в вашем хранилище, а служебные данные — журнал изменений, каталог запросов и графы — лежат там же, по пути, указанному в cluster.yaml.

Что на этом строят

В репозитории перечислены пять сценариев, для которых база подходит:

  • Корпоративная память. Знания компании собраны в один граф, доступный любому агенту.
  • Память агента. Долговременная память с версиями: своя ветка на агента или на задачу, слияние после проверки.
  • Граф контекста. Записанные решения и неформализованные знания компании — с возможностью потом их найти.
  • Граф разработки. Задачи и зависимости между ними, которые агенты читают и обновляют.
  • Слой данных для исследований. Эксперименты и прогоны пишутся в ветки, версионируются и потом используются для обучения и оценки моделей.

Установка

Ставится одной командой, ставит CLI omnigraph и сервер omnigraph-server в ~/.local/bin:

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

Через Homebrew:

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

Поднять базу с помощью агента

Проект рассчитан на то, что его будет настраивать ИИ-агент. Первый путь — добавить агенту готовый сценарий работы из репозитория:

npx skills add ModernRelay/omnigraph@omnigraph

Второй путь — вставить агенту вроде Claude Code или Codex вот такой текст:

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.

Готовые графы с уже заполненными данными лежат в отдельном репозитории — https://github.com/ModernRelay/omnigraph-cookbooks. Там есть корпоративная память, рабочая система венчурного фонда и данные по фарме.

Кластер: конфигурация как код

Развёртывание в проекте называется кластером. Это обычная директория, в которой описано, какие графы живут в базе:

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
graphs:
  knowledge:
    schema: people.pg
    queries: queries/
policies:
  base:
    file: base.policy.yaml
    applies_to: [knowledge]

Подход как в Terraform: сначала смотрите, что изменится, потом применяете.

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

apply создаёт графы, применяет схемы и публикует запросы и политики. Команда идемпотентна: её можно запускать повторно, ничего не сломается.

Отдельно про хранилище. Локально можно поднять RustFS или MinIO — база пишет туда через обычный S3 API. В облаке подойдут S3, R2 или GCS с переменными AWS_*. Работа с Azure объявлена как предварительная и требует отдельной обвязки — инструкции в руководстве по развёртыванию.

Запросы, изменения и ветки

Сервер и граф по умолчанию один раз прописываются в ~/.omnigraph/config.yaml, после чего обычные команды остаются короткими:

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

Запросы и изменения вызываются по имени — они заранее описаны в файлах .gq, которые лежат рядом со схемой.

Ветки создаются и сливаются отдельными командами:

omnigraph branch create --from main agent/ingest-42
omnigraph branch merge  agent/ingest-42 --into main

Есть и короткая форма: алиас привязывает сервер, граф и запрос к одному имени, и тогда omnigraph alias triage делает всё сразу. Для разовых задач у любой команды есть --server и --graph.

Безопасность и права доступа

Права описаны политиками Cedar и проверяются на сервере при каждом изменении. Это значит, что HTTP-сервер, CLI и встроенная библиотека подчиняются одним и тем же правилам — обойти проверку через другой интерфейс нельзя.

Политика привязывается к графу или ко всему серверу через applies_to в cluster.yaml. Действие можно сузить до отдельного графа или отдельной ветки. Токены хранятся в виде хешей и сравниваются за постоянное время. Имя пользователя определяется сервером из токена — клиент не может подставить своё. Подробности в руководстве по политикам.

Клиенты и библиотеки

Клиент Для чего
TypeScript SDK Типизированная работа из Node.js и TypeScript, исходники в https://github.com/ModernRelay/omnigraph-ts
MCP-сервер Связка базы с ИИ-хостами вроде Claude и Codex
HTTP / OpenAPI Любой язык, описание контракта лежит в спецификации сервера
Python SDK Заявлен как «скоро», на момент публикации README ещё не вышел

Пакеты TypeScript и MCP-сервера версионируются вместе с omnigraph-server.

Сборка и тесты

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

Нужна стабильная версия Rust и edition 2024. Два набора тестов — корпус GQT и DST — запускаются отдельно, обычный cargo test --workspace без исключений их не запустит. Полному CI и части локальных прогонов требуется protobuf-compiler, а интеграционные тесты с S3 ждут запущенного S3-совместимого сервера, например RustFS. Команды и настройки CI описаны в документе по тестированию.

Документация

Основные разделы: руководство по кластерам, руководство по развёртыванию, справочник CLI, а также разделы про схемы, запросы и поиск. Для агентов есть краткое описание сайта в формате llms.txt. Лицензия — MIT.

Источник: https://github.com/ModernRelay/omnigraph