agmem 0.1.4__tar.gz → 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. {agmem-0.1.4/agmem.egg-info → agmem-0.1.6}/PKG-INFO +220 -49
  2. {agmem-0.1.4 → agmem-0.1.6}/README.md +219 -48
  3. {agmem-0.1.4 → agmem-0.1.6/agmem.egg-info}/PKG-INFO +220 -49
  4. {agmem-0.1.4 → agmem-0.1.6}/memvcs/__init__.py +1 -1
  5. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/daemon.py +1 -0
  6. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/gc.py +3 -1
  7. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/prove.py +3 -1
  8. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/timeline.py +1 -0
  9. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/when.py +1 -0
  10. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/compression_pipeline.py +12 -4
  11. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/crypto_verify.py +2 -2
  12. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/distiller.py +54 -6
  13. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/federated.py +13 -3
  14. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/gardener.py +64 -8
  15. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/ipfs_remote.py +1 -2
  16. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/knowledge_graph.py +3 -1
  17. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/objects.py +2 -0
  18. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/pack.py +18 -4
  19. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/remote.py +12 -3
  20. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/zk_proofs.py +2 -0
  21. {agmem-0.1.4 → agmem-0.1.6}/pyproject.toml +1 -1
  22. {agmem-0.1.4 → agmem-0.1.6}/setup.py +1 -1
  23. {agmem-0.1.4 → agmem-0.1.6}/tests/test_federated.py +6 -2
  24. {agmem-0.1.4 → agmem-0.1.6}/tests/test_privacy_budget.py +21 -5
  25. {agmem-0.1.4 → agmem-0.1.6}/LICENSE +0 -0
  26. {agmem-0.1.4 → agmem-0.1.6}/MANIFEST.in +0 -0
  27. {agmem-0.1.4 → agmem-0.1.6}/agmem.egg-info/SOURCES.txt +0 -0
  28. {agmem-0.1.4 → agmem-0.1.6}/agmem.egg-info/dependency_links.txt +0 -0
  29. {agmem-0.1.4 → agmem-0.1.6}/agmem.egg-info/entry_points.txt +0 -0
  30. {agmem-0.1.4 → agmem-0.1.6}/agmem.egg-info/requires.txt +0 -0
  31. {agmem-0.1.4 → agmem-0.1.6}/agmem.egg-info/top_level.txt +0 -0
  32. {agmem-0.1.4 → agmem-0.1.6}/docs/AGMEM_PUBLISHING_SETUP.md +0 -0
  33. {agmem-0.1.4 → agmem-0.1.6}/docs/CONFIG.md +0 -0
  34. {agmem-0.1.4 → agmem-0.1.6}/docs/FEDERATED.md +0 -0
  35. {agmem-0.1.4 → agmem-0.1.6}/docs/GTM.md +0 -0
  36. {agmem-0.1.4 → agmem-0.1.6}/docs/KNOWLEDGE_GRAPH.md +0 -0
  37. {agmem-0.1.4 → agmem-0.1.6}/docs/SEQUENTIAL_VALIDATION.md +0 -0
  38. {agmem-0.1.4 → agmem-0.1.6}/docs/TEST_REPORT.md +0 -0
  39. {agmem-0.1.4 → agmem-0.1.6}/docs/aux/INSTALL.md +0 -0
  40. {agmem-0.1.4 → agmem-0.1.6}/examples/basic_workflow.sh +0 -0
  41. {agmem-0.1.4 → agmem-0.1.6}/memvcs/cli.py +0 -0
  42. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/__init__.py +0 -0
  43. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/add.py +0 -0
  44. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/audit.py +0 -0
  45. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/base.py +0 -0
  46. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/blame.py +0 -0
  47. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/branch.py +0 -0
  48. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/checkout.py +0 -0
  49. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/clean.py +0 -0
  50. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/clone.py +0 -0
  51. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/commit.py +0 -0
  52. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/decay.py +0 -0
  53. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/diff.py +0 -0
  54. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/distill.py +0 -0
  55. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/federated.py +0 -0
  56. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/fsck.py +0 -0
  57. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/garden.py +0 -0
  58. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/graph.py +0 -0
  59. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/init.py +0 -0
  60. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/log.py +0 -0
  61. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/mcp.py +0 -0
  62. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/merge.py +0 -0
  63. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/pack.py +0 -0
  64. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/pull.py +0 -0
  65. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/push.py +0 -0
  66. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/recall.py +0 -0
  67. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/reflog.py +0 -0
  68. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/remote.py +0 -0
  69. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/repair.py +0 -0
  70. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/reset.py +0 -0
  71. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/resolve.py +0 -0
  72. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/resurrect.py +0 -0
  73. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/search.py +0 -0
  74. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/serve.py +0 -0
  75. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/show.py +0 -0
  76. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/stash.py +0 -0
  77. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/status.py +0 -0
  78. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/tag.py +0 -0
  79. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/test.py +0 -0
  80. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/tree.py +0 -0
  81. {agmem-0.1.4 → agmem-0.1.6}/memvcs/commands/verify.py +0 -0
  82. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/__init__.py +0 -0
  83. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/access_index.py +0 -0
  84. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/audit.py +0 -0
  85. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/config_loader.py +0 -0
  86. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/consistency.py +0 -0
  87. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/constants.py +0 -0
  88. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/decay.py +0 -0
  89. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/diff.py +0 -0
  90. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/encryption.py +0 -0
  91. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/hooks.py +0 -0
  92. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/llm/__init__.py +0 -0
  93. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/llm/anthropic_provider.py +0 -0
  94. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/llm/base.py +0 -0
  95. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/llm/factory.py +0 -0
  96. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/llm/openai_provider.py +0 -0
  97. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/merge.py +0 -0
  98. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/pii_scanner.py +0 -0
  99. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/privacy_budget.py +0 -0
  100. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/refs.py +0 -0
  101. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/repository.py +0 -0
  102. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/schema.py +0 -0
  103. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/staging.py +0 -0
  104. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/storage/__init__.py +0 -0
  105. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/storage/base.py +0 -0
  106. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/storage/gcs.py +0 -0
  107. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/storage/local.py +0 -0
  108. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/storage/s3.py +0 -0
  109. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/temporal_index.py +0 -0
  110. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/test_runner.py +0 -0
  111. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/trust.py +0 -0
  112. {agmem-0.1.4 → agmem-0.1.6}/memvcs/core/vector_store.py +0 -0
  113. {agmem-0.1.4 → agmem-0.1.6}/memvcs/integrations/__init__.py +0 -0
  114. {agmem-0.1.4 → agmem-0.1.6}/memvcs/integrations/mcp_server.py +0 -0
  115. {agmem-0.1.4 → agmem-0.1.6}/memvcs/integrations/web_ui/__init__.py +0 -0
  116. {agmem-0.1.4 → agmem-0.1.6}/memvcs/integrations/web_ui/server.py +0 -0
  117. {agmem-0.1.4 → agmem-0.1.6}/memvcs/retrieval/__init__.py +0 -0
  118. {agmem-0.1.4 → agmem-0.1.6}/memvcs/retrieval/base.py +0 -0
  119. {agmem-0.1.4 → agmem-0.1.6}/memvcs/retrieval/pack.py +0 -0
  120. {agmem-0.1.4 → agmem-0.1.6}/memvcs/retrieval/recaller.py +0 -0
  121. {agmem-0.1.4 → agmem-0.1.6}/memvcs/retrieval/strategies.py +0 -0
  122. {agmem-0.1.4 → agmem-0.1.6}/memvcs/utils/__init__.py +0 -0
  123. {agmem-0.1.4 → agmem-0.1.6}/memvcs/utils/helpers.py +0 -0
  124. {agmem-0.1.4 → agmem-0.1.6}/setup.cfg +0 -0
  125. {agmem-0.1.4 → agmem-0.1.6}/tests/test_access_index.py +0 -0
  126. {agmem-0.1.4 → agmem-0.1.6}/tests/test_advanced_commands.py +0 -0
  127. {agmem-0.1.4 → agmem-0.1.6}/tests/test_audit.py +0 -0
  128. {agmem-0.1.4 → agmem-0.1.6}/tests/test_commit_importance.py +0 -0
  129. {agmem-0.1.4 → agmem-0.1.6}/tests/test_consistency.py +0 -0
  130. {agmem-0.1.4 → agmem-0.1.6}/tests/test_crypto_verify.py +0 -0
  131. {agmem-0.1.4 → agmem-0.1.6}/tests/test_decay.py +0 -0
  132. {agmem-0.1.4 → agmem-0.1.6}/tests/test_edge_cases.py +0 -0
  133. {agmem-0.1.4 → agmem-0.1.6}/tests/test_encryption.py +0 -0
  134. {agmem-0.1.4 → agmem-0.1.6}/tests/test_ipfs_remote.py +0 -0
  135. {agmem-0.1.4 → agmem-0.1.6}/tests/test_llm_provider.py +0 -0
  136. {agmem-0.1.4 → agmem-0.1.6}/tests/test_objects.py +0 -0
  137. {agmem-0.1.4 → agmem-0.1.6}/tests/test_pack_gc.py +0 -0
  138. {agmem-0.1.4 → agmem-0.1.6}/tests/test_pii.py +0 -0
  139. {agmem-0.1.4 → agmem-0.1.6}/tests/test_plan_features.py +0 -0
  140. {agmem-0.1.4 → agmem-0.1.6}/tests/test_repository.py +0 -0
  141. {agmem-0.1.4 → agmem-0.1.6}/tests/test_resolve_helpers.py +0 -0
  142. {agmem-0.1.4 → agmem-0.1.6}/tests/test_retrieval.py +0 -0
  143. {agmem-0.1.4 → agmem-0.1.6}/tests/test_temporal_index.py +0 -0
  144. {agmem-0.1.4 → agmem-0.1.6}/tests/test_trust.py +0 -0
  145. {agmem-0.1.4 → agmem-0.1.6}/tests/test_zk_proofs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agmem
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: Agentic Memory Version Control System - Git for AI agent memories
5
5
  Home-page: https://github.com/vivek-tiwari-vt/agmem
