🐧 Linux (x86_64)
| Package | Architecture | Format | Size | Download |
|---|---|---|---|---|
| Ubuntu 24.04+ / Debian 13+ | amd64 | .deb | 64 MB | Download |
| Rocky / RHEL / Fedora / CentOS Stream | x86_64 | .rpm | — | Coming Soon |
| Generic Linux (glibc 2.39+) Use this if you can't wait for the RPM | x86_64 | .tar.gz | 84 MB | Download |
🐳 Docker RECOMMENDED
Works on all Linux distributions, macOS (via Docker Desktop), and Windows (via WSL2). No glibc version requirements.
| Image | Architecture | Base | Pull Command |
|---|---|---|---|
| xraygraphdb:v5.0.0 | amd64 | Ubuntu 24.04 | docker pull xraygraphdb.emtailabs.com/xraygraphdb:v5.0.0 |
| xraygraphdb:latest | amd64 | Ubuntu 24.04 | docker pull xraygraphdb.emtailabs.com/xraygraphdb:latest |
Or download the image as a tarball: Download .tar.gz (195 MB)
ARM64 (Apple Silicon / Graviton) Docker image available. macOS native and Windows builds coming soon.
🔌 Clients & Drivers
Python ships with a native xrayProtocol client (recommended for new code). Every other language connects via Bolt v5 using its existing Neo4j driver — no xrayGraphDB-specific install needed. Native xrayProtocol clients for the other languages are on the roadmap.
🐍 Python — native xrayProtocol
xgdb-connect — native binary client for Python 3.11+. Zero dependencies for core protocol.
Columnar batch decoding, parameterized queries, bulk insert, PING/PONG health checks.
| Package | Version | Python | Install |
|---|---|---|---|
| xgdb-connect | 1.2.2 | ≥3.11 | pip install xgdb-connect --extra-index-url https://xraygraphdb.emtailabs.com/pypi/ |
| xgdb-connect (wheel) | 1.2.2 | ≥3.11 | Download .whl |
# Connect via native xrayProtocol (port 7689)
from xgdb_connect import XrayProtocolClient
client = XrayProtocolClient("localhost", 7689,
auth_token="admin:password",
database="xraygraphdb")
cols, rows = client.execute("MATCH (n) RETURN count(n) AS total")
print(f"Nodes: {rows[0][0]}")
client.close()
Optional connector extras: pip install xgdb-connect[kafka,redis,nats] for streaming source connectors.
🌐 Other Languages — Bolt v5 (Neo4j drivers)
xrayGraphDB speaks Bolt v5 on port 7687 for compatibility with every official Neo4j driver. Install the standard driver from your language's package manager — no xrayGraphDB-specific build required. Native xrayProtocol clients for these languages are planned.
| Language | Driver | Install | Status |
|---|---|---|---|
| JavaScript / TypeScript | neo4j-driver (Node.js, browsers) |
npm install neo4j-driver |
Bolt v5 |
| Java | org.neo4j.driver:neo4j-java-driver |
maven / gradle |
Bolt v5 |
| .NET (C#, F#, VB.NET) | Neo4j.Driver (NuGet) |
dotnet add package Neo4j.Driver |
Bolt v5 |
| Go | github.com/neo4j/neo4j-go-driver/v5 |
go get github.com/neo4j/neo4j-go-driver/v5 |
Bolt v5 |
| Rust | neo4rs |
cargo add neo4rs |
Community Bolt |
| Ruby | neo4j-ruby-driver |
gem install neo4j-ruby-driver |
Community Bolt |
| JavaScript / TypeScript — native | xrayProtocol client | — | Coming Soon |
| Go — native | xrayProtocol client | — | Coming Soon |
| Java — native | xrayProtocol client | — | Coming Soon |
| .NET — native | xrayProtocol client | — | Coming Soon |
// Node.js / JavaScript — via Bolt v5 (port 7687)
const neo4j = require('neo4j-driver');
const driver = neo4j.driver('bolt://localhost:7687',
neo4j.auth.basic('admin', 'password'));
const session = driver.session({ database: 'xraygraphdb' });
const result = await session.run('MATCH (n) RETURN count(n) AS total');
console.log(result.records[0].get('total'));
await session.close();
await driver.close();
Quick Start — DEB (Ubuntu / Debian)
# Install
sudo dpkg -i xraygraphdb_5.0.0_amd64.deb
# Start the service
sudo systemctl enable --now xraygraphdb
# Connect via Bolt
python3 -c "
from neo4j import GraphDatabase
d = GraphDatabase.driver('bolt://localhost:7687')
print(d.execute_query('RETURN 1 AS n').records)
"
Quick Start — Rocky / RHEL / Fedora / CentOS Stream
# Native RPM packages are not yet published. Use either the generic # Linux tarball above (recommended) or the Docker image below. # # Option A — generic Linux tarball: tar xzf xraygraphdb-5.0.0-linux-x86_64.tar.gz cd xraygraphdb-5.0.0-linux-x86_64 sudo bash install.sh sudo systemctl enable --now xraygraphdb # Option B — Docker (works on every distribution): docker pull xraygraphdb.emtailabs.com/xraygraphdb:v5.0.0 docker run -d --name xraygraphdb -p 7687:7687 -p 7689:7689 \ -v xraygraphdb-data:/var/lib/xraygraphdb \ xraygraphdb.emtailabs.com/xraygraphdb:v5.0.0
Quick Start — Tarball (Generic Linux)
# Extract tar xzf xraygraphdb-5.0.0-linux-x86_64.tar.gz cd xraygraphdb-5.0.0-linux-x86_64 # Install sudo bash install.sh # Start the service sudo systemctl enable --now xraygraphdb
Quick Start — Docker
# Load the image docker load < xraygraphdb-5.0.0-docker.tar.gz # Run with persistent storage docker run -d \ --name xraygraphdb \ -p 7687:7687 \ -p 7689:7689 \ -v xraygraphdb-data:/var/lib/xraygraphdb \ xraygraphdb:v5.0.0
Quick Start — macOS (coming soon)
# macOS builds are not yet available in v5.0.0 GA. # Check back for future releases. # Create data directory mkdir -p ~/Library/Application\ Support/xrayGraphDB # Run /usr/local/lib/xraygraphdb/xraygraphdb \ --data-directory="$HOME/Library/Application Support/xrayGraphDB" \ --bolt-port=7687
Quick Start — Docker
docker pull xraygraphdb.emtailabs.com/xraygraphdb:v5.0.0 # Run with persistent storage docker run -d \ --name xraygraphdb \ -p 7687:7687 \ -p 7689:7689 \ -v xraygraphdb-data:/var/lib/xraygraphdb \ -e XRAY_ADMIN_PASSWORD=changeme \ xraygraphdb.emtailabs.com/xraygraphdb:v5.0.0 # Connect # Bolt: bolt://localhost:7687 # xrayProtocol: localhost:7689
System Requirements
Minimum: 2 CPU cores, 4 GB RAM, 10 GB disk
Recommended: 8+ CPU cores, 32+ GB RAM, NVMe SSD
Linux (native): x86_64, Ubuntu 24.04+ or Debian 13+ (glibc 2.39+). For older distributions, use Docker.
Linux (Docker): Any x86_64 Linux with Docker Engine 20.10+. No glibc requirement.
macOS: macOS 14 Sonoma or later, Apple Silicon (arm64) or Intel (x64)
Windows: Windows 10/11 or Server 2022+, x64, MSVC runtime
What's new in v5.0.0 GA
Security & hardening sweep. 40+ adversarial-audit P0 / P1 fixes landed across auth, audit logging, plugin loader, cluster RPC, SLK serialization, xrayProtocol transport, and the procedure registration surface. Highlights:
bcrypt PHC strings now carry a $v=2 provenance suffix (closes the audit-#7620 side-door rebind window);
SHA-256 password hashes refused by default (--auth-reject-sha256-no-stretch);
Argon2id work-factor floor enforced at verify-time so attacker-planted weak hashes can't bypass key-stretching;
HMAC-keyed credential cache (per-process libsodium secret) replaces SHA-256-only;
per-process dummy bcrypt eliminates the static-ciphertext oracle;
LBAC fail-open consolidated to one decision point with a sunset date;
SecurityLog gains a tamper-evident plugin_kill_refused event;
SWIM password capture moved to a SecureString at startup (no more plaintext in /proc/<pid>/mem);
new xg.security_list_weak_hash_accounts() procedure for operator-driven migrations;
cluster RPC V7 envelopes get a cheap clock check before HMAC (CPU-exhaustion guard);
SLK reader / framer integer-overflow and infinite-loop hardening;
Encryption-key rotation with no stale-key exposure.
What's in v5.0.0
Vectorized columnar query engine · Compact edge storage (1.8B+ edges on NVMe, streaming O(vertex) build) · Dual protocol (Bolt + xrayProtocol) · 392+ native functions · 26 native analytics procedures (PageRank, Louvain, Node2Vec, BFS, TriangleCount + more) · SIMD-accelerated filters · GPU-accelerated analytics · Graph storage · EdgeAppendLog with backpressure for streaming workloads · Universal import engine (CSV, JSON, SQL dumps, Neo4j CSV, BSON, GIS/GDAL, SQLite, SNAP edge lists) · SQL→Graph FK auto-mapping · Multi-tenant with per-tenant isolation · B-tree ORDER BY elimination · Adaptive query routing (4 engines) · Huge pages + io_uring I/O · Snapshot persistence · Per-tenant encryption · HA replication (beta)
Ports
7687 — Bolt protocol (compatible with Neo4j drivers)
7689 — xrayProtocol (native binary wire format)
7444 — Metrics / monitoring endpoint