Skip to main content

L9 Graphiti Memory

Contract-governed, bi-temporal memory for autonomous agents.

Version 2.1 is the recursive convergence release for Quantum-L9/l9-graphiti-memory. It preserves valid package, CLI, MCP, and hook surfaces while replacing the old provider-centered internals with one authorized MemoryService, one canonical record store, typed evidence receipts, explicit temporal coordinates, and rebuildable graph or semantic projections.

The repository name uses Graphiti because the project integrates with Graphiti-style graph memory. The published distribution and Python import remain l9-graphite-memory and l9_graphite_memory for compatibility. See ADR-058.

Guarantees

  • One canonical durable write path
  • Server-derived principals and namespace authorization
  • Versioned memory taxonomy and schema upcasting
  • Valid-time plus transaction-time queries
  • Deterministic admission, quarantine, idempotency, and supersession
  • Evidence-bound atomic extraction and offline source distillation
  • Consent-governed identity and preference memory
  • Bounded hydration with explainable ranking
  • Independent graph, semantic, lexical, and temporal retrieval evidence
  • Atomic core commit plus durable projection outbox
  • Persistent provider locators for verified projection erasure
  • Governed promotion, retention, lineage replay, and procedural candidates
  • Explicit complete, partial, failed, duplicate, rejected, quarantined, archived, and deleted outcomes
  • No plaintext secret persistence in generated agent configuration
  • Installed-wheel operation without a source checkout
  • A machine-validated 69-ADR ledger and 44-decision harvest coverage map

L9 alignment boundary

This repository is a dependency package, not a runnable constellation node. Internal operations use typed memory contracts. L9 inter-node consumers inject the canonical TransportPacket factory and Gate client through GateMemoryBridge; the package never defines the shared packet model or resolves destinations. Optional editor hooks use a local receipt guard, not a second Gate. See ALIGNMENT.md.

Architecture

CLI / MCP / Python SDK / compatibility hooks
                    |
           authenticated principal
                    |
               MemoryService
  authorize -> normalize -> validate -> admit -> commit -> receipt
                                      |
                         canonical RecordStore
                                      |
                       atomic durable outbox
                                      |
                    optional projections
                 Graphiti MCP / Zep / none

The canonical SQLite store is fully functional without Zep, Neo4j, PostgreSQL, Redis, LangGraph, or an LLM. Optional providers are projections, not sources of truth.

Install

Checkout-based development uses uv with the committed lockfile (ADR-069):

# https://docs.astral.sh/uv/getting-started/installation/
uv sync --frozen --no-install-project --no-build --extra dev --extra server
source .venv/bin/activate   # or prefix commands with: uv run

Or: bash scripts/install.sh (requires uv).

Published distribution consumers (no checkout) may still use pip:

python -m pip install l9-graphite-memory
python -m pip install 'l9-graphite-memory[server,zep]'

Quick start

export L9_MEMORY_PROJECTION_BACKEND=none
l9-memory resolve
l9-memory health
l9-memory write 'Always run contract tests before merge' \
  --kind decision \
  --group-id l9-graphiti-memory \
  --source operator
l9-memory search 'contract tests' --group-id l9-graphiti-memory

Sensitive profile writes require purpose-bound consent evidence. Verified deletion requires administrator authority, a reason, and a verification reference.

Command surface

health, resolve, write, search, hydrate, get, stats, conflicts,
phase-lock, verify-phase-lock, lineage, bootstrap, import, distill,
inject, autoseed-check, prune, promote, delete,
synthesize-procedures, maintain, rebuild-projection, outbox-run,
drain-legacy-write-queue, ingest-topology-plan

Legacy MCP aliases write, search, health, bootstrap, phase_lock, and conflicts remain thin adapters to canonical memory.* handlers.

Configuration

Copy config/memory.yaml.example and set L9_MEMORY_CONFIG to its path. Environment variables override YAML. Cursor and Claude config writers persist commands and non-secret settings only. Cursor instantiation is governed by the canonical l9-memory client cursor lifecycle (inspect, install, verify, status, uninstall); see docs/CURSOR_INSTANTIATION.md and ADR-064.

Canonical store choices:

  • sqlite (default): a single-process local ledger. Not a distributed authority — only processes that can open the file share the memory.
  • postgres: the shared backend for multi-agent and scheduled deployments. Requires L9_MEMORY_POSTGRES_DSN and the postgres extra (pip install 'l9-graphite-memory[postgres]'). See ADR-072.

Projection choices:

  • none: canonical standalone memory only
  • http: official or legacy Graphiti MCP projection
  • zep: Zep Cloud graph projection through zep-cloud

The HTTP adapter discovers the live Graphiti tool inventory. It supports the current add_memory, search_memory_facts, search_nodes, and delete_episode dialect plus the older add_episode and search_facts compatibility dialect.

Validation

pytest -q
python tools/assurance/validate_harvest_coverage.py
python tools/assurance/validate_adrs.py
bash scripts/preflight.sh
bash scripts/validate_release.sh

validate_release.sh builds and installs the wheel, runs installed-package smoke checks, and writes evidence under validation/. Live provider, production migration, hosted CodeQL, branch-protection, and credential-rotation proofs remain external release gates.

Documentation

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

l9_graphite_memory-2.3.1.tar.gz (666.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

l9_graphite_memory-2.3.1-py3-none-any.whl (285.4 kB view details)

Uploaded Python 3

File details

Details for the file l9_graphite_memory-2.3.1.tar.gz.

File metadata

  • Download URL: l9_graphite_memory-2.3.1.tar.gz
  • Upload date:
  • Size: 666.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for l9_graphite_memory-2.3.1.tar.gz
Algorithm Hash digest
SHA256 071dfa565a66f89b4aa91889fd97e29f0456ef4d2200822c56733947bcc7d492
MD5 c1f22a3633000c681ec4e5463830184d
BLAKE2b-256 6d8491495b53bc3bc0027fa80be8dc7cd6e453268dfa780a7990241ac4993e55

See more details on using hashes here.

Provenance

The following attestation bundles were made for l9_graphite_memory-2.3.1.tar.gz:

Publisher: publish.yml on Quantum-L9/l9-graphiti-memory

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file l9_graphite_memory-2.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for l9_graphite_memory-2.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b3b045e482fd157a0242d5ad861a3609057c6d66dd2095673f55f1efe888ff89
MD5 06c70c17d27ffae4ddc56928c44e5997
BLAKE2b-256 00c3bcfbd9b00a861c4c64cb107597daa758db383f54177a9c3cfc3e9fae094e

See more details on using hashes here.

Provenance

The following attestation bundles were made for l9_graphite_memory-2.3.1-py3-none-any.whl:

Publisher: publish.yml on Quantum-L9/l9-graphiti-memory

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.3.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page