High-performance property graph database with native vector search and binary-RPC-first clients
2.0K
High-performance property graph database with native vector search.
Nexus is a Neo4j-inspired graph engine written in Rust, designed for read-heavy workloads, retrieval-augmented generation (RAG) systems, and hybrid graph + vector search. Ships openCypher + native HNSW vector search in a single binary.
# Pull + run (HTTP API only, auth off for local dev)
docker run -d \
--name nexus \
-p 15474:15474 \
-p 15475:15475 \
-v nexus-data:/app/data \
-e NEXUS_AUTH_ENABLED=false \
hivehub/nexus:latest
# Smoke-test
curl http://localhost:15474/health
# Cypher over HTTP
curl -X POST http://localhost:15474/cypher \
-H "Content-Type: application/json" \
-d '{"query":"CREATE (n:Person {name:\"Alice\"}) RETURN n.name","parameters":{}}'
| Tag | Contents |
|---|---|
latest, 2.3.2 | Reliability bug-fix release (GH #11–#13): UNWIND-driven writes (UNWIND [...] AS row MERGE/SET ...) persist every row in one statement; property indexes survive a restart (definitions persisted + rebuilt at startup); fixed a sustained-write 100% CPU busy-loop (CALL { ... } IN TRANSACTIONS infinite loop + O(N)-per-write label stats). |
2.3.1 | Read/MERGE index line (GH #7–#9): POST /cypher accepts "parameters": null; read MATCH (n:L {p:v}) uses a typed property-index seek (NodeIndexSeek) instead of a full scan; CREATE INDEX via the API registers + backfills the typed index. |
2.3.0 | Bug-fix release (GH #3–#6): $param read-path binding + parameters body key, durable property-store reopen, GROUP BY by expression, UTF-8 /cypher bodies. |
2.2.0 | Planner unindexed-property notification + slow-query observability. |
2.1.0 | Caller-supplied external node IDs (_id) with ON CONFLICT ERROR/MATCH/REPLACE, six-SDK parity helpers. |
2.0.0, v2.0.0 | Phase-8 ship train: encryption-at-rest core + KMS + WAL, quantified-path patterns, query-plan cache. |
Pin a specific tag (e.g. hivehub/nexus:2.3.2) for production. latest floats forward on every release.
Every tag ships the HTTP API (:15474) and the binary RPC
transport (:15475) the first-party SDKs use by default.
dhi.io/debian-base:trixie-dev (Docker Hardened Image, glibc 2.41)./usr/local/bin/nexus-server (single statically-linked
release build of the workspace).nexus (uid 1000), non-root./app/data — mount a volume here for
persistence./app/config — optional, for config.yml.| Port | Purpose | Notes |
|---|---|---|
15474 | HTTP API (/cypher, /knn_traverse, /health, /stats, …) | Primary entry point for REST clients. |
15475 | Native binary RPC (nexus://host:15475) | SDK default since v1.10. Leave unpublished for HTTP-only deployments and set [rpc].enabled = false in config.yml. |
| Variable | Default | Effect |
|---|---|---|
NEXUS_ADDR | 0.0.0.0:15474 | HTTP bind address. |
NEXUS_DATA_DIR | /app/data | Persistent data directory (mount a volume). |
NEXUS_AUTH_ENABLED | true | Enable bearer-token authentication on HTTP + RPC. |
NEXUS_AUTH_REQUIRED_FOR_PUBLIC | true | Reject unauthenticated requests when binding to a non-localhost address. |
NEXUS_ROOT_USERNAME | admin | Initial root user name when auth is enabled. |
NEXUS_ROOT_PASSWORD | (unset) | Initial root password. Prefer NEXUS_ROOT_PASSWORD_FILE for production. |
NEXUS_ROOT_PASSWORD_FILE | (unset) | Path to a file containing the root password. Mount via docker run --secret or compose secrets. |
NEXUS_ROOT_ENABLED | true | Provision the root user on first boot. |
NEXUS_DISABLE_ROOT_AFTER_SETUP | false | Disable the root user once you have provisioned a replacement admin — recommended for production. |
RUST_LOG | info | Log level (trace, debug, info, warn, error). |
mkdir -p secrets
echo "$(openssl rand -hex 32)" > secrets/root_password.txt
chmod 600 secrets/root_password.txt
docker run -d \
--name nexus \
-p 15474:15474 \
-p 15475:15475 \
-v nexus-data:/app/data \
-v $(pwd)/secrets/root_password.txt:/run/secrets/nexus_root_password:ro \
-e NEXUS_ROOT_USERNAME=admin \
-e NEXUS_ROOT_PASSWORD_FILE=/run/secrets/nexus_root_password \
-e NEXUS_AUTH_ENABLED=true \
-e NEXUS_DISABLE_ROOT_AFTER_SETUP=true \
hivehub/nexus:latest
services:
nexus:
image: hivehub/nexus:latest
container_name: nexus
ports:
- "15474:15474"
- "15475:15475"
volumes:
- nexus-data:/app/data
- ./config:/app/config:ro
environment:
NEXUS_ROOT_USERNAME: admin
NEXUS_ROOT_PASSWORD_FILE: /run/secrets/nexus_root_password
NEXUS_AUTH_ENABLED: "true"
RUST_LOG: info
secrets:
- nexus_root_password
restart: unless-stopped
volumes:
nexus-data:
driver: local
secrets:
nexus_root_password:
file: ./secrets/root_password.txt
The image ships a HEALTHCHECK that polls /health every 30 s:
docker inspect --format='{{.State.Health.Status}}' nexus
# healthy
Programmatic probe:
curl -sf http://localhost:15474/health | jq .status
# "Healthy"
cargo +nightly test --workspace suite is green)._id): caller-supplied stable identifiers on
nodes with ON CONFLICT ERROR/MATCH/REPLACE policies, REST surface
(POST /data/nodes + GET /data/nodes/by-external-id), Cypher
integration (CREATE/MERGE/MATCH (n {_id: ...})), and parity
helpers in all six first-party SDKs. New in 2.1.0.db.index.fulltext.* Neo4j-compatible procedure
surface, and crash-recovery via WAL replay.f32 embeddings with
SIMD-accelerated distance kernels (AVX-512 → AVX2 → SSE4.2 →
NEON → scalar).Point type (Cartesian / WGS-84, 2D / 3D),
point.withinBBox / withinDistance / azimuth /
distance predicates, spatial.bbox / distance /
nearest / interpolate procedures with ERR_CRS_MISMATCH
/ ERR_BBOX_MALFORMED error taxonomy.DatabaseManager.nexus:// natively for p95 sub-millisecond
round-trips.Apache 2.0. © HiveLLM Contributors.
Content type
Image
Digest
sha256:7f178f61e…
Size
10.1 MB
Last updated
3 months ago
docker pull hivehub/nexus