Every public page about ai-memory — README, marketing site, roadmap, architecture pages, sales decks — must source its numbers from this page or from the upstream test-hub evidence it cites. No other page invents its own counts. If a number on another page disagrees with this page, this page is correct and the other is a bug — please file an issue.
Code-surface counts (MCP / HTTP / CLI / schema / struct) are counted directly from the v0.9.0 source tree. The dated test/benchmark rows (LongMemEval, the #1182 regression baseline) remain the latest published measurements and retain their measurement dates + provenance. Source links accompany each row.
| Field | Value | Source of truth |
|---|---|---|
| Current release | v0.9.0 | release branch release/v0.9.0 on alphaonedev/ai-memory-mcp · 2026-07 secure-default hardening campaign (tag-cut operator-gated) |
MCP tools advertised (--profile full) | 101 | 100 callable memory tools + always-on memory_capabilities bootstrap. Pinned by Profile::full().expected_tool_count() in src/profile.rs · disambiguation issue #862. v0.8.0 added the Pillar-1 coordination tool families (memory_action_* / memory_signal_* / memory_checkpoint_* / memory_lease_* / memory_routine_*, #1709) |
MCP tools default (--profile core) | 7 | Original 5 + memory_load_family + memory_smart_load, plus always-on memory_capabilities bootstrap. See Profile::core() in src/profile.rs |
HTTP routes (/api/v1/) | 92 / 78 | 92 production .route(…) registrations / 78 unique URL paths. SSOT consts EXPECTED_PRODUCTION_ROUTES_COUNT = 92 + EXPECTED_PRODUCTION_UNIQUE_PATHS_COUNT = 78; route-path SSOT src/handlers/routes.rs (#1558 batch 4), registered by the src/lib.rs router (plus the bare /metrics Prometheus surface). v0.8.0 added the coordination write surfaces POST /api/v1/actions/{id}/transition + POST /api/v1/signals (#1718); v0.9.0 #1859 G13-mem added GET /api/v1/memories/{id}/lineage. |
| CLI subcommands | 89 / 87 | 89 with --features sal or --features sal-postgres (sal-postgres implies sal), 87 in the default build (the 2-variant gap is Migrate + SchemaInit, both gated #[cfg(feature = "sal")] per src/daemon_runtime.rs::Command::{Migrate,SchemaInit}). SSOT consts EXPECTED_CLI_SUBCOMMANDS_DEFAULT = 87 + EXPECTED_CLI_SUBCOMMANDS_SAL = 89; counted from the clap top-level Command enum in src/daemon_runtime.rs (was 40 at v0.6.4). |
| Schema version (sqlite + postgres) | v78 | Constant CURRENT_SCHEMA_VERSION = 78 in src/storage/migrations.rs (sqlite) and src/store/postgres.rs (postgres). The v34 → v57 ladder shipped at v0.7.0 (V-4 hash chain; federation_push_dlq #933; archive +14 cols #1025; per-namespace quota PK #1156; federation_nonce_cache #1255; transcript_line_dedup #1389; FTS trigger scoping #1418; tier-expiry backfill #1466; sargable catchup #1476; composite indexes + postgres tsvector #1579). The v58 → v70 ladder is v0.8.0: recall-observations identity binding (v58 #1705); the Pillar-1 coordination substrate actions/action_edges/leases (v59), signed signals (v60), attested checkpoints (v61), routines/routine_runs (v62) — all #1709; memory_links relation CHECK 6→9 (v63); memories.lifecycle_state (v64); signature-trigger restore (v65); governance_rules.severity +escalate (v66); owner-visibility index (v67 #1720); encrypted_envelope postgres+archive parity (v68 #228/#1728); kg_projection_outbox AGE cold-path queue (v69 #1735, postgres-only); archived_memory_links edge snapshot (v70 #1771). v71 is v0.8.1: signed forget_tombstones table (#1821 / W2.3 / gap G30). The v72 → v78 ladder is v0.9.0: signed memory_revisions append-only spine (v72 #1823 G6); signed_events.cause_hash audit cause-binding (v73 #1822 G5a); memories.cid/cid_genesis BLAKE3 content-id (v74 #1825 G8); memory_links.source_cid/target_cid lineage-DAG (v75 #1859 G13-mem); agent_lineage signed succession (v76 #1828 G13); recall_observations.folded recall-purity state (v77 #1869 P0-1); model_attestations (v78 #1870 §25.3 S1 D3-012). |
Capabilities envelope schema_version | "3" | Post-A5; v1/v2 still negotiable via accept= on memory_capabilities MCP / Accept-Capabilities HTTP header — see src/mcp/tools/capabilities.rs |
| Memory struct fields | 28 | Was 15 at v0.6.x, 26 at v0.7.0; v0.8.0 adds the 27th field lifecycle_state (schema v64, #1709 Pillar-2 Typed Cognition; DEFAULT 'open'); v0.9.0 adds the 28th field cid (schema v74, #1825 G8 additive BLAKE3 content-id). The v0.7.0 additions were recursive-learning, Batman vocabulary, Form-4 provenance, Form-5 confidence-calibration columns, plus the v45 version column for Gap-1 optimistic concurrency. See src/models/memory.rs. |
| MemoryLink relation variants | 9 | related_to, supersedes, contradicts, derived_from, reflects_on, derives_from, plus the v0.8.0 Pillar-2 typed-cognition trio decomposes_into, depends_on, advances (#1709, schema v63). Enum MemoryLinkRelation (COUNT = 9) in src/models/link.rs |
| Subscription dispatch | HMAC mandatory | Unsigned dispatch DISABLED post-R3-S1.HMAC (fix campaign 2026-05-13). See src/subscriptions.rs |
| TTL on access | sliding replacement | Touch sets expires_at = now + per-tier-TTL — replacement, not max-of-old-and-new extend. Create-time backstop (6h short / 7d mid) applies only until first access. See recall pipeline docs in CLAUDE.md |
| CI matrix platforms | 3 | ubuntu-latest · macos-latest · windows-latest — see .github/workflows/ci.yml |
| LongMemEval Recall@5 | 96.4–97.8% | LongMemEval-S, 500 questions. v0.7.0 binary-faithful (harness.py drives the shipped ai-memory recall): keyword/pure-FTS5 96.4%, semantic 96.8%, autonomous 95.8% (measured 2026-05-31). The historical 97.8% headline (489-question shadow harness, harness_99.py) used LLM query-expansion over FTS5 — not pure BM25 — and is reproduced at 97.2% R@5 on an OpenRouter cloud backend (Ollama-free, 0 failures). Full cross-harness matrix + per-category provenance: benchmarks/longmemeval/results.md. |
| Final-baseline regression (2026-05-31) | 15,951 / 0 | #1182 NO-FAIL-MISSION off a pristine rig restart (docker compose down -v + up -d, all volumes wiped). Domain 1 default-feature sqlite shipping build: 7,458 passed / 0 failed / 16 ignored. Domain 2 Postgres + Apache AGE SAL-parity (--features sal,sal-postgres): 8,493 passed / 0 failed / 37 ignored. Four 1:1 findings filed→fixed→closed (#1444 C8 allowlist, #1445 expand_query 3-surface envelope parity, #1446 / #1447 doc drift); three independent codegraph QC audits all ZERO-DEFECTS-CONFIRMED. Full provenance: docs/v0.7.0/regression-runs/2026-05-31-final-baseline/. Round 2 (2026-06-01) — independent re-run off a second full volume wipe — reproduced GREEN at 15,952 / 0 (Domain 1 7,458 / 0 / 16 identical; Domain 2 8,494 / 0 / 37, +1 = the #1445 regression test) with zero new defects, confirming the result is reproducible and stable: docs/v0.7.0/regression-runs/2026-06-01-round2/. |
grep #[test] includes attributes inside #[cfg(test)] guards that are not always compiled, plus benchmark scaffolding — it is not a canonical test-pass count for any era.
This is where conflicting maturity signals on other pages get resolved. Use these labels — and only these labels — when describing capability maturity in any public material.
One ai-memory instance, one consumer. SQLite + WAL + FTS5 + HNSW. No network, no peers. Used in production by the project team daily. T1 + T2 of the architectures matrix.
Adaptive blend, cross-encoder rerank, recency decay, tier boost. On LongMemEval-S (ICLR 2025, 500 questions), v0.7.0 binary-faithful R@5 measures keyword 96.4% / semantic 96.8% / autonomous (rerank) 95.8%; the 97.8% headline came from an FTS5 + LLM query-expansion path (shadow harness), reproduced at 97.2% on an OpenRouter backend. See benchmarks/longmemeval/results.md.
101 MCP tools at --profile full (100 callable + always-on capabilities; 7 at --profile core), 92 HTTP routes (78 unique paths) at /api/v1/, 87 CLI subcommands (default build) / 89 with --features sal or --features sal-postgres. Stable contract. Used by Claude Code, Codex, Cursor, Windsurf, Continue.dev, Grok, OpenClaw, Hermes, and Llama integrations today.
Allow / Deny / Pending policies; pending-approval queue; scope-visibility filter; immutable agent_id provenance. v0.6.2+ stable.
Code shipped in v0.6.3: 10 broadcast functions, ack tracker, vector-clock catchup, mTLS fingerprint allowlist. Used in T3 (multi-node cluster) tests on the ship-gate. Not yet recommended for self-driving production fleets without an operator-on-call. See T3 architecture for what's wired and what's not.
--features sal-postgres build flag; ai-memory serve --store-url postgres://… selects the adapter. Schema parity at v70 with Apache AGE Cypher graph support. GA since v0.7.0 — the #1182 final baseline ran the full SAL-parity suite (8,493+ tests) green against Postgres + AGE.
Query expansion, auto-tagging, contradiction detection, cross-encoder reranking via Ollama (Gemma 4 e2b/e4b). Functional and tested but performance/quality varies by host hardware. Production use should pin model versions and run baseline recall regressions.
ai-memory ships attestation in the memory_links table: signature, attest_level (unsigned / self_signed / peer_attested), and signed_at columns are wired through H2 (outbound self-sign), H3 (inbound verify), and H4 (memory_verify MCP tool); #626 Layer-3 verifies caller-presented store-surface signatures (attest_level = "agent_attested"). As of v0.9.0 (#1751) an unsigned direct write is rejected by default (403 ATTESTATION_FAILED); the explicit opt-out AI_MEMORY_REQUIRE_AGENT_ATTESTATION=0 restores the permissive posture where an unsigned agent_id lands as a "claimed" claim — pair with the attestation envelope for security decisions.
No Raft, no Paxos, no global gossip/DHT. Tier 5 ("global hive") of the architectures matrix is vision — v1.0+ horizon. Don't deploy ai-memory across regions today expecting strong consistency.
ai-memory v0.9.0 holds the following internal certifications. External (third-party) audits and compliance attestations are not yet held for any release; do not represent ai-memory as SOC 2, ISO 27001, FedRAMP, or HIPAA-compliant.
| Certification | Status | Authority |
|---|---|---|
| A2A-Certified (internal) | Yes | A2A gate · v0.6.2 + v0.6.3 — last full 4-phase cell run; not re-run at v0.7.0/v0.8.x/v0.9.0, see currency note below |
| Ship-Gate (internal) | Yes | Ship gate · 9/9 cert + 5/5 channels green at v0.6.2 cut — last full 4-phase cell run; not re-run at v0.7.0/v0.8.x/v0.9.0, see currency note below |
| SOC 2 | No | No third-party audit. Do not represent. |
| ISO 27001 | No | No third-party audit. Do not represent. |
| FedRAMP | No | No authorization. Do not represent. |
| HIPAA | No | No BAA. Do not represent. |
ai-memory-ship-gate, ai-memory-ai2ai-gate repos) whose
last full 4-phase cell run is the v0.6.2/v0.6.3 cut cited above — neither was
re-run as a full 4-phase cell for v0.7.0, v0.8.0, v0.8.1, or v0.9.0.
v0.9.0 shipped under a one-time recorded descope of the 4-phase
ship-gate/A2A-gate re-run (ruling wf_26d176ac, 10/10,
tracked on #1938).
This is not the same as "no evidence" — real, in-repo evidence exists for
v0.8.0/v0.8.1/v0.9.0; it is just not organized as a 4-phase cell run. See
the table below for exactly what exists and what does not. The v0.6.2/v0.6.3
boundary is covered forward by the v1.0.0 Gate-3 full-spectrum campaign,
which is scoped to re-run (or formally supersede) the 4-phase cell against
the current release line.
No 4-phase ship-gate or A2A-gate cell exists for these three releases. The table below links the real evidence that does exist for each, in this repo, and says plainly where a class of evidence (e.g. a live A2A cell run) is absent.
| Release | A2A / federation evidence | Operational + dogfood evidence | Security review |
|---|---|---|---|
| v0.8.0 GA 2026-06-25 |
IronClaw live 2-daemon A2A campaign, 2026-06-24, Grok-4.3 brain: GREEN on B.0–B.8 (HEAD binary, boot security-posture WARNs, mesh health, embedder fail-closed, peer-enrollment fail-closed, require-sig, push-DLQ, admin-gate) with zero product defects; B.9 enrolled-peer happy-path is CI-covered but not driven live (test-infra gap, filed for v0.9). track-b-a2a-results.md | No dedicated v0.8.0 DO/dogfood record beyond the IronClaw campaign at left. | release-notes.md §"Security review + NHI validation" |
| v0.8.1 GA 2026-06-29 |
No dedicated A2A cell run for v0.8.1. The mTLS 3-leg federation encryption path (server TLS, client mTLS, quorum peer TLS) was verified live on a real droplet — see operational evidence at right. | Live DigitalOcean droplet (NYC3), PASS on W1 (secret-screen refuse), W2 (erasure — store/forget/recall-nothing), W3 (honest durability — 202 not 503 on quorum miss), plus AI-NHI dogfood (G29/G30/G12 test suites + interactive MCP transcript). operational-evidence-do.md / dogfood-evidence.md | 9 findings surfaced by a 7-lane adversarial review, all fixed and closed, contested calls decided by 5-agent vote — CHANGELOG.md [0.8.1] (#1821) |
| v0.9.0 GA 2026-07-08 |
No v0.9.0 A2A cell run exists. Stated plainly, not backfilled — the last live A2A cell evidence remains the v0.8.0 IronClaw campaign above. | Live DigitalOcean droplet, 3 consecutive GREEN rounds (17/17 assertions each) on the fully-hardened release/v0.9.0 binary, all 3 encryption legs (server TLS, client↔daemon, daemon↔Postgres) verified. Separately, an AI-NHI dogfood against a copy of a real 1,667-memory production database migrated schema v71→v78 with zero memory loss, 3/3 behavioral rounds GREEN. operational-evidence-do-crypto.md / dogfood-evidence.md |
release-notes.md — security-hardening release; the crypto operational-evidence run cites "all 49 hardening findings fixed" on the tested binary. |
test-hub/releases/vX.Y.Z/.docs/evidence.html first — the hero FROZEN badge, every row of the facts table, and every status card whose maturity has changed.grep -rE "(191|1,?[0-9]{3})\s*test|9[0-9]\.[0-9]+%\s*coverage|v0\.6\.[0-9]" docs/ README.md — every match either updates to the new canonical number or replaces with a link to evidence.html.