6
6
  Author: agmem Team
@@ -142,6 +142,61 @@ agmem solves all of these problems with a familiar Git-like interface.
142
142
  - ✅ **GPU acceleration** — Vector store detects GPU for embedding model when available
143
143
  - ✅ **Optional** — `serve`, `daemon` (watch + auto-commit), `garden` (episode archival), MCP server; install extras as needed
144
144
 
145
+ ### Feature Coverage
146
+
147
+ ```mermaid
148
+ graph TB
149
+ subgraph Core ["🔧 Core Features"]
150
+ Core1["✅ Git-like commands<br/>init, add, commit, log, branch, merge"]
151
+ Core2["✅ Content-addressable storage<br/>SHA-256, zlib, dedup"]
152
+ Core3["✅ Memory-type merge<br/>Episodic, Semantic, Procedural"]
153
+ end
154
+
155
+ subgraph Collab ["👥 Collaboration"]
156
+ Collab1["✅ Remote push/pull<br/>file:// URLs, conflict detection"]
157
+ Collab2["✅ Multi-agent trust<br/>Trust store, key verification"]
158
+ Collab3["✅ Federated sync<br/>Coordinator API"]
159
+ end
160
+
161
+ subgraph Safety ["🔒 Safety & Integrity"]
162
+ Safety1["✅ Cryptographic<br/>Merkle, Ed25519"]
163
+ Safety2["✅ Tamper detection<br/>Audit trail, hash-chain"]
164
+ Safety3["✅ Encryption at rest<br/>AES-256-GCM"]
165
+ end
166
+
167
+ subgraph Privacy ["🕵️ Privacy"]
168
+ Privacy1["✅ Differential privacy<br/>Epsilon/delta budget"]
169
+ Privacy2["✅ Zero-knowledge proofs<br/>Keyword, Freshness"]
170
+ Privacy3["✅ PII scanning<br/>Pre-commit hooks"]
171
+ end
172
+
173
+ subgraph Intelligence ["🧠 Intelligence"]
174
+ Intel1["✅ Semantic search<br/>Vector + Text fallback"]
175
+ Intel2["✅ Knowledge graph<br/>Wikilinks, Co-occurrence"]
176
+ Intel3["✅ LLM integration<br/>OpenAI, Anthropic"]
177
+ Intel4["✅ Temporal queries<br/>Point-in-time, Range"]
178
+ end
179
+
180
+ subgraph Ops ["⚙️ Operations"]
181
+ Ops1["✅ Pack/GC<br/>Object packing, cleanup"]
182
+ Ops2["✅ Daemon mode<br/>Watch + auto-commit"]
183
+ Ops3["✅ IPFS/S3/GCS<br/>Distributed storage"]
184
+ end
185
+
186
+ Core --> Collab
187
+ Collab --> Safety
188
+ Safety --> Privacy
189
+ Privacy --> Intelligence
190
+ Intelligence --> Ops
191
+
192
+ style Core fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
193
+ style Collab fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
194
+ style Safety fill:#ffebee,stroke:#c62828,stroke-width:2px
195
+ style Privacy fill:#e1f5fe,stroke:#01579b,stroke-width:2px
196
+ style Intelligence fill:#f1f8e9,stroke:#558b2f,stroke-width:2px
197
+ style Ops fill:#fff3e0,stroke:#e65100,stroke-width:2px
198
+ ```
199
+
145
200
  ## Quick Start
