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. RequiresL9_MEMORY_POSTGRES_DSNand thepostgresextra (pip install 'l9-graphite-memory[postgres]'). See ADR-072.
Projection choices:
none: canonical standalone memory onlyhttp: official or legacy Graphiti MCP projectionzep: Zep Cloud graph projection throughzep-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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
071dfa565a66f89b4aa91889fd97e29f0456ef4d2200822c56733947bcc7d492
|
|
| MD5 |
c1f22a3633000c681ec4e5463830184d
|
|
| BLAKE2b-256 |
6d8491495b53bc3bc0027fa80be8dc7cd6e453268dfa780a7990241ac4993e55
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
l9_graphite_memory-2.3.1.tar.gz -
Subject digest:
071dfa565a66f89b4aa91889fd97e29f0456ef4d2200822c56733947bcc7d492 - Sigstore transparency entry: 2754021966
- Sigstore integration time:
-
Permalink:
Quantum-L9/l9-graphiti-memory@84eedcdfab83020776eab290599751b3b6af8dbf -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Quantum-L9
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@84eedcdfab83020776eab290599751b3b6af8dbf -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file l9_graphite_memory-2.3.1-py3-none-any.whl.
File metadata
- Download URL: l9_graphite_memory-2.3.1-py3-none-any.whl
- Upload date:
- Size: 285.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3b045e482fd157a0242d5ad861a3609057c6d66dd2095673f55f1efe888ff89
|
|
| MD5 |
06c70c17d27ffae4ddc56928c44e5997
|
|
| BLAKE2b-256 |
00c3bcfbd9b00a861c4c64cb107597daa758db383f54177a9c3cfc3e9fae094e
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
l9_graphite_memory-2.3.1-py3-none-any.whl -
Subject digest:
b3b045e482fd157a0242d5ad861a3609057c6d66dd2095673f55f1efe888ff89 - Sigstore transparency entry: 2754021970
- Sigstore integration time:
-
Permalink:
Quantum-L9/l9-graphiti-memory@84eedcdfab83020776eab290599751b3b6af8dbf -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Quantum-L9
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@84eedcdfab83020776eab290599751b3b6af8dbf -
Trigger Event:
workflow_dispatch
-
Statement type: