New · Agent memory SDK

Build agents from decisions,
not documents.

Most AI memory is RAG over PDFs — a search index over text humans wrote about their work. InvariantDB stores the work itself: every access, every context, every decision, with bitemporal provenance. Train new agents from real behavior. Replay any past state. Ask what did the agent know when it acted? Memory without amnesia.

Start free Read the docs
“Your agent made the wrong call yesterday. Can you replay exactly what it knew at 3:47pm when it decided?

Vector DBs say no. InvariantDB says AT RECORDED '2026-04-13T15:47:00Z'.”

Five pillars of agent memory

Built into the database itself — not bolted on as a layer above embeddings.

Persistent

Outlives context windows, process restarts, and multi-instance scaling. State lives in the graph, not in the agent process.

Queryable

Real graph structure: entities, facts, sessions, contradictions. Query with Cypher. Not just “k-nearest neighbor on a blob.”

Temporal

Bitemporal by default. Replay agent memory state at any past moment with AT RECORDED. The bitemporal moat: no other memory store can do this natively.

Auditable

Tamper-evident hash chain over every memory mutation. Stamped _actor=agent:<id>. WORM mode optional. The audit trail comes for free.

Shared

Multi-agent collaboration through cross-graph queries. One agent's findings inform another's. Federated by design, isolated by default.

Projectable

Agent memory can be projected into structured JSON documents. Define a template once, and episodic graph memory materializes into documents with full bitemporal replay.

Three methods. That's the SDK.

npm install https://sdk.invariantdb.com/node/invariantdb-0.7.0.tgz — then record, recall, and time-travel.

// Connect to a memory graph (one per agent, scoped API key) const mem = new Memory({ endpoint, apiKey, graph: 'agent-memory-support-bot' }); // Start a session — the agent's "current conversation" const { sessionId } = await mem.startSession({ agentId: 'support-bot', userId }); // Record an event — message, tool call, observation, anything await mem.record({ sessionId, type: 'UserMessage', text, entities }); // Recall — hybrid: text + graph hops + (optional) time travel const ctx = await mem.recall({ query, hops: 2, limit: 10 }); // Time travel — what did the agent know at this exact moment? const past = await mem.recall({ query, asOf: '2026-04-13T15:47:00Z' }); // Reflect — turn episodic memory into a structured document const doc = await mem.reflect({ sessionId, template: 'case-summary' }); // Pairs with document templates: graph memory in, JSON document out.

Vs. the vector DBs

Zep, Mem0, Redis-vector, pgvector. They're search engines. We're a brain.

Capability InvariantDB Vector memory stores
Persistent recall across sessions Yes Yes
Structured entities & relationships Native graph × Embeddings only
Multi-hop reasoning over memory Cypher MATCH × No traversal
Time travel (replay memory at a past moment) AT RECORDED × No bitemporal
Tamper-evident audit trail Hash chain × None
Per-agent isolation (auth model) One graph + scoped key × Namespace at best
Multi-agent collaboration Cross-graph query × Manual sync
Reversible auto-corrections Append-only versioning × Mutate in place

Reference agents, built on the SDK

We dogfood the SDK. These are real agents shipping in the platform.

Shipped

Schema Advisor

Nightly agent that audits a graph's schema, indexes, and query patterns. Suggests reversible improvements with cost/benefit math.

  • 5 analyzers: missing indexes, unused labels, vector candidates, oversized indexes, schema drift
  • Memory-driven: only reports what changed since the last run
  • Priority tunes itself from your apply/ignore feedback
Shipped

Schema Applier

Auto-approve agent. Watches the Advisor's suggestions, applies the reversible ones automatically per your policy.

  • Per-kind policy: always / staging-only / notify / none
  • Endpoint-constrained — cannot emit arbitrary Cypher
  • Dry-run mode + rate limits
Shipped

Investigation Copilot

Interactive agent for fraud, breach, and claims investigation. Read-only by protocol, with full case memory accumulating across sessions.

  • Eight tools — query, explain, describe_graph, sample_data, recall_prior_cases, save_finding, propose_write, conclude
  • Hard caps: 20 tool calls / 15 queries / 5s timeout per investigation
  • Proposes Cypher for human approval — never writes directly

Built secure from day one

One graph per agent. Scoped API keys. Short TTLs. Hash-chained audit. The blast radius of a compromised agent is one memory graph.

One graph per agent

Each agent instance gets its own memory graph. Cross-agent reads require explicit key scope.

API key scoping

Keys carry auth.graphs, auth.tenantId, apiKeyRole. Engine enforces at every call.

Per-key rate limits

Independent query/mutate buckets per key. Runaway loops hit 429 with Retry-After.

TTL on every key

Default 7 days for agent keys. Rotated by orchestrator. Leaked keys expire.

Actor attribution

Every mutation stamped _actor=agent:<id>. Filter the access log by actor for replay.

Reversibility gate

Auto-apply endpoints accept only reversible operations. Append-only history covers the rest.

Give your agents a brain.

Free to start. Ship in an afternoon. Replay forever.

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