SkillAgentSearch skills...

NornicDB

NornicDB is a low-latency graph + vector, MVCC database with sub-ms writes, and sub 10ms HNSW search + graph traversal, uses Neo4j drivers (Bolt/Cypher) and qdrant's gRPC drivers so you can switch with no changes, then adding intelligent features like LLM inference, embeddings, HNSW+rerank search, GPU acceleration, Auto-TLP, Memory Decay, and MC

Install / Use

/learn @orneryd/NornicDB

README

<p align="center"> <img src="https://raw.githubusercontent.com/orneryd/NornicDB/refs/heads/main/docs/assets/logos/nornicdb-logo.svg" alt="NornicDB Logo" width="200"/> </p> <h1 align="center">NornicDB</h1> <p align="center"> <strong>The Graph Database That Learns</strong><br/> Neo4j-compatible • GPU-accelerated • Memory that evolves </p> <p align="center"> <img src="https://img.shields.io/badge/version-1.0.27-success" alt="Version 1.0.27"> <a href="https://coveralls.io/github/orneryd/NornicDB?branch=main"><img src="https://coveralls.io/repos/github/orneryd/NornicDB/badge.svg?branch=main" alt="Coveralls Report"></a> <a href="https://hub.docker.com/u/timothyswt"><img src="https://img.shields.io/badge/docker-ready-blue?logo=docker" alt="Docker"></a> <a href="https://neo4j.com/"><img src="https://img.shields.io/badge/neo4j-compatible-008CC1?logo=neo4j" alt="Neo4j Compatible"></a> <a href="https://github.com/qdrant/qdrant"><img src="https://img.shields.io/badge/qdrant-compatible-008CC1?logo=qdrant" alt="Qdrant Compatible Compatible"></a> <a href="https://go.dev/"><img src="https://img.shields.io/badge/go-%3E%3D1.26-00ADD8?logo=go" alt="Go Version"></a> <a href="https://goreportcard.com/report/github.com/orneryd/nornicdb"><img src="https://goreportcard.com/badge/github.com/orneryd/nornicdb" alt="Go Report Card"></a> <a href="LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue" alt="License"></a> </p> <p align="center"> <a href="https://discord.gg/yszYHrxp4N"><img src="https://img.shields.io/badge/discord-community-00ADD8?logo=discord" alt="Discord Community Server"></a> </p> <p align="center"> <a href="#quick-start">Quick Start</a> • <a href="#why-switch-from-neo4j">Why Switch</a> • <a href="#what-problem-does-this-solve">Problem</a> • <a href="#why-nornicdb-is-different">Why Different</a> • <a href="#performance-snapshot">Benchmarks</a> • <a href="#features">Features</a> • <a href="#docker-images">Docker</a> • <a href="#documentation">Docs</a> • <a href="#contributors">Contributors</a> </p>

Try It With One Command

# arm64 / Apple Silicon
docker run -d --name nornicdb -p 7474:7474 -p 7687:7687 -v nornicdb-data:/data timothyswt/nornicdb-arm64-metal-bge:latest

# amd64 / CPU only
docker run -d --name nornicdb -p 7474:7474 -p 7687:7687 -v nornicdb-data:/data timothyswt/nornicdb-amd64-cpu-bge:latest

Open http://localhost:7474 for the admin UI. For NVIDIA CUDA hosts, use timothyswt/nornicdb-amd64-cuda-bge:latest. For Vulkan hosts, use timothyswt/nornicdb-amd64-vulkan-bge:latest.


What Problem Does This Solve?

NornicDB is a high-performance graph database designed for AI agents and knowledge systems. It speaks Neo4j's language (Bolt protocol + Cypher) so you can switch with zero code changes, while adding intelligent features that traditional databases lack.

NornicDB automatically discovers and manages relationships in your data, weaving connections that let meaning emerge from your knowledge graph.

Transactional Guarantees & Isolation

NornicDB implements Snapshot Isolation at the storage layer. Every transaction is anchored to a specific MVCC version at begin time, providing a consistent point-in-time view of the graph across nodes, edges, and properties.

Read consistency is repeatable within a transaction. A transaction sees its own buffered writes, but it does not observe commits from concurrent writers that land after its read snapshot. Point lookups and snapshot-visible graph scans resolve against the same anchored version, so readers do not see partial commits or mid-transaction phantom changes.

Conflict detection follows first-updater-wins semantics at commit. If two transactions modify the same node or edge, or if one transaction deletes a node while another transaction changes adjacent graph structure against an older snapshot, the later committer receives a normalized ErrConflict.

Historical lookups remain explicit. MVCC pruning preserves the current head and a retained floor per logical key, which acts as the Minimum Retained Snapshot for that key. Requests below that retained floor fail safely with ErrNotFound rather than scanning sparse history.

Current-only search remains intentionally separate from historical MVCC state, and the MVCC prune/search benchmark is a structural integrity smoke test rather than a blanket claim about every workload. NornicDB implements standard Snapshot Isolation semantics at the storage layer.