146
201
 
147
202
  ### Installation
@@ -342,8 +397,56 @@ Verifies objects, refs, and (if installed) the vector store. When commit metadat
342
397
 
343
398
  ---
344
399
 
400
+ ## Security Architecture
401
+
402
+ agmem implements security in layers. Choose what you need:
403
+
404
+ ```mermaid
405
+ graph TB
406
+ subgraph L1 ["🔒 Tier 1: Cryptographic Integrity"]
407
+ T1A["✅ Merkle tree<br/>over blobs"]
408
+ T1B["✅ Ed25519<br/>signatures"]
409
+ T1C["✅ Tamper<br/>detection"]
410
+ end
411
+
412
+ subgraph L2 ["🔐 Tier 2: Multi-Agent Trust"]
413
+ T2A["✅ Trust store<br/>per public key"]
414
+ T2B["✅ Multi-agent<br/>collaboration"]
415
+ T2C["✅ Conflict<br/>resolution"]
416
+ end
417
+
418
+ subgraph L3 ["🕵️ Tier 3: Privacy & Anonymity"]
419
+ T3A["✅ Differential<br/>Privacy budget"]
420
+ T3B["✅ Zero-Knowledge<br/>Proofs"]
421
+ T3C["✅ Encrypted<br/>at rest"]
422
+ end
423
+
424
+ subgraph L4 ["🌐 Tier 4: Distribution"]
425
+ T4A["✅ S3/GCS<br/>remotes"]
426
+ T4B["✅ IPFS<br/>support"]
427
+ T4C["✅ Pack files<br/>& GC"]
428
+ end
429
+
430
+ subgraph L5 ["📊 Tier 5: Audit & Compliance"]
431
+ T5A["✅ Append-only<br/>audit log"]
432
+ T5B["✅ Hash-chained<br/>verification"]
433
+ T5C["✅ Full history<br/>& blame"]
434
+ end
435
+
436
+ L1 --> L2 --> L3 --> L4 --> L5
437
+
438
+ style L1 fill:#ffebee,stroke:#c62828
439
+ style L2 fill:#ede7f6,stroke:#512da8
440
+ style L3 fill:#e1f5fe,stroke:#01579b
441
+ style L4 fill:#f3e5f5,stroke:#7b1fa2
442
+ style L5 fill:#e8f5e9,stroke:#1b5e20
443
+ ```
444
+
445
+ ---
446
+
345
447
  ## Security, trust & advanced features
