Features

Everything a decision database needs.

InvariantDB stores what was true, when, and what the system knew when it acted. The catalog below is every shipped primitive that makes that thesis real — from bitemporal Cypher and cryptographic provenance to compliant forgetting and agent memory. Every row is implemented, tested, and deployed.

On this page

Storage + durability

FeatureSurface
Append-only, immutable versioned historyEngine-level; see design principles
Bitemporal versioning on every property (VALID + RECORDED)Cypher AT VALID / AT RECORDED / OVER VALID BETWEEN
Hash-chained audit log on every commit/graphs/{name}/audit/verify + db.verifyAclChain
WORM mode (irrevocable write-block)/graphs/{name}/worm + /worm/engage
Schema versioning + history/graphs/{name}/schema/history
Crash-safe, deterministic recoveryEngine-level; automatic on restart
Background full-graph consolidationcompact_async
Per-property history walkdb.propertyHistory(nodeId, 'prop')
Online backup + restore round-trip/graphs/{name}/backup + /graphs/{name}/restore

Cypher language

Implements openCypher with bitemporal extensions. Highlights:

FeatureExample
MATCH / WHERE / RETURN / WITHstandard
CREATE / MERGE / DELETE / DETACH DELETEstandard
SET / SET += (map-merge)SET n += {a: 1, b: 2}
AT VALID / AT RECORDED / AS OFMATCH (n) AT VALID '2024-06-01' RETURN n
OVER VALID BETWEEN, OVER RECORDED BETWEENhistory walks across a window
OPTIONAL MATCH with multi-stage carryovernested across WITH boundaries
UNWIND ... CREATE bulk-seed + range()UNWIND range(1, 1000) AS i CREATE (:Node {n: i})
WITH-stage aggregationWITH x, count(*) AS c WHERE c > 5
count(DISTINCT x) / collect(DISTINCT x)dedup-aware aggregates
Pattern comprehensions[(a)-[:KNOWS]->(b) | b.name]
Quantifiers ANY / ALL / NONE / SINGLEWHERE ALL(x IN xs WHERE x > 0)
reduce(acc=init, x IN list | expr)functional fold
shortestPath / allShortestPathspath algorithms in-query
COUNT { MATCH ... } count-subqueryCypher-5
Named paths p = (a)-[r]->(b)length(p), nodes(p), relationships(p)
=~ regex, STARTS WITH, CONTAINStext matching
Inline cosine() / euclidean() / dotProduct()vector similarity in WHERE/RETURN
$name param substitutionanywhere a literal goes, including LIMIT $page
EXPLAIN / EXPLAIN ANALYZEdry-run + with-timing
CREATE INDEX (current + historical backfill)property indexes
UNIQUE constraintparser + write-path storage check
FeatureSurface
Fulltext (BM25 via tantivy)gds.fulltextSearch(label, query, k)
Vector (HNSW via instant-distance)gds.vectorSearch(label, prop, q, k)
First-class Vector property typeSchema
cosine(), euclidean(), dotProduct()Inline in WHERE / RETURN
Planner pushdown for WHERE cosine(...)Automatic HNSW selection
Vector + graph fusiongds.semanticMatchExpand(...)
Embedding model versioning + driftdb.embeddingModelDrift()
Pre-build + cache the searcherdb.buildVectorIndex(label, prop, metric)

Graph algorithms

AlgorithmSurface
shortestPathgds.shortestPath(source, target, edgeType?)
pageRankgds.pageRank(maxIters?, damping?)
connectedComponentsgds.connectedComponents()
degreeCentralitygds.degreeCentrality(direction?)

Agent memory (AI-first primitives)

Full guide: AI memory.