Note: As a standard Snapshot Isolation implementation, NornicDB permits write skew.

Why NornicDB Is Different

  • Neo4j-compatible by default: Bolt + Cypher support for existing drivers and applications.
  • Built for AI-native workloads: vector search, memory decay, and auto-relationships are first-class features.
  • Hardware-accelerated execution: Metal/CUDA/Vulkan pathways for high-throughput graph + semantic workloads.
  • Operational flexibility: full images (models included), BYOM images, and headless API-only deployments.
  • Canonical graph ledger support: versioned facts, temporal validity, as-of reads, queryable txlog, and receipts for audit-oriented systems.

What Recent Deep-Dives Show

  • Hybrid execution model (streaming fast paths + general engine): NornicDB uses shape-specialized streaming executors for common traversal/aggregation patterns while retaining a general Cypher path for coverage and correctness.
  • Runtime parser mode switching: the default nornic mode minimizes hot-path overhead, while antlr mode prioritizes strict parsing and diagnostics when debugging/query validation matters.
  • Measured parser-path deltas on benchmark suites: internal Northwind comparisons show large overhead differences on certain query shapes when full parse-tree paths are used, which is why default production mode is optimized for lower overhead.
  • HNSW build acceleration from insertion-order optimization: BM25-seeded insertion order reduced a 1M embedding build from ~27 minutes to ~10 minutes (~2.7x) in published tests by reducing traversal waste during construction, without changing core quality knobs.
  • Shared seed strategy across indexing stages: the same lexical seed extraction supports HNSW insertion ordering and improves k-means centroid initialization spread for vector pipeline efficiency.

Read more:

Performance Snapshot

LDBC Social Network Benchmark (M3 Max, 64GB):

| Query Type | NornicDB | Neo4j | Speedup | | ----------------------------- | ------------- | ----------- | ------- | | Message content lookup | 6,389 ops/sec | 518 ops/sec | 12x | | Recent messages (friends) | 2,769 ops/sec | 108 ops/sec | 25x | | Avg friends per city | 4,713 ops/sec | 91 ops/sec | 52x | | Tag co-occurrence | 2,076 ops/sec | 65 ops/sec | 32x |

See full benchmark results for complete methodology and additional workloads.

Quick Start

Docker (Recommended)

# Apple Silicon (includes bge-m3 embedding model)
docker run -d --name nornicdb \
  -p 7474:7474 -p 7687:7687 \
  -v nornicdb-data:/data \
  timothyswt/nornicdb-arm64-metal-bge:latest  # Apple Silicon
  # timothyswt/nornicdb-amd64-cuda-bge:latest  # NVIDIA GPU

Open http://localhost:7474 for the admin UI.

Need a different image/profile (Heimdall, BYOM, CPU-only, Vulkan, headless)?

From Source

git clone https://github.com/orneryd/NornicDB.git
cd NornicDB
go build -o nornicdb ./cmd/nornicdb
./nornicdb serve

Connect

Use any Neo4j driver — Python, JavaScript, Go, Java, .NET:

from neo4j import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687")
with driver.session() as session:
    session.run("CREATE (n:Memory {content: 'Hello NornicDB'})")

Why Switch from Neo4j?

  • 12x-52x faster on published LDBC workloads (same hardware comparisons).
  • Native graph + vector in one engine (no separate vector sidecar required).
  • GPU acceleration paths (Metal/CUDA/Vulkan) for semantic + graph workloads.
  • Drop-in compatibility via Bolt + Cypher for existing applications.
  • Canonical graph ledger model for temporal validity, as-of reads, and audit-oriented mutation tracking.

Why Switch from Qdrant?

  • Graph + vector in one engine: combine semantic retrieval with native graph traversal and Cypher queries.
  • Qdrant gRPC compatibility preserved: keep Qdrant-style gRPC workflows while adding graph-native capabilities.
  • Hybrid retrieval built in: vector + BM25 fusion and optional reranking in the same query pipeline.
  • Canonical truth modeling: versioned facts, temporal validity windows, and as-of reads for governance-heavy use cases.
  • Protocol flexibility: use REST, GraphQL, Bolt/Cypher, Qdrant-compatible gRPC, and additive Nornic gRPC on one platform.

Build It Yourself

Detailed local build, cross-compile, and packaging instructions:

Features

🔌 Neo4j Compatible

Drop-in replacement for Neo4j. Your existing code works unchanged.

  • Bolt Protocol — Use official Neo4j drivers
  • Cypher Queries — Full query language support
  • Schema Management — Constraints, indexes, vector indexes
  • Qdrant gRPC API Compatible — Works with Qdrant-style gRPC vector workflows

🧠 Intelligent Memory

Memory that behaves like human cognition.

| Memory Tier | Half-Life | Use Case | | -------------- | --------- | -------

Related Skills

View on GitHub
GitHub Stars318
CategoryDevelopment
Updated2h ago
Forks19

Languages

Go

Security Score

85/100

Audited on Mar 24, 2026

No findings