346
448
 
449
+
347
450
  The following 18 capabilities are implemented (or stubbed) per the agmem features implementation plan. They are grouped by tier.
348
451
 
349
452
  ### Tier 1 — Security and trust
@@ -459,41 +562,88 @@ current/procedural/
459
562
 
460
563
  ### Memory Flow
461
564
 
462
- ```
463
- current/ staging .mem/
464
- ╭────────────────────┐ ╭─────────────┐ ╭──────────────────────┐
465
- episodic/ │ │ │ │ objects/ │
466
- │ session logs │ │ index.json │ │ blobs → trees →
467
- semantic/ │───►│ (staged) │───►│ commits │
468
- │ facts, prefs │ │ │ │ (content-addressable)│
469
- procedural/ │ │ │ │ │
470
- │ workflows │ ╰─────────────╯ ╰──────────────────────╯
471
- ╰────────────────────┘
472
- │ │
473
- agmem add agmem commit
474
- ```
475
-
476
- ### Merge Strategies
477
-
478
- ```
479
- Episodic Branch A ──╮
480
- (append) Branch B ──╯──► chronological append ──► ✓ no conflicts
481
-
482
- Semantic Branch A ──╮
483
- (consolidate) Branch B ──╯──► conflict markers ──► ⚠ manual review
484
-
485
- Procedural Branch A ──╮
486
- (prefer new) Branch B ──╯──► newer wins ──► ⚠ flag for review
565
+ ```mermaid
566
+ graph LR
567
+ A["📂 Working Directory<br/>current/<br/>episodic/<br/>semantic/<br/>procedural/"]
568
+ B["📝 Staging Area<br/>index.json<br/>staged files"]
569
+ C["💾 Object Storage<br/>.mem/objects/<br/>blobs → trees → commits"]
570
+ D["📍 References<br/>.mem/refs/<br/>HEAD, branches, tags"]
571
+
572
+ A -->|agmem add| B
573
+ B -->|agmem commit| C
574
+ C --> D
575
+
576
+ style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px
577
+ style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
578
+ style C fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
579
+ style D fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
580
+ ```
581
+
582
+ ### Merge Strategies by Memory Type
583
+
584
+ ```mermaid
585
+ graph TB
586
+ A["🌿 Branch A"] --> E{Memory Type?}
587
+ B["🌿 Branch B"] --> E
588
+
589
+ E -->|"<b>Episodic</b><br/>session logs"| F["⏰ Chronological<br/>Append"]
590
+ E -->|"<b>Semantic</b><br/>learned facts"| G["🤝 Conflict<br/>Markers"]
591
+ E -->|"<b>Procedural</b><br/>workflows"| H["✨ Prefer New<br/>with Flag"]
592
+
593
+ F --> I["✅ No Conflicts<br/>Deterministic merge"]
594
+ G --> J["⚠️ Manual Review<br/>Conflict markers"]
595
+ H --> J
596
+
597
+ style E fill:#ffebee,stroke:#b71c1c,stroke-width:2px
598
+ style F fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px
599
+ style G fill:#ffe0b2,stroke:#e65100,stroke-width:2px
600
+ style H fill:#b3e5fc,stroke:#01579b,stroke-width:2px
601
+ style I fill:#81c784,stroke:#1b5e20,stroke-width:2px
602
+ style J fill:#ffb74d,stroke:#e65100,stroke-width:2px
487
603
  ```
488
604
 
489
605
  ### How Others Handle Memory vs agmem
490
606
 
491
- | Tool | Approach | Gap |
492
- |------|----------|-----|
493
- | **Cursor** | Ephemeral, session-based context; no persistent version control | No history, branching, or merge for agent memory |
494
- | **Claude Code** | File-based (CLAUDE.md, .claude/rules); loaded at launch | No built-in version control; Git is not memory-type-aware |
495
- | **Mem0** | Cloud/API; vector-based persistence | No branching, merging, or "git log" for what the agent learned |
496
- | **agmem** | Git-like version control for memory | Version history, branching, merging, local-first, memory-type-aware |
607
+ ```mermaid
608
+ graph LR
609
+ subgraph Cursor ["Cursor<br/>Ephemeral"]
610
+ C1["❌ No history"]
611
+ C2["❌ No branching"]
612
+ C3["❌ Session-based"]
613
+ end
614
+
615
+ subgraph Claude ["Claude Code<br/>File-based"]
616
+ Cl1["⚠️ Manual Git"]
617
+ Cl2["❌ Not memory-aware"]
618
+ Cl3["⚠️ At launch"]
619
+ end
620
+
621
+ subgraph Mem0 ["Mem0<br/>Cloud/Vector"]
622
+ M1["⚠️ Proprietary"]
623
+ M2["❌ No branching"]
624
+ M3["❌ Black box"]
625
+ end
626
+
627
+ subgraph agmem_box ["agmem<br/>Git for Memory"]
628
+ A1["✅ Full history"]
629
+ A2["✅ Branches & merge"]
630
+ A3["✅ Local-first"]
631
+ A4["✅ Type-aware"]
632
+ A5["✅ Open source"]
633
+ end
634
+
635
+ style Cursor fill:#ffebee,stroke:#c62828,stroke-width:2px
636
+ style Claude fill:#fff3e0,stroke:#f57c00,stroke-width:2px
637
+ style Mem0 fill:#ede7f6,stroke:#512da8,stroke-width:2px
638
+ style agmem_box fill:#c8e6c9,stroke:#1b5e20,stroke-width:3px
639
+ ```
640
+
641
+ | Tool | Approach | agmem Advantage |
642
+ |------|----------|--------|
643
+ | **Cursor** | Ephemeral, session-based context | ✅ Full history, persistent, branching |
644
+ | **Claude Code** | File-based (CLAUDE.md); needs Git | ✅ Memory-type-aware merge strategies |
645
+ | **Mem0** | Cloud/API with vector persistence | ✅ Local-first, transparent, version control |
646
+ | **agmem** | 🎯 **Git for Agent Memory** | Version history, branching, merging, local-first, type-aware |
497
647
 
498
648
  ## Example: Multi-Agent Collaboration
499
649
 
@@ -594,23 +744,44 @@ Repo overrides user. **Never put secrets in config files.** Credentials are supp
594
744
 
595
745
  agmem follows Git's proven architecture:
596
746
 
597
- ```
598
- ╔═══════════════════════════════════════════════════════════════════════╗
599
- ║ PORCELAIN · What you type
600
- ╠═══════════════════════════════════════════════════════════════════════╣
601
- ║ init add commit status log · branch checkout merge
602
- ║ diff show tag reset tree · stash clean blame reflog ║
603
- ║ clone push pull remote fsck · graph search serve daemon
604
- ╠═══════════════════════════════════════════════════════════════════════╣
605
- ║ PLUMBING · What happens under the hood ║
606
- ╠═══════════════════════════════════════════════════════════════════════╣
607
- ║ objects (blob, tree, commit) · refs (HEAD, branches, tags) ║
608
- ║ staging area ║
609
- ╠═══════════════════════════════════════════════════════════════════════╣
610
- ║ STORAGE · On disk ║
611
- ╠═══════════════════════════════════════════════════════════════════════╣
612
- SHA-256 hashing · zlib compression · deduplication ║
613
- ╚═══════════════════════════════════════════════════════════════════════╝
747
+ ```mermaid
748
+ graph TB
749
+ subgraph Commands ["🎯 Commands - Porcelain (What you type)"]
750
+ A1["init, add, commit, status, log, diff, show, tag, reset, tree"]
751
+ A2["branch, checkout, merge, stash, clean, blame, reflog"]
752
+ A3["clone, push, pull, remote, fsck, verify, audit, resolve"]
753
+ A4["gc, prove, federated, search, graph, serve, daemon, garden"]
754
+ end
755
+
756
+ subgraph Core ["⚙️ Core Operations - Plumbing (What happens)"]
757
+ B1["Staging Area<br/>index.json"]
758
+ B2["Objects<br/>Blob, Tree, Commit, Tag"]
759
+ B3["References<br/>HEAD, Branches, Tags"]
760
+ B4["Memory-type Merge<br/>Episodic, Semantic, Procedural"]
761
+ end
762
+
763
+ subgraph Storage ["💾 Storage - Disk (Where data lives)"]
764
+ C1["SHA-256 Hashing"]
765
+ C2["zlib Compression"]
766
+ C3["Deduplication"]
767
+ C4["Validation<br/>Path, Ref, Hash"]
768
+ end
769
+
770
+ subgraph Features ["🔐 Advanced Features"]
771
+ D1["Crypto Verification<br/>Merkle, Ed25519"]
772
+ D2["Encryption at Rest<br/>AES-256-GCM"]
773
+ D3["Privacy<br/>Differential Privacy"]
774
+ D4["Trust & Audit<br/>Multi-agent, Hash-chain"]
775
+ end
776
+
777
+ Commands --> Core
778
+ Core --> Storage
779
+ Storage --> Features
780
+
781
+ style Commands fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
782
+ style Core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
783
+ style Storage fill:#fff3e0,stroke:#f57c00,stroke-width:2px
784
+ style Features fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
614
785
  ```