PrimitiveProcedure(s)
Episodic memory logdb.recordEpisode, db.replayEpisodes
Working-memory consolidationdb.consolidateSession, db.sessionSummaries
Inference provenance + belief revisiondb.recordBelief, db.reviseBelief, db.beliefLineage
Salience decay + reinforcementdb.applySalienceDecay, db.reinforceSalience
Vector + graph fusiongds.semanticMatchExpand
Conversation sub-tenancyCapability tokens with session claim
Embedding drift detectiondb.embeddingModelDrift
Property provenance walksdb.propertyProvenance, db.derivedFrom

Compliance moat

Full guide: Compliance. Vertical mappings: Regulated industries.

PrimitiveSurface
Crypto-shredding (subject-keyed AES-GCM)db.destroySubjectKey, db.proveErasure
Field-level ACL + audit chainSchema-driven; db.aclEvents, db.verifyAclChain
Purpose binding (GDPR Article 5(1)(b))Principal.purpose
Per-subject DSAR export (Article 20)db.subjectExport(subject)
Per-property provenancedb.propertyProvenance + db.derivedFrom
Differential privacy on aggregatesAPI-key privacyMode + Laplace-noised count/sum/avg with persistent ε budget
Capability tokens/capabilities/issue (signed, scoped, time-limited)
Compliance bundle export/graphs/{name}/compliance/export
Tamper-evident audit chaindb.verifyAclChain, db.dpVerifyChain, history witness

Server / API

FeatureSurface
HTTP + JSON Cypher endpointPOST /cypher
Schema CRUDGET/PUT /graphs/{name}/schema
Multi-graph registryGET /graphs, POST /graphs, DELETE /graphs/{name}
Per-tenant rate limitingAPI key rateLimits: {query, mutate}
Per-query timeoutConfigurable at deploy time
Slow query log + counterConfigurable threshold; Prometheus surface
Cooperative yielding (long queries)Configurable throttle threshold
Cursor / streaming readsPOST /graphs/{name}/cursor
/explain endpointPlan + cost estimate
/healthz / /metrics (Prometheus)Liveness + observability
OpenAPI specGET /openapi.yaml + GET /docs (Swagger UI)
OpenTelemetry tracingOTLP/gRPC; standard OTLP env vars

Auth

ModeSurface
Operator-static bearer tokensAuthorization: Bearer <env-token> (constant-time compared)
Runtime-issued API keysgq_<random> prefix; SHA-256 stored, secret shown once
JWT (Cognito-style)Configurable issuer + JWKS URL
HMACPer-request signed header
Capability tokensSigned, scoped, time-limited bearer
Field-level ACL + rolesSchema-declared; principal carries role list
Purpose bindingPrincipal.purpose from JWT / capability
Tenant isolationPer-graph tenant check
Differential-privacy modeprivacyMode on API key — aggregate-only restriction

SDK

Python (pip install invariantdb)

Node (npm install https://sdk.invariantdb.com/node/invariantdb-0.7.0.tgz)

Same surface, idiomatic to TypeScript.

MCP — Model Context Protocol

Live endpoint: https://invariantdb.com/e/mcp (HTTP POST, JSON-RPC 2.0; auth via Authorization: Bearer gq_...). Drop-in for Claude Desktop, Cursor, Continue, or any MCP-compatible agent client. 14 tools: read, search, agent-memory, compliance, translation. See the quickstart for the 30-second Claude Desktop config snippet.

Replication / distribution

FeatureStatus
Quorum-replicated consensusShipped — strongly-consistent single-leader cluster
Read replicasShipped — horizontal reader scale-out
HA + DR drill (multi-node failover + restore)In flight
Data residency constraints in replicationIn flight

Operability

FeatureSurface
Prometheus /metrics30+ counters (queries, mutations, ACL events, DP counters, integrity ops)
CloudWatch dashboard JSONShipped with production onboarding
Job lifecycle persistenceLong-running imports survive restart
Per-graph flush control/flush, /flush_async
Per-graph warm-up/graphs/{name}/warmup
Per-graph backup + restore/graphs/{name}/backup, /restore
Engine info / capabilities/healthz

Things we don't claim

← Quickstart  ·  AI memory →  ·  Regulated industries →  ·  Compliance →