Hybrid vector-graph
Vector similarity search plus directed typed edges, graph traversal, reverse lookups, and graph-filtered search.
Documentation
Install the daemon, configure local or network transport, enable TLS or mTLS, connect agent hosts, and operate memory as infrastructure.
LibraVDB Memory is a daemon plus thin host integrations. Start local with Homebrew, verify daemon health, then point OpenClaw, Hermes, or MCP at the daemon endpoint.
brew tap xDarkicex/homebrew-openclaw-libravdb-memory
brew install libravdbd
brew services start libravdbd
libravdbd healthDefault local transports use a Unix socket or loopback TCP. Remote TCP should use TLS, and mTLS is available when the daemon is configured with a client CA.
The daemon release workflow publishes binaries and package metadata from the closed-source daemon repository. Homebrew and Chocolatey pull release assets from xDarkicex/homebrew-openclaw-libravdb-memory; Debian metadata is committed to xDarkicex/apt-libravdbd.
brew tap xDarkicex/homebrew-openclaw-libravdb-memory
brew install libravdbd
brew services start libravdbd
libravdbd healthcurl -fsSL https://xDarkicex.github.io/apt-libravdbd/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/libravdbd.gpg
echo "deb [arch=$(dpkg --print-architecture)] https://xDarkicex.github.io/apt-libravdbd stable main" | sudo tee /etc/apt/sources.list.d/libravdbd.list
sudo apt update
sudo apt install libravdbd
sudo /usr/lib/libravdbd/provision.sh --target /var/lib/libravdbd
systemctl --user enable --now libravdbd
libravdbd healthyay -S libravdbd-bin
sudo /usr/lib/libravdbd/provision.sh --target /var/lib/libravdbd
systemctl --user enable --now libravdbdchoco install libravdbd
libravdbd healthprovision.sh.gpg.key, dists/stable, and release .deb artifacts.PKGBUILD updates from daemon releases.libravdbd.nupkg and pushes it to Chocolatey using the packaged Windows binary.Configuration can come from YAML or environment variables. Set LIBRAVDB_CONFIG to point at a YAML file; environment variables override YAML values. The OpenClaw plugin repo includes premade daemon YAML examples because the daemon source is closed.
sudo install -d -m 0755 /etc/libravdbd
sudo curl -fsSL https://raw.githubusercontent.com/xDarkicex/openclaw-memory-libravdb/main/docs/yaml/default-gguf.yaml -o /etc/libravdbd/config.yaml
LIBRAVDB_CONFIG=/etc/libravdbd/config.yaml libravdbd healthLIBRAVDB_AGENT_DB_ROOT./etc/libravdbd/config.yaml.bundled, gguf, onnx-local, or remote. Remote is operator configured only.nomic-embed-text-v1.5; fallback profile defaults to bge-small-en-v1.5.auto, cpu, cuda, coreml, openvino, or directml.libllama.dylib or libllama.so when using GGUF outside packaged defaults.LIBRAVDB_DB_PATH.auto creates tenant DBs from tenant keys; strict requires YAML tenant allowlist entries.25s; keep below Kubernetes terminationGracePeriodSeconds.This is the operator-facing daemon surface from libravdbd/config/config.go. YAML keys are snake_case; environment variables override YAML.
LIBRAVDB_DB_PATH. Single-tenant DB path. Default is profile-derived under ~/.libravdbd.LIBRAVDB_AGENT_DB_ROOT. Root for per-tenant DBs. Mutually exclusive with db_path.LIBRAVDB_TENANT_MODE. auto accepts new tenant keys; strict requires YAML tenant allowlist.LIBRAVDB_TENANT_MAX_OPEN. Concurrent open tenant DB cap. Default 64.db_path.LIBRAVDB_FORCE_DB_OPEN. Recovery-only bypass for DB format fingerprint mismatch.LIBRAVDB_EMBEDDING_BACKEND. bundled, gguf, onnx-local, or remote.LIBRAVDB_EMBEDDING_PROFILE. Default nomic-embed-text-v1.5.LIBRAVDB_FALLBACK_PROFILE. Default bge-small-en-v1.5.LIBRAVDB_EMBEDDING_MODEL. Local model directory/path override.LIBRAVDB_EMBEDDING_TOKENIZER. Tokenizer JSON override.LIBRAVDB_EMBEDDING_DIMENSIONS. Vector dimension override.LIBRAVDB_EMBEDDING_NORMALIZE. L2 normalization toggle. Default true.LIBRAVDB_EMBEDDING_MTIERS. Comma-separated Matryoshka tiers, for example 64,256,768.LIBRAVDB_ONNX_RUNTIME. Path to ONNX Runtime shared library.LIBRAVDB_ONNX_DEVICE. auto, cpu, cuda, coreml, openvino, or directml.LIBRAVDB_LLAMA_LIB. Path to libllama used by GGUF deployments outside package defaults.LIBRAVDB_EMBED_TIMEOUT. Per-embedding call deadline. Default 5s.LIBRAVDB_EMBEDDING_ENDPOINT. OpenAI-compatible remote embedding base URL. Only used with remote backend.LIBRAVDB_EMBEDDING_REMOTE_MODEL. Remote embedding model name.LIBRAVDB_EMBEDDING_API_KEY. Bearer token for remote embedding. Operator supplied only.LIBRAVDB_EMBED_CACHE_SIZE. Remote embedding LRU cache size. 0 disables.LIBRAVDB_CIRCUIT_MAX_FAILURES. Remote embedder circuit breaker threshold. Default 3.LIBRAVDB_CIRCUIT_COOLDOWN. Circuit breaker cooldown. Default 60s.LIBRAVDB_SUMMARIZER_BACKEND. Default bundled; remote summarization is not a hidden default.LIBRAVDB_SUMMARIZER_MODEL. Remote/custom summarizer model name.LIBRAVDB_SUMMARIZER_ENDPOINT. Remote summarizer endpoint when explicitly configured.LIBRAVDB_GRPC_ENDPOINT or legacy LIBRAVDB_RPC_ENDPOINT. Enables daemon gRPC transport.LIBRAVDB_GRPC_TLS_CERT. Server certificate PEM.LIBRAVDB_GRPC_TLS_KEY. Server private key PEM.LIBRAVDB_GRPC_TLS_CA. Client CA; enables mTLS client certificate verification.LIBRAVDB_AUTH_SECRET_FILE. Shared secret for HMAC challenge-response auth.LIBRAVDB_DRAIN_TIMEOUT. Graceful shutdown drain. Default 25s.LIBRAVDB_PID_FILE. PID file path. Empty is container-safe default.LIBRAVDB_LIFECYCLE_JOURNAL_MAX_ENTRIES. Default 500.LIBRAVDB_GATING_THRESHOLD. Minimum composite score for ingestion. Default 0.35.LIBRAVDB_GATING_W1C, W2C, W3C. Conversational gating weights.LIBRAVDB_GATING_W1T, W2T, W3T. Technical gating weights.LIBRAVDB_GATING_TECH_NORM. Technical gating normalization. Default 1.5.The daemon gRPC server is enabled by LIBRAVDB_GRPC_ENDPOINT. The older LIBRAVDB_RPC_ENDPOINT is accepted as an alias. Use Unix sockets for same-host agents, loopback TCP for local Windows/simple dev, and remote TCP with TLS for containers or networked agents.
LIBRAVDB_GRPC_ENDPOINT=unix:$HOME/.libravdbd/run/libravdb.sockLIBRAVDB_GRPC_ENDPOINT=tcp:127.0.0.1:9090LIBRAVDB_GRPC_ENDPOINT=tcp:0.0.0.0:9090 inside the daemon container; clients use the Service DNS name.sidecarPath: "auto" probes standard socket paths, or set grpcEndpoint explicitly.LIBRAVDB_GRPC_ENDPOINT or an endpoint in libravdb.json.LIBRAVDB_GRPC_ENDPOINT=tcp:0.0.0.0:9090 \
LIBRAVDB_DB_PATH=/var/lib/libravdbd/data.libravdb \
LIBRAVDB_CONFIG=/etc/libravdbd/config.yaml \
libravdbdDaemon TLS is controlled server-side by certificate environment variables. Supplying a server cert/key enables TLS. Supplying a CA additionally requires and verifies client certificates, which is mTLS.
LIBRAVDB_GRPC_TLS_CERT and LIBRAVDB_GRPC_TLS_KEYLIBRAVDB_GRPC_TLS_CA makes the daemon require client certs signed by that CA.grpcEndpointTlsCa points the plugin at a private CA bundle.grpcEndpointTlsClientCert and grpcEndpointTlsClientKey enable mTLS client authentication.grpcEndpointTlsMode: auto, tls, or insecure. Auto uses plaintext for Unix/loopback and TLS for remote TCP.LIBRAVDB_GRPC_ENDPOINT=tcp:0.0.0.0:9090 \
LIBRAVDB_GRPC_TLS_CERT=/etc/libravdbd/tls/server.crt \
LIBRAVDB_GRPC_TLS_KEY=/etc/libravdbd/tls/server.key \
LIBRAVDB_GRPC_TLS_CA=/etc/libravdbd/tls/client-ca.crt \
libravdbd{
"grpcEndpoint": "tcp:libravdb.internal:9090",
"grpcEndpointTlsCa": "/etc/certs/company-ca.pem",
"grpcEndpointTlsClientCert": "/etc/certs/openclaw-client.crt",
"grpcEndpointTlsClientKey": "/etc/certs/openclaw-client.key"
}There is no separate memory kernel inside the plugins. In containers or Kubernetes, run libravdbd as the daemon process with a persistent volume, then connect host plugins over the Service endpoint.
docker build --platform linux/amd64 -f test/linux-apt-install.Dockerfile /path/to/libravdbd
docker build --platform linux/arm64 -f test/linux-apt-install.Dockerfile /path/to/libravdbdenv:
- name: LIBRAVDB_GRPC_ENDPOINT
value: tcp:0.0.0.0:9090
- name: LIBRAVDB_CONFIG
value: /etc/libravdbd/config.yaml
- name: LIBRAVDB_AGENT_DB_ROOT
value: /var/lib/libravdbd/tenants
- name: LIBRAVDB_DRAIN_TIMEOUT
value: 25s
ports:
- name: grpc
containerPort: 9090
volumeMounts:
- name: data
mountPath: /var/lib/libravdbd
terminationGracePeriodSeconds: 30For remote clients, terminate TLS at the daemon or mesh. If a mesh terminates TLS, set OpenClaw grpcEndpointTlsMode: "insecure" only for the inside-the-mesh plaintext hop.
Use daemon health/status before debugging host plugins. After daemon upgrades, restart the service so the installed binary replaces the running process.
libravdbd health
libravdbd status
libravdbd search --tenant <tenant-key> -k 10 "prior context"
brew services restart libravdbd
systemctl --user restart libravdbdmcp-memory-libravdb is the official MCP server for the libravdbd cognitive memory kernel. Give any MCP-compatible coding agent — Claude Code, Codex, Cursor, Cline, Zed, Aider — persistent semantic, causal-graph memory with zero configuration.
brew install xDarkicex/homebrew-mcp-libravdb/mcp-memory-libravdbsudo apt install mcp-memory-libravdb (APT repo at xDarkicex.github.io/apt-mcp-libravdb)go install github.com/xDarkicex/mcp-libravdb-server/cmd/mcp-memory-libravdb@latestdocker pull ghcr.io/xdarkicex/mcp-memory-libravdblibravdbd
mcp-memory-libravdb stdio
claude mcp add libravdb-memory -- mcp-memory-libravdb stdioStart the daemon, start the MCP server, connect your client. Three steps. Works with any MCP-compatible client — Claude Code, Codex, Cursor, Cline, Zed, or Aider.
unix://~/.libravdbd/run/libravdb.socklibravdb-mcp-serverdebug, info, warn, error. Default: info.All flags map to environment variables with LIBRAVDB_ prefix.
-v for verbose, --json for machine-readable.claude mcp add libravdb-memory -- mcp-memory-libravdb stdio.mcp.json or Desktop config — same command, same transport.~/.codex/config.toml under [mcp_servers].~/.cursor/mcp.json — picked up on next launch.mcp-memory-libravdb stdio.~/.config/zed/settings.json under context_servers..aider.conf.yml or --mcp-server flag.The daemon does the intelligence — cognitive classification across six kinds, deontic two-pass gating, causal graph traversal, and workspace IAM. This server translates MCP tool calls into gRPC requests over a Unix socket with HMAC authentication and per-tenant isolation. One protocol translation layer. Zero memory intelligence reimplemented in the client.
openclaw plugins install @xdarkicex/openclaw-memory-libravdb
openclaw daemon restart
openclaw memory statusRequires OpenClaw >= 2026.3.22, Node.js >= 22, and a separately installed daemon. OpenClaw supports explicit CA, TLS mode, and mTLS client certificate configuration.
pip install hermes-memory-libravdb
hermes-memory-libravdb-setup install
hermes memory setup
hermes libravdb statusRequires Hermes Agent >= 0.14, Python >= 3.9, and a separately installed daemon. Set memory.provider: "libravdb" to activate. Hermes source supports endpoint override, HMAC auth, TLS mode, custom CA, and mTLS client certificate fields.
OpenClaw has the broadest plugin-side configuration surface. These keys live in the OpenClaw plugin config and are passed through to daemon transport or host-side memory behavior.
auto probes standard sockets; may be unix:/path or tcp:host:port.auto, tls, or insecure.30000.0.35.0.8.2000; 0 disables.true.5000.30000.5.0.4.bundled, gguf, onnx-local, custom-local, or remote.auto, cpu, cuda, coreml, directml, or openvino.bundled, onnx-local, ollama-local, or custom-local.150.mtime, ctime, size, or fifo.150.section7Theta1, Kappa, HopEta, HopThreshold, coarse/second-pass top-K, authority weights, and recency access lambda.continuityMinTurns, prior-context token budget, and tail budget.recoveryFloorScore, recoveryMinTopK, and recoveryMinConfidenceMean.memory_expand calls. Default 8000; 0 disables.1000.debug, info, warn, or error.Hermes stores provider settings in $HERMES_HOME/libravdb.json. Environment variables override file values. Current source supports TLS and mTLS transport fields even where older Hermes docs still describe them as future work.
auto, unix:/path/to/socket, or tcp:host:port.8.0.35.30000.libravdb.json.auto, tls, or insecure. Auto uses plaintext for Unix/loopback and TLS for remote TCP.~/.hermes.hermes memory setup
export LIBRAVDB_GRPC_ENDPOINT="tcp:libravdb.internal:9090"
export LIBRAVDB_AUTH_SECRET_FILE="/etc/libravdbd/client.secret"
hermes libravdb statuslibraVDB is the public Go database library underneath LibraVDB Memory storage paths. The daemon adds memory semantics, compaction, recall policy, transport, auth, and host integration; libraVDB provides the embedded vector-graph database substrate: single-file durability, vector search, metadata filters, graph hooks, transactions, batch ingestion, and operational health.
github.com/xDarkicex/libravdb/libravdbgo get github.com/xDarkicex/libravdb. Requires Go 1.25+; no CGo or external system runtime is required by the library quickstart.~/Development/golang/src/github.com/xDarkicex/libraVDBVector similarity search plus directed typed edges, graph traversal, reverse lookups, and graph-filtered search.
HNSW, IVF-PQ, and Flat indexes. Auto selection defaults toward Flat for small exact sets, HNSW for general ANN, and IVF-PQ for very large memory-efficient collections.
Databases persist as portable *.libravdb files with a page-based single-file LSM engine, transaction-bracketed WAL, dual metapages, and copy-on-write checkpointing.
Query builder supports vector search with typed metadata filters such as equality, ranges, containment, and boolean composition.
Product/scalar quantization, memory mapping, cache policy hooks, and off-heap hot paths reduce process pressure.
Batch insert, streaming ingestion, backpressure, bounded write admission, and context-aware cancellation are part of the public API surface.
libravdb.Open(libravdb.WithStoragePath("./memory.libravdb")), with options for metrics, logging, memory limits, and bounded write admission.CreateCollection, GetCollection, ListCollections, DeleteCollection, and context-aware lifecycle methods.WithDimension, WithMetric, WithHNSW, WithFlat, WithIVFPQ, WithAutoIndexSelection, WithSharding, WithMemoryLimit, WithMemoryMapping.WithProductQuantization, WithScalarQuantization, and custom quantization configuration.Insert, Get, Update, Upsert, Delete, Search, Query, Iterate, ListByMetadata, Count.Health(ctx), Stats(), Prometheus metrics, health checks, and circuit-breaker/degradation primitives expose runtime condition.BeginTx(ctx) and WithTx(ctx, fn) stage mutations in memory, then atomically commit through the WAL.UpdateIfVersion and DeleteIfVersion use record versions and return ErrVersionConflict / VersionConflictError on mismatch.InsertHook and DeleteHook can update graph edges in the same transaction scope as vector mutations.WithMaxConcurrentWrites bounds parallel writers; WithMaxWriteQueueDepth bounds queued writers and can return ErrWriteQueueFull.NewBatchInsert, NewBatchUpdate, and NewBatchDelete support chunking, bounded workers, retries, progress callbacks, fail-fast mode, and optional rollback.NewStreamingBatchInsert, Send, SendBatch, Results, Errors, Stats, and Wait provide backpressure-aware ingestion for large datasets.go get github.com/xDarkicex/libravdb
db, err := libravdb.Open(libravdb.WithStoragePath("./agent-memory.libravdb"), libravdb.WithMetrics(true), libravdb.WithMaxConcurrentWrites(8))
collection, err := db.CreateCollection(ctx, "memories", libravdb.WithDimension(768), libravdb.WithMetric(libravdb.CosineDistance), libravdb.WithAutoIndexSelection(true), libravdb.WithMetadataSchema(schema), libravdb.WithIndexedFields("scope", "kind"))
metadata := map[string]interface{}{"scope": "user", "kind": "decision"}
err = collection.Insert(ctx, "memory-1", embedding, metadata)
results, err := collection.Query(ctx).WithVector(query).Eq("scope", "user").Limit(10).Execute()Read the upstream docs for direct database use: getting started, API reference, architecture, storage, transactions, concurrency, and batch operations.