615
786
 
616
787
  ## Development
@@ -47,6 +47,61 @@ agmem solves all of these problems with a familiar Git-like interface.
47
47
  - ✅ **GPU acceleration** — Vector store detects GPU for embedding model when available
48
48
  - ✅ **Optional** — `serve`, `daemon` (watch + auto-commit), `garden` (episode archival), MCP server; install extras as needed
49
49
 
50
+ ### Feature Coverage
51
+
52
+ ```mermaid
53
+ graph TB
54
+ subgraph Core ["🔧 Core Features"]
55
+ Core1["✅ Git-like commands<br/>init, add, commit, log, branch, merge"]
56
+ Core2["✅ Content-addressable storage<br/>SHA-256, zlib, dedup"]
57
+ Core3["✅ Memory-type merge<br/>Episodic, Semantic, Procedural"]
58
+ end
59
+
60
+ subgraph Collab ["👥 Collaboration"]
61
+ Collab1["✅ Remote push/pull<br/>file:// URLs, conflict detection"]
62
+ Collab2["✅ Multi-agent trust<br/>Trust store, key verification"]
63
+ Collab3["✅ Federated sync<br/>Coordinator API"]
64
+ end
65
+
66
+ subgraph Safety ["🔒 Safety & Integrity"]
67
+ Safety1["✅ Cryptographic<br/>Merkle, Ed25519"]
68
+ Safety2["✅ Tamper detection<br/>Audit trail, hash-chain"]
69
+ Safety3["✅ Encryption at rest<br/>AES-256-GCM"]
70
+ end
71
+
72
+ subgraph Privacy ["🕵️ Privacy"]
73
+ Privacy1["✅ Differential privacy<br/>Epsilon/delta budget"]
74
+ Privacy2["✅ Zero-knowledge proofs<br/>Keyword, Freshness"]
75
+ Privacy3["✅ PII scanning<br/>Pre-commit hooks"]
76
+ end
77
+
78
+ subgraph Intelligence ["🧠 Intelligence"]
79
+ Intel1["✅ Semantic search<br/>Vector + Text fallback"]
80
+ Intel2["✅ Knowledge graph<br/>Wikilinks, Co-occurrence"]
81
+ Intel3["✅ LLM integration<br/>OpenAI, Anthropic"]
82
+ Intel4["✅ Temporal queries<br/>Point-in-time, Range"]
83
+ end
84
+
85
+ subgraph Ops ["⚙️ Operations"]
86
+ Ops1["✅ Pack/GC<br/>Object packing, cleanup"]
87
+ Ops2["✅ Daemon mode<br/>Watch + auto-commit"]
88
+ Ops3["✅ IPFS/S3/GCS<br/>Distributed storage"]
89
+ end
90
+
91
+ Core --> Collab
92
+ Collab --> Safety
93
+ Safety --> Privacy
94
+ Privacy --> Intelligence
95
+ Intelligence --> Ops
96
+
97
+ style Core fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
98
+ style Collab fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
99
+ style Safety fill:#ffebee,stroke:#c62828,stroke-width:2px
100
+ style Privacy fill:#e1f5fe,stroke:#01579b,stroke-width:2px
101
+ style Intelligence fill:#f1f8e9,stroke:#558b2f,stroke-width:2px
102
+ style Ops fill:#fff3e0,stroke:#e65100,stroke-width:2px
103
+ ```
104
+
50
105
  ## Quick Start
