Neo4j-compatible • GPU-accelerated • Memory that evolves
Quick Start • What It Is • Features • Docs • Status
copperDB is an experimental graph database built in Rust. It speaks Neo4j's Bolt protocol, runs Cypher queries, indexes your data with BM25 full-text search, and embeds nodes locally with llama.cpp — all in a single binary.
It's the Rust evolution of NornicDB, rebuilt from the storage engine up for performance and safety.
copperDB is experimental. APIs may change, features are evolving, and production deployments should validate against their workload. The current parity audit identifies security, transaction, search, and lifecycle work that must land before production-readiness claims.
# Clone and build
git clone https://github.com/orneryd/copperDB.git
cd copperDB
make build
# Start the server
make runOpen http://localhost:7474 — Neo4j Browser connects automatically via Bolt on port 7687.
# Custom ports
make run HTTP_PORT=4000 BOLT_PORT=8687
# Production build with UI
cd ui && npm install && npm run build
cd ..
cargo run --release --package copperdbSee docs/BUILDING.md for full configuration options.
Authentication is enabled by default for HTTP, Bolt, and internal gRPC services. Configure it with the canonical auth.enabled setting or COPPERDB_AUTH_ENABLED. Resolution order is built-in defaults, configuration file, environment, then the explicit --no-auth bypass.
For local development without authentication, start the process with --no-auth. This is the only supported anonymous mode. Deployments configure normal operation with COPPERDB_AUTH_ENABLED.
- Bolt protocol v4.4 — connect with Neo4j Browser, Bloom, or any Bolt driver
- Cypher query language —
MATCH,CREATE,MERGE,SET,DELETE,REMOVE, aggregations, shortest-path, list comprehensions - Multi-database support —
CREATE DATABASE,SHOW DATABASES,DROP DATABASE - Transactions — auto-commit and explicit
BEGIN/COMMIT/ROLLBACK
- BM25 V2 full-text search with length normalization — ranked text retrieval across node properties
- Vector embeddings via local GGUF models (llama.cpp) — no external embedding service needed
- HTTP search endpoint —
POST /db/{database}/searchwith JSON API
- LSM-tree storage (fjall) — embedded, zero-configuration, crash-safe
- MVCC versioning — historical reads and concurrent access
- Property indexes — range, temporal, and full-text
- Knowledge policies — TTL-based decay, legal holds, erasure requests
- Local LLM inference via llama.cpp GGUF models — GPU-first with CPU fallback
- Managed embeddings — typed node embedding fields with metadata tracking
- Vector search baseline — cosine similarity scoring; maintained HNSW indexing is active parity work
- Web dashboard — React UI for database management
- Authentication — JWT + RBAC
- Encryption — AES-256-GCM at rest
- Audit logging — event sink with structured output
- Rate limiting — per-tenant throttling
Connect any Neo4j-compatible tool to bolt://localhost:7687:
| Tool | How |
|---|---|
| Neo4j Browser | Open http://localhost:7474 |
| Neo4j Bloom | Connect to bolt://localhost:7687 |
| Python | neo4j driver |
| JavaScript | neo4j-driver npm package |
| Go | neo4j-go-driver |
Example Cypher queries:
-- Create nodes and relationships
CREATE (alice:Person {name: 'Alice', bio: 'Builds reliable graph systems'})
CREATE (bob:Person {name: 'Bob', bio: 'Writes storage engines'})
CREATE (alice)-[:KNOWS {since: 2024}]->(bob)
-- Search with full-text index
CREATE FULLTEXT INDEX personBio FOR (n:Person) ON EACH [n.bio]
CALL db.search.fulltext('Person', ['bio'], 'graph systems')
-- Find shortest path
MATCH p = shortestPath((a:Person {name: 'Alice'})-[:KNOWS*]-(b:Person {name: 'Bob'}))
RETURN pcopperDB is under active development. The core engine runs a substantial Cypher subset, serves Bolt clients, and maintains local indexes. Explicit Bolt transactions and semantic/vector runtime behavior remain active parity work.
See docs/COPPERDB_NORNICDB_PARITY_PLAN.md for the audited implementation status and next steps.
Current focus: Engine parity with NornicDB — search, embeddings, Cypher coverage, and performance.
| Document | Content |
|---|---|
| docs/BUILDING.md | Build, run, test, and configure |
| docs/ARCHITECTURE.md | Project structure and design |
| docs/COPPERDB_NORNICDB_PARITY_PLAN.md | Authoritative parity audit and implementation plan |
| docs/COPPERDB_STRATEGIC_ROADMAP.md | Long-term roadmap |
MIT — see LICENSE.
Built in Rust. Powered by fjall, axum, and llama.cpp.