v0.6.3.1 · SHIPPED 2026-04-30

Never Lose
Context.

The current release. v0.6.3 shipped the three-pillar grand slam — hierarchy, knowledge graph, performance budgets. v0.6.3.1 (Patch 1) ships 16 PRs resolving issue #487: cold-start AI sessions auto-load memory context. Schema v19, seven new CLI surfaces, 17 documented integrations.

93.08% → 93.84% coverage · 1,886 lib tests + 49+ integration · schema v15 → v19 · 17 integrations · 10 platforms · 5 channels
Patch 1 · v0.6.3.1 · Shipped 2026-04-30

What v0.6.3.1 ships.

Patch 1 closes issue #487 — every AI session now starts memory-aware. 16 PRs land seven new CLI surfaces, the v15→v19 schema ladder, and the integration matrix that gets ai-memory into Claude / Cursor / Codex / Cline / Continue / Windsurf / OpenClaw / Aider / Gemini / Cody and 7 more — all with one command.

New CLI surface
ai-memory boot
Universal session-boot primitive. 5-field diagnostic manifest. 4 status variants (ok / info-fallback / info-empty / warn) — never silent. text / json / toon output.
New CLI surface
ai-memory install
6 targets: claude-code, openclaw, cursor, cline, continue, windsurf. Idempotent marker block, --dry-run default with unified-diff, --apply opt-in, --uninstall round-trip.
New CLI surface
ai-memory wrap
Cross-platform Rust replacement for shell glue. Strategies: SystemFlag / SystemEnv / MessageFile / Auto. Same binary on macOS / Linux / Windows / Docker / Kubernetes.
New CLI surface
ai-memory logs
Operational logging CLI. tail / cat / archive / purge with --since / --until / --level / --namespace / --actor filters. Default-OFF (privacy).
New CLI surface
ai-memory audit verify
Walks the hash-chained audit log. Exit 0 on integrity, 2 on tamper detection. Append-only at the OS level (chattr +a / fs_chflags UF_APPEND).
Hardened
ai-memory doctor
7-section health dashboard: Storage / Index / Recall / Governance / Sync / Webhook / Capabilities. Severity-tagged. JSON mode. Exit codes 0/1/2.
Schema
v19
Ladder v15→v17→v18→v19 runs automatically at first start. v17: governance.inherit backfill. v18: embedding_dim guard + archive lossless. v19: subscriptions.event_types.
Integrations documented
17
3 categories: hook-capable (Claude Code) · MCP+rules (Cursor, Cline, Continue, Windsurf, OpenClaw, Goose, Zed, Roo-Code) · programmatic (Codex CLI, Claude SDK, OpenAI Apps/Assistants/Responses, Grok, Gemini, Aider, Cody, Hermes/Llama/Mistral/Qwen via LM Studio/Ollama/vLLM).
Platforms documented
10
macOS (Apple Silicon + Intel), Linux glibc x86_64 + aarch64, Linux musl (Alpine), Windows native (10/11), WSL2, Docker, Kubernetes, ARM Linux, Commercial Unix (best-effort), Embedded Linux (best-effort).
Distribution channels (verified live)
5
GitHub Release (11 assets), Homebrew tap, ghcr.io, Fedora COPR (build #10412670), crates.io. crates.io anchor at 0.6.3+patch.1 (SemVer build metadata; crates.io rejects 4-segment versions).
Tests (v0.6.3.1)
1,886
+281 from v0.6.3 baseline (1,605). Plus 49+ integration tests. E2E smoke 7/7 PASS via the audit phase. Zero ignored.
Coverage (v0.6.3.1)
93.84%
Line coverage. Gate ≥ 93%, buffer +0.84pp. cargo llvm-cov --features sal --no-fail-fast --fail-under-lines 93.
Known issue
#507
config.toml db field does not expand ~ to $HOME. Workaround: use absolute path. Fix scheduled for v0.6.3.2. CLI flag --db already expands correctly.
One-command setup for Claude Code:
brew install ai-memory && ai-memory install claude-code --apply

Restart Claude Code. Every fresh session now starts memory-aware. Run ai-memory boot from any shell to see the diagnostic manifest. For other agents, see the per-host recipes in docs/integrations/.

6 Engineering Streams (v0.6.3 GA baseline)

Streams A–F. Six teams. One release.

The v0.6.3 GA was scoped as six work-streams, each independently shippable but compounding when released together. All six landed; campaign closed at 93.08% line coverage / 1,809 tests. v0.6.3.1 (Patch 1, see above) builds on this baseline, raising coverage to 93.84% and adding the seven CLI surfaces.

A
PILLAR 1 · STREAM A

Hierarchy

Namespaces gain /-delimited tree paths. Recall walks ancestors. memory_get_taxonomy returns the full tree with per-node memory counts.
  • MAX_NAMESPACE_DEPTH enforcement
  • Lossless flat → hierarchy migration (existing namespaces become single-segment paths)
  • memory_get_taxonomy MCP tool + HTTP endpoint
  • TaxonomyNode model + recursive walker
  • Subtree-scoped recall via namespace prefix match
✓ Shipped
B
PILLAR 2 · STREAM B

KG Schema + Entities

memory_links gains four columns (valid_from / valid_until / observed_by / signature). entity_aliases side table. Backfill of existing links to created_at.
  • Schema v15 migration (sqlite + postgres mirror)
  • Versioned migration files extracted from inline SQL
  • Entity registry with alias resolution
  • memory_entity_register / memory_entity_get_by_alias
  • Indexes: temporal_src, temporal_tgt, relation
  • signature column placeholder ready for v0.7 Ed25519
✓ Shipped
C
PILLAR 2 · STREAM C

KG Query Layer

Recursive-CTE traversal with time + scope + observed-by filters. memory_kg_query at depth ≤ 5. memory_kg_timeline. memory_kg_invalidate. Cypher stubs for v0.7 AGE.
  • memory_kg_query MCP tool + HTTP endpoint
  • memory_kg_timeline ordered-fact return
  • memory_kg_invalidate sets valid_until on a link
  • Cypher stubs documented in db.rs for v0.7 AGE wrapper
  • Cycle detection via path-LIKE check
✓ Shipped
D
PILLAR 2 · STREAM D

Duplicate Check

Pre-write similarity check. Reuses embedding pipeline. Returns nearest-neighbor cosine + above-threshold flag + suggested merge target.
  • memory_check_duplicate MCP tool + HTTP endpoint
  • Configurable threshold (default 0.85)
  • Tier-aware: requires semantic+ for embeddings
✓ Shipped
E
PILLAR 3 · STREAM E

Performance Instrumentation

Tracing spans on every MCP tool entrypoint. ai-memory bench subcommand with canonical workload + p50/p95/p99 reporting. --baseline regression detection.
  • src/bench.rs (97% covered) with 1k-memory canonical workload
  • p50 / p95 / p99 reporting per operation
  • --baseline path.json for regression detection
  • Tracing spans wired throughout mcp.rs and handlers.rs
  • Baseline numbers established on Apple M4 reference
✓ Shipped
F
PILLAR 3 · STREAM F

Performance Budgets + CI Guard

PERFORMANCE.md authoritative table. bench.yml CI workflow runs the bench on every PR. Build fails if any p95 exceeds budget by >10%.
  • PERFORMANCE.md with all 13 operation budgets
  • .github/workflows/bench.yml on every PR + push
  • 10% tolerance threshold encoded in workflow
  • Workflow summary embeds the table per-run
  • JSON artifact retained for trend analysis
✓ Shipped
W3-W12 Coverage Campaign (v0.6.3 GA baseline)

56.7% → 93.08% in 9 waves; v0.6.3.1 raised it to 93.84%.

After streams A-F shipped for v0.6.3, a parallel-agent coverage campaign drove ai-memory from 56.7% line coverage to 93.08% across nine waves. 26 closers in total. ~1,200 net new tests. Two production SSRF defects discovered + fixed during the work. v0.6.3.1 added 281 net new lib tests on top of this baseline (final: 1,886 lib + 49+ integration), raising line coverage to 93.84%.

v0.6.2
56.7%
baseline
W2
75.31%
+18.6
Pkg C
W3
81.02%
+5.71
M·M'·F·T
W4
81.77%
+0.75
T4 (TLS)
W5
85.13%
+3.36
S5·R5·C5·X5
W6
85.61%
+0.48
D6 (daemon)
W7
85.85%
+0.24
I7 (integ)
W8
88.15%
+2.30
H8a/b/c/d
W9
89.29%
+1.14
M9·F9·A9
W10
89.74%
+0.45
L10a·b
W11
89.75%
+0.01
S11a·b + SSRF
W12
93.08%
+3.30
8 PARALLEL

Final coverage by metric

Line
93.08%
Region
93.11%
Function
92.55%
Security · L10b Findings

Two SSRF defects discovered and fixed.

Closer L10b was tasked with adding SSRF tests to subscriptions::validate_url_dns. The tests revealed two production defects. Both were fixed in commit 9eeb453 before the rc1 tag — un-ignored tests pass cleanly.

What was found

Both defects allowed webhook URLs to bypass the SSRF guard and hit internal addresses. Severity: Medium. Discovered during routine test-coverage work; fixed before tag.

DEFECT-1 Bracketed IPv6 host without explicit port bypassed validation. URLs like http://[fe80::1]/ produced resolv_target = "[fe80::1]" (no port). to_socket_addrs() errored "invalid port value" and the production DNS-failure fallback returned Ok(()) — letting link-local IPv6 through. FIXED · 9eeb453
DEFECT-2 Unspecified addresses 0.0.0.0 and [::] were accepted. is_private() didn't check is_unspecified(), so attacker-controlled hostnames resolving to 0.0.0.0 hit the local box (most kernels route 0.0.0.0 to localhost listeners). FIXED · 9eeb453
▼ BEFORE
// is_private — DEFECT-2 path
fn is_private(ip: IpAddr) -> bool {
  match ip {
    IpAddr::V4(v4) => {
      v4.is_private() ||
      v4.is_link_local() ||
      v4.is_multicast() ||
      v4.is_broadcast()
      // ← missing is_unspecified()
    }
    IpAddr::V6(v6) => {
      let segs = v6.segments();
      v6.is_multicast()
      // ← missing is_unspecified()
      || (segs[0] & 0xfe00) == 0xfc00
      || (segs[0] & 0xffc0) == 0xfe80
    }
  }
}
▲ AFTER (commit 9eeb453)
fn is_private(ip: IpAddr) -> bool {
  match ip {
    IpAddr::V4(v4) => {
      v4.is_private() ||
      v4.is_link_local() ||
      v4.is_multicast() ||
      v4.is_broadcast() ||
      v4.is_unspecified()  // ← FIX
    }
    IpAddr::V6(v6) => {
      let segs = v6.segments();
      v6.is_multicast() ||
      v6.is_unspecified()  // ← FIX
      || (segs[0] & 0xfe00) == 0xfc00
      || (segs[0] & 0xffc0) == 0xfe80
    }
  }
}
No outstanding security defects post-campaign.

The SSRF fixes shipped with rc1. Both #[ignore] tests are un-ignored and passing. Zero ignored tests in the v0.6.3 1,809-test baseline; the v0.6.3.1 suite stands at 1,886 lib + 49+ integration tests, also zero ignored.

By the Numbers

Every quantitative claim, sourced.

v0.6.3.1 numbers are from the release notes (published 2026-04-30). v0.6.3 GA baseline numbers are from the W12 consolidated coverage measurement and remain frozen on the evidence page. Hardware: Apple M4 / 32 GB / NVMe SSD.

Line coverage (v0.6.3.1)
93.84%
gate ≥ 93%, buffer +0.84pp · v0.6.3 baseline 93.08%
Region coverage (v0.6.3 baseline)
93.11%
73,150 / 78,564 regions
Function coverage (v0.6.3 baseline)
92.55%
3,527 / 3,811 functions
Lib tests (v0.6.3.1)
1,886
+281 from v0.6.3 baseline (1,605) · 0 ignored
Integration tests (v0.6.3.1)
49+
boot primitive contract + recipe + lifecycle + dispatch · E2E 7/7 PASS
Net new tests (W3-W12 baseline)
~1,200
across the v0.6.3 coverage campaign
Closers dispatched (W3-W12)
26
across 9 waves
main.rs reduction
98.3%
4,511 → 75 lines
Schema (v0.6.3.1)
v19
ladder v15→v17→v18→v19 automatic on first run
MCP tools / HTTP / CLI
43 / 50 / 40
tools / endpoints / subcommands · 133 ops total
Integrations · Platforms · Channels
17 / 10 / 5
documented in v0.6.3.1 release notes
SSRF fixed (v0.6.3 W11)
2
found + fixed pre-tag · zero outstanding
Upgrading

v0.6.2 / v0.6.3 / v0.6.3+patch.x → v0.6.3.1 in one command.

SQLite migration is idempotent. The schema ladder v15→v17→v18→v19 runs automatically at first daemon start. Existing flat namespaces become single-segment hierarchical paths losslessly. Postgres backend has a manual procedure documented in MIGRATION-v0.6.3-to-v0.6.3.1.md.

# Homebrew tap (recommended)
brew install alphaonedev/tap/ai-memory # first-time install
brew upgrade ai-memory # subsequent upgrades

# cargo (any Rust target)
cargo install ai-memory --force

# Docker (ghcr.io)
docker pull ghcr.io/alphaonedev/ai-memory:0.6.3.1

# Fedora COPR
sudo dnf copr enable alpha-one-ai/ai-memory && sudo dnf install ai-memory

# Verify
ai-memory --version # → ai-memory 0.6.3+patch.1 (release tag: v0.6.3.1)
What happens at first start (schema ladder v15 → v19):
  1. Daemon detects schema version < 19
  2. Runs migrations/sqlite/0010_v063_hierarchy_kg.sql (v15: KG temporal-validity columns + entity_aliases)
  3. Runs migrations/sqlite/0012_governance_inherit.sql (v17: governance.inherit backfill)
  4. Runs migrations/sqlite/0011_v0631_data_integrity.sql (v18: embedding_dim guard + archive lossless)
  5. Runs migrations/sqlite/0013_webhook_event_types.sql (v19: subscriptions.event_types column + index)
  6. Bumps schema_version to 19
  7. Existing memories untouched. Existing recall continues to work.

Known issue (#507): if your ~/.config/ai-memory/config.toml has a tilde-prefixed db path (db = "~/..."), CLI subcommands can't expand it; the MCP server is unaffected. Workaround: switch to an absolute path until v0.6.3.2.

Coming Next

v0.6.3.2 (patch fix) and v0.7 (major).

Patch · scheduled
v0.6.3.2
Fix #507 — config.toml db field tilde-expansion. CLI flag --db already expands; only the config-file path is affected. Tracked at #507. Not blocking the v0.6.3.1 ship-gate.
Major · End Q2 2026
v0.7
Trust + A2A Maturity · 4 buckets
Hook Pipeline · Ed25519 attest · Apache AGE · A2A maturity + per-agent quotas. Cleans up memory_reflection capabilities theater (planned-vs-shipped honesty).

See at-a-glance.html roadmap or the public ROADMAP.md.