51
106
 
52
107
  ### Installation
@@ -247,8 +302,56 @@ Verifies objects, refs, and (if installed) the vector store. When commit metadat
247
302
 
248
303
  ---
249
304
 
305
+ ## Security Architecture
306
+
307
+ agmem implements security in layers. Choose what you need:
308
+
309
+ ```mermaid
310
+ graph TB
311
+ subgraph L1 ["🔒 Tier 1: Cryptographic Integrity"]
312
+ T1A["✅ Merkle tree<br/>over blobs"]
313
+ T1B["✅ Ed25519<br/>signatures"]
314
+ T1C["✅ Tamper<br/>detection"]
315
+ end
316
+
317
+ subgraph L2 ["🔐 Tier 2: Multi-Agent Trust"]
318
+ T2A["✅ Trust store<br/>per public key"]
319
+ T2B["✅ Multi-agent<br/>collaboration"]
320
+ T2C["✅ Conflict<br/>resolution"]
321
+ end
322
+
323
+ subgraph L3 ["🕵️ Tier 3: Privacy & Anonymity"]
324
+ T3A["✅ Differential<br/>Privacy budget"]
325
+ T3B["✅ Zero-Knowledge<br/>Proofs"]
326
+ T3C["✅ Encrypted<br/>at rest"]
327
+ end
328
+
329
+ subgraph L4 ["🌐 Tier 4: Distribution"]
330
+ T4A["✅ S3/GCS<br/>remotes"]
331
+ T4B["✅ IPFS<br/>support"]
332
+ T4C["✅ Pack files<br/>& GC"]
333
+ end
334
+
335
+ subgraph L5 ["📊 Tier 5: Audit & Compliance"]
336
+ T5A["✅ Append-only<br/>audit log"]
337
+ T5B["✅ Hash-chained<br/>verification"]
338
+ T5C["✅ Full history<br/>& blame"]
339
+ end
340
+
341
+ L1 --> L2 --> L3 --> L4 --> L5
342
+
343
+ style L1 fill:#ffebee,stroke:#c62828
344
+ style L2 fill:#ede7f6,stroke:#512da8
345
+ style L3 fill:#e1f5fe,stroke:#01579b
346
+ style L4 fill:#f3e5f5,stroke:#7b1fa2
347
+ style L5 fill:#e8f5e9,stroke:#1b5e20
348
+ ```
349
+
350
+ ---
351
+
250
352
  ## Security, trust & advanced features
