<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/omnigraph-wordmark-dark.svg">
<img alt="OMNIGRAPH" src="https://raw.githubusercontent.com/ModernRelay/omnigraph/HEAD/assets/omnigraph-wordmark.svg" width="420">
</picture>
</p>
<p align="center">
<strong class="">Object-storage 기반 그래프 데이터베이스로, 분기(branching) 및 타입이 지정된 온톨로지(typed ontology)를 지원합니다.</strong><br>
<sub class="">통합 검색 엔진 (vector/bm25/graph) · Git 스타일 워크플로우 · 오픈 데이터 형식 (Lance)</sub>
</p>
<p align="center">
<a href="docs/user/quickstart.md">Quickstart</a> ·
<a href="docs/user/clusters/index.md">Docs</a> ·
<a href="https://github.com/ModernRelay/omnigraph-cookbooks">Cookbooks</a> ·
<a href="docs/user/cli/reference.md">CLI</a>
<a href="https://www.omnigraph.dev/llms.txt">llms.txt</a>
</p>
<p align="center">
<a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-1b1b1f?style=flat-square&labelColor=1b1b1f"></a>
<a href="rust-toolchain.toml"><img alt="Rust" src="https://img.shields.io/badge/rust-stable-1b1b1f?style=flat-square&labelColor=1b1b1f"></a>
</p>
<hr>
Omnigraph는 장기적인 작업(long-horizon agents)으로 인해 도입된 새로운 워크로드를 위해 설계되었습니다. 여러 에이전트가 타입이 지정된 월드 모델(typed world model)을 공유하여 컨텍스트를 지속적으로 검색하고 저장하며 작업을 조정할 수 있게 합니다. 에이전트와 UI는 영속적인 상태(durable state)의 얇은 무상태 소비자(thin stateless consumers)가 될 수 있습니다.
기능 (Capabilities)
| 기능 | 제공하는 것 |
|---|
| 타입이 지정된 온톨로지 (Typed ontology) | 에이전트들이 도메인에 대한 단일하고 강제 가능한 모델을 공유합니다. .pg 스키마는 노드 및 엣지 유형, 키 및 제약 조건을 선언하며, 엔진은 모든 쓰기 작업에서 이를 강제합니다. |
| ... | |
구축할 수 있는 것 (What you can build)
| 사용 사례 | 용도 |
|---|
| 회사 지식 저장소 (Company brain) | 조직의 지식을 하나의 그래프로 통합하며, 모든 에이전트가 쿼리할 수 있습니다. |
| ... | |
설치 (Install)
curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | bash
이 명령어는 공개된 릴리스 바이너리에서 omnigraph (CLI)와 omnigraph-server를 ~/.local/bin에 설치합니다. 또는 Homebrew를 사용하면 다음과 같습니다:
brew tap ModernRelay/tap
brew install ModernRelay/tap/omnigraph
AI 에이전트를 사용하여 설정하기
Omnigraph는 코딩 에이전트에 의해 실행되도록 설계되었습니다. 두 가지 방법이 있습니다:
에이전트에게 플레이북을 가르치기. omnigraph 바이너리에는 이를 위해 작성된 omnigraph 에이전트 스킬이 포함되어 있습니다. 이 운영 플레이북은 클러스터 모드, 두 가지 구성 표면(config surfaces), 스키마 진화(schema evolution), 쿼리 린팅(query linting), 데이터 쓰기(data writes), 브랜치(branches), Cedar 정책, 그리고 일반적인 문제점들(gotchas)을 다룹니다. 이 스킬이 에이전트가 로드하는 곳에 내보내어 항상 설치된 CLI와 일치하도록 합니다:
omnigraph skill export ~/.claude/skills/omnigraph --force
skill 명령어가 없거나 설치되지 않은 구형 CLI의 경우, npx skills add ModernRelay/omnigraph@omnigraph가 기본 브랜치에 복사본을 설치합니다.
또는 에이전트에게 처음부터 설정하도록 시키기. Claude Code, Codex 또는 URL을 읽고 셸 명령어를 실행할 수 있는 모든 에이전트에 다음 내용을 붙여넣으세요:
Help me set up Omnigraph
1. Read the docs at https://github.com/ModernRelay/omnigraph, starting with
...
실제 시드 데이터(회사 브레인, VC 운영 시스템, 제약 및 산업 인텔리전스)를 갖춘 즉시 실행 가능한 그래프의 경우, ModernRelay/omnigraph-cookbooks가 Omnigraph를 실제 도메인에 맞게 보는 가장 빠른 방법입니다.
배포(Deploy)
배포는 클러스터입니다. 이는 그래프, 스키마, 저장된 쿼리 및 정책을 코드로 선언하는 멀티그래프(multigraph) 구성 디렉토리입니다. 사용자는 이를 Terraform 스타일로 관리합니다: cluster plan은 변경 사항(diff)을 미리 보여주고, cluster apply가 이를 수렴시킵니다. 그런 다음 omnigraph-server는 클러스터로부터 부팅하여 모든 그래프를 /graphs/{id}/…에서 온라인 상태로 만들고, 각각의 그래프는 자체 정책 뒤에 놓입니다.
1. 클러스터를 선언합니다.
company-brain/
├── cluster.yaml
├── people.pg #
**2. 오브젝트 스토어 설정.** 온프레미스 환경에서는 RustFS(또는 MinIO)를 실행합니다. Omnigraph는 표준 S3 API 위로 [Lance](https://github.com/lance-format/lance)를 작성합니다. 클라우드 환경에서는 `AWS_*`를 통해 S3 / R2 / GCS를 사용합니다. 네이티브 `az://` 루트도 자격 증명 프리뷰(qualification preview)로 제공됩니다. `cluster apply`와 서버를 포함한 모든 Azure 라이터는 체크인된 어드미션 래퍼(admission wrapper)를 사용해야 하며, 아래의 기본 명령을 실행하는 대신 [Azure 배포 가이드](docs/user/deployment.md#azure-blob-preview)를 따르십시오.
**3. 수렴 및 실행.** `apply`는 각 그래프를 생성하고, 스키마를 적용하며, 쿼리와 정책을 컨텐츠 주소 지정 카탈로그(content-addressed catalog)에 게시합니다. 이는 **멱등성(idempotent)**을 가지므로 재실행해도 항상 안전합니다.
```bash
omnigraph cluster validate # 모든 항목 파싱 + 타입 체크
omnigraph cluster plan # apply가 수행할 내용을 미리 보기
omnigraph cluster apply # 수렴
...
위의 기본 명령어들은 로컬 및 S3 배포를 설명합니다. 일상적인 사용 루프(edit → plan → apply → restart), 파괴적 변경에 대한 승인 게이트, 드리프트 검사(drift inspection), 복구에 대해서는 클러스터 가이드를 참조하고, 컨테이너, AWS/Railway/Azure, 인증(auth), 오브젝트 스토어 환경 계약에 대해서는 배포 가이드를 참조하십시오.
쿼리 및 변경 (Query and mutate)
~/.omnigraph/config.yaml에서 기본 서버와 그래프를 한 번 설정하면 일상적인 명령어들이 간결해집니다. 저장된 쿼리와 변경(mutations)은 이름으로 실행됩니다:
omnigraph query search_docs --params '{"q":"AI safety"}'
omnigraph mutate add_person --params '{"name":"Mina"}'
...
**별칭(alias)**은 훨씬 더 짧습니다. 서버, 그래프, 저장된 쿼리를 하나의 이름에 바인딩하면 omnigraph alias triage가 이를 실행합니다. 임시 대상의 경우, 모든 명령어는 여전히 --server <이름|url> --graph <id> (또는 로컬 그래프의 경우 --store <uri>)를 사용합니다. CLI 참조를 참조하십시오.
보안 및 거버넌스 (Security & governance)
- 엔진 전체 적용 (Engine-wide enforcement): 모든 쓰기 경로(write path)가 동일한 Cedar 게이트를 거치므로, HTTP 서버, CLI, 임베디드 SDK 모두 동일한 규칙을 따릅니다.
- 클러스터에 선언 (Declared in the cluster): 정책 번들(policy bundle)은
policies: → applies_to를 통해 그래프(또는 전체 서버)에 바인딩됩니다.
- 범위 지정 (Scoped): 규칙은 그래프별, 브랜치별, 또는 서버 전체에서 적용될 수 있습니다.
- 평문 토큰 없음 (No plaintext tokens): 베어러 토큰(bearer tokens)은 시작 시 해시되어 상수 시간(constant time)에 비교됩니다.
- 위변조 방지 신원 확인 (Forge-proof identity): 액터(actor)는 토큰으로부터 서버 측에서 해결되며, 클라이언트가 이를 설정할 수 없습니다.
정책 가이드를 참조하세요.
클라이언트 및 SDK (Clients & SDKs)
두 npm 패키지 모두 omnigraph-server와 함께 버전 관리됩니다.
문서 (Docs)
빌드 및 테스트 (Build And Test)
cargo build --workspace
cargo test --workspace --exclude omnigraph-gqt --exclude omnigraph-dst
참고 사항:
- Rust 안정화 툴체인(stable toolchain), edition 2024
- GQT 코퍼스(
cargo test -p omnigraph-gqt)와 DST 스위트(crates/omnigraph-dst에서 실행되는 cargo test, 이는 프로세스 환경을 제공함)는 별도로 실행됩니다. 단순히 cargo test --workspace를 실행하면 해당 환경 없이 DST 바이너리가 시작되며, 이 경우 실패합니다. 명령어 및 CI 게이트: docs/dev/testing.md
- CI에서는 동일한 제외 명령어를
--locked와 failpoint 기능을 사용하여 실행합니다.
- 전체 CI 및 일부 로컬 테스트 흐름에는
protobuf-compiler가 필요합니다.
- S3 통합 테스트는 RustFS와 같은 S3 호환 엔드포인트를 예상합니다.
기여 (Contributing)
큰 코드 변경 사항을 보내기 전에 이슈를 열어주세요. 유지 관리자가 이를 검토하고, accepted 라벨이 PR(Pull Request) 진행의 녹색 신호입니다 (GOVERNANCE.md 참조). 구체적인 문제 진술은 로드맵에 대해 협업하는 가장 빠른 방법입니다.
커뮤니티
질문을 하거나, 피드백을 공유하거나, 개발 과정을 따라가려면 Omnigraph Slack 커뮤니티에 참여하세요.