251
353
 
354
+
252
355
  The following 18 capabilities are implemented (or stubbed) per the agmem features implementation plan. They are grouped by tier.
253
356
 
254
357
  ### Tier 1 — Security and trust
@@ -364,41 +467,88 @@ current/procedural/
364
467
 
365
468
  ### Memory Flow
366
469
 
367
- ```
368
- current/ staging .mem/
369
- ╭────────────────────┐ ╭─────────────┐ ╭──────────────────────┐
370
- episodic/ │ │ │ │ objects/ │
371
- │ session logs │ │ index.json │ │ blobs → trees →
372
- semantic/ │───►│ (staged) │───►│ commits │
373
- │ facts, prefs │ │ │ │ (content-addressable)│
374
- procedural/ │ │ │ │ │
375
- │ workflows │ ╰─────────────╯ ╰──────────────────────╯
376
- ╰────────────────────┘
377
- │ │
378
- agmem add agmem commit
379
- ```
380
-
381
- ### Merge Strategies
382
-
383
- ```
384
- Episodic Branch A ──╮
385
- (append) Branch B ──╯──► chronological append ──► ✓ no conflicts
386
-
387
- Semantic Branch A ──╮
388
- (consolidate) Branch B ──╯──► conflict markers ──► ⚠ manual review
389
-
390
- Procedural Branch A ──╮
391
- (prefer new) Branch B ──╯──► newer wins ──► ⚠ flag for review
470
+ ```mermaid
471
+ graph LR
472
+ A["📂 Working Directory<br/>current/<br/>episodic/<br/>semantic/<br/>procedural/"]
473
+ B["📝 Staging Area<br/>index.json<br/>staged files"]
474
+ C["💾 Object Storage<br/>.mem/objects/<br/>blobs → trees → commits"]
475
+ D["📍 References<br/>.mem/refs/<br/>HEAD, branches, tags"]
476
+
477
+ A -->|agmem add| B
478
+ B -->|agmem commit| C
479
+ C --> D
480
+
481
+ style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px
482
+ style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
483
+ style C fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
484
+ style D fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
485
+ ```
486
+
487
+ ### Merge Strategies by Memory Type
488
+
489
+ ```mermaid
490
+ graph TB
491
+ A["🌿 Branch A"] --> E{Memory Type?}
492
+ B["🌿 Branch B"] --> E
493
+
494
+ E -->|"<b>Episodic</b><br/>session logs"| F["⏰ Chronological<br/>Append"]
495
+ E -->|"<b>Semantic</b><br/>learned facts"| G["🤝 Conflict<br/>Markers"]
496
+ E -->|"<b>Procedural</b><br/>workflows"| H["✨ Prefer New<br/>with Flag"]
497
+
498
+ F --> I["✅ No Conflicts<br/>Deterministic merge"]
499
+ G --> J["⚠️ Manual Review<br/>Conflict markers"]
500
+ H --> J
501
+
502
+ style E fill:#ffebee,stroke:#b71c1c,stroke-width:2px
503
+ style F fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px
504
+ style G fill:#ffe0b2,stroke:#e65100,stroke-width:2px
505
+ style H fill:#b3e5fc,stroke:#01579b,stroke-width:2px
506
+ style I fill:#81c784,stroke:#1b5e20,stroke-width:2px
507
+ style J fill:#ffb74d,stroke:#e65100,stroke-width:2px
392
508
  ```
393
509
 
394
510
  ### How Others Handle Memory vs agmem
395
511
 
396
- | Tool | Approach | Gap |
397
- |------|----------|-----|
398
- | **Cursor** | Ephemeral, session-based context; no persistent version control | No history, branching, or merge for agent memory |
399
- | **Claude Code** | File-based (CLAUDE.md, .claude/rules); loaded at launch | No built-in version control; Git is not memory-type-aware |
400
- | **Mem0** | Cloud/API; vector-based persistence | No branching, merging, or "git log" for what the agent learned |
401
- | **agmem** | Git-like version control for memory | Version history, branching, merging, local-first, memory-type-aware |
512
+ ```mermaid
513
+ graph LR
514
+ subgraph Cursor ["Cursor<br/>Ephemeral"]
515
+ C1["❌ No history"]
516
+ C2["❌ No branching"]
517
+ C3["❌ Session-based"]
518
+ end
519
+
520
+ subgraph Claude ["Claude Code<br/>File-based"]
521
+ Cl1["⚠️ Manual Git"]
522
+ Cl2["❌ Not memory-aware"]
523
+ Cl3["⚠️ At launch"]
524
+ end
525
+
526
+ subgraph Mem0 ["Mem0<br/>Cloud/Vector"]
527
+ M1["⚠️ Proprietary"]
528
+ M2["❌ No branching"]
529
+ M3["❌ Black box"]
530
+ end
531
+
532
+ subgraph agmem_box ["agmem<br/>Git for Memory"]
533
+ A1["✅ Full history"]
534
+ A2["✅ Branches & merge"]
535
+ A3["✅ Local-first"]
536
+ A4["✅ Type-aware"]
537
+ A5["✅ Open source"]
538
+ end
539
+
540
+ style Cursor fill:#ffebee,stroke:#c62828,stroke-width:2px
541
+ style Claude fill:#fff3e0,stroke:#f57c00,stroke-width:2px
542
+ style Mem0 fill:#ede7f6,stroke:#512da8,stroke-width:2px
543
+ style agmem_box fill:#c8e6c9,stroke:#1b5e20,stroke-width:3px
544
+ ```
545
+
546
+ | Tool | Approach | agmem Advantage |
547
+ |------|----------|--------|
548
+ | **Cursor** | Ephemeral, session-based context | ✅ Full history, persistent, branching |
549
+ | **Claude Code** | File-based (CLAUDE.md); needs Git | ✅ Memory-type-aware merge strategies |
550
+ | **Mem0** | Cloud/API with vector persistence | ✅ Local-first, transparent, version control |
551
+ | **agmem** | 🎯 **Git for Agent Memory** | Version history, branching, merging, local-first, type-aware |
402
552
 
403
553
  ## Example: Multi-Agent Collaboration
404
554
 
@@ -499,23 +649,44 @@ Repo overrides user. **Never put secrets in config files.** Credentials are supp
499
649
 
500
650
  agmem follows Git's proven architecture:
501
651
 
502
- ```
503
- ╔═══════════════════════════════════════════════════════════════════════╗
504
- ║ PORCELAIN · What you type
505
- ╠═══════════════════════════════════════════════════════════════════════╣
506
- ║ init add commit status log · branch checkout merge
507
- ║ diff show tag reset tree · stash clean blame reflog ║
508
- ║ clone push pull remote fsck · graph search serve daemon
509
- ╠═══════════════════════════════════════════════════════════════════════╣
510
- ║ PLUMBING · What happens under the hood ║
511
- ╠═══════════════════════════════════════════════════════════════════════╣
512
- ║ objects (blob, tree, commit) · refs (HEAD, branches, tags) ║
513
- ║ staging area ║
514
- ╠═══════════════════════════════════════════════════════════════════════╣
515
- ║ STORAGE · On disk ║
516
- ╠═══════════════════════════════════════════════════════════════════════╣
517
- SHA-256 hashing · zlib compression · deduplication ║
518
- ╚═══════════════════════════════════════════════════════════════════════╝
652
+ ```mermaid
653
+ graph TB
654
+ subgraph Commands ["🎯 Commands - Porcelain (What you type)"]
655
+ A1["init, add, commit, status, log, diff, show, tag, reset, tree"]
656
+ A2["branch, checkout, merge, stash, clean, blame, reflog"]
657
+ A3["clone, push, pull, remote, fsck, verify, audit, resolve"]
658
+ A4["gc, prove, federated, search, graph, serve, daemon, garden"]
659
+ end
660
+
661
+ subgraph Core ["⚙️ Core Operations - Plumbing (What happens)"]
662
+ B1["Staging Area<br/>index.json"]
663
+ B2["Objects<br/>Blob, Tree, Commit, Tag"]
664
+ B3["References<br/>HEAD, Branches, Tags"]
665
+ B4["Memory-type Merge<br/>Episodic, Semantic, Procedural"]
666
+ end
667
+
668
+ subgraph Storage ["💾 Storage - Disk (Where data lives)"]
669
+ C1["SHA-256 Hashing"]
670
+ C2["zlib Compression"]
671
+ C3["Deduplication"]
672
+ C4["Validation<br/>Path, Ref, Hash"]
673
+ end
674
+
675
+ subgraph Features ["🔐 Advanced Features"]
676
+ D1["Crypto Verification<br/>Merkle, Ed25519"]
677
+ D2["Encryption at Rest<br/>AES-256-GCM"]
678
+ D3["Privacy<br/>Differential Privacy"]
679
+ D4["Trust & Audit<br/>Multi-agent, Hash-chain"]
680
+ end
681
+
682
+ Commands --> Core
683
+ Core --> Storage
684
+ Storage --> Features
685
+
686
+ style Commands fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
687
+ style Core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
688
+ style Storage fill:#fff3e0,stroke:#f57c00,stroke-width:2px
689
+ style Features fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
519
690
  ```
520
691
 
521
692
  ## Development