alma-memory 0.5.0__tar.gz → 0.7.0__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.
- {alma_memory-0.5.0 → alma_memory-0.7.0}/PKG-INFO +244 -72
- {alma_memory-0.5.0 → alma_memory-0.7.0}/README.md +1017 -849
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/__init__.py +296 -194
- alma_memory-0.7.0/alma/compression/__init__.py +33 -0
- alma_memory-0.7.0/alma/compression/pipeline.py +980 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/confidence/__init__.py +47 -47
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/confidence/engine.py +540 -540
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/confidence/types.py +351 -351
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/config/loader.py +157 -157
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/consolidation/__init__.py +23 -23
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/consolidation/engine.py +678 -678
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/consolidation/prompts.py +84 -84
- alma_memory-0.7.0/alma/core.py +1189 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/domains/__init__.py +30 -30
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/domains/factory.py +359 -359
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/domains/schemas.py +448 -448
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/domains/types.py +272 -272
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/events/__init__.py +75 -75
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/events/emitter.py +285 -284
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/events/storage_mixin.py +246 -246
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/events/types.py +126 -126
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/events/webhook.py +425 -425
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/exceptions.py +49 -49
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/extraction/__init__.py +31 -31
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/extraction/auto_learner.py +265 -264
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/extraction/extractor.py +420 -420
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/graph/__init__.py +106 -81
- alma_memory-0.7.0/alma/graph/backends/__init__.py +32 -0
- alma_memory-0.7.0/alma/graph/backends/kuzu.py +624 -0
- alma_memory-0.7.0/alma/graph/backends/memgraph.py +432 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/graph/backends/memory.py +236 -236
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/graph/backends/neo4j.py +417 -417
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/graph/base.py +159 -159
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/graph/extraction.py +198 -198
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/graph/store.py +860 -860
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/harness/__init__.py +35 -35
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/harness/base.py +386 -386
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/harness/domains.py +705 -705
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/initializer/__init__.py +37 -37
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/initializer/initializer.py +418 -418
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/initializer/types.py +250 -250
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/integration/__init__.py +62 -62
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/integration/claude_agents.py +444 -432
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/integration/helena.py +423 -423
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/integration/victor.py +471 -471
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/learning/__init__.py +101 -86
- alma_memory-0.7.0/alma/learning/decay.py +878 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/learning/forgetting.py +1446 -1446
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/learning/heuristic_extractor.py +390 -390
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/learning/protocols.py +374 -374
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/learning/validation.py +346 -346
- alma_memory-0.7.0/alma/mcp/__init__.py +123 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/mcp/__main__.py +156 -156
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/mcp/resources.py +122 -122
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/mcp/server.py +955 -591
- alma_memory-0.7.0/alma/mcp/tools.py +3254 -0
- alma_memory-0.7.0/alma/observability/__init__.py +91 -0
- alma_memory-0.7.0/alma/observability/config.py +302 -0
- alma_memory-0.7.0/alma/observability/guidelines.py +170 -0
- alma_memory-0.7.0/alma/observability/logging.py +424 -0
- alma_memory-0.7.0/alma/observability/metrics.py +583 -0
- alma_memory-0.7.0/alma/observability/tracing.py +440 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/progress/__init__.py +21 -21
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/progress/tracker.py +607 -607
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/progress/types.py +250 -250
- alma_memory-0.7.0/alma/retrieval/__init__.py +134 -0
- alma_memory-0.7.0/alma/retrieval/budget.py +525 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/retrieval/cache.py +1304 -1061
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/retrieval/embeddings.py +202 -202
- alma_memory-0.7.0/alma/retrieval/engine.py +850 -0
- alma_memory-0.7.0/alma/retrieval/modes.py +365 -0
- alma_memory-0.7.0/alma/retrieval/progressive.py +560 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/retrieval/scoring.py +344 -344
- alma_memory-0.7.0/alma/retrieval/trust_scoring.py +637 -0
- alma_memory-0.7.0/alma/retrieval/verification.py +797 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/session/__init__.py +19 -19
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/session/manager.py +442 -399
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/session/types.py +288 -288
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/storage/__init__.py +101 -61
- alma_memory-0.7.0/alma/storage/archive.py +233 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/storage/azure_cosmos.py +1259 -1048
- alma_memory-0.7.0/alma/storage/base.py +1083 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/storage/chroma.py +1443 -1443
- alma_memory-0.7.0/alma/storage/constants.py +103 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/storage/file_based.py +614 -619
- alma_memory-0.7.0/alma/storage/migrations/__init__.py +21 -0
- alma_memory-0.7.0/alma/storage/migrations/base.py +321 -0
- alma_memory-0.7.0/alma/storage/migrations/runner.py +323 -0
- alma_memory-0.7.0/alma/storage/migrations/version_stores.py +337 -0
- alma_memory-0.7.0/alma/storage/migrations/versions/__init__.py +11 -0
- alma_memory-0.7.0/alma/storage/migrations/versions/v1_0_0.py +373 -0
- alma_memory-0.7.0/alma/storage/migrations/versions/v1_1_0_workflow_context.py +551 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/storage/pinecone.py +1080 -1080
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/storage/postgresql.py +1948 -1452
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/storage/qdrant.py +1306 -1306
- alma_memory-0.7.0/alma/storage/sqlite_local.py +3041 -0
- alma_memory-0.7.0/alma/testing/__init__.py +46 -0
- alma_memory-0.7.0/alma/testing/factories.py +301 -0
- alma_memory-0.7.0/alma/testing/mocks.py +389 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/types.py +292 -264
- alma_memory-0.7.0/alma/utils/__init__.py +19 -0
- alma_memory-0.7.0/alma/utils/tokenizer.py +521 -0
- alma_memory-0.7.0/alma/workflow/__init__.py +83 -0
- alma_memory-0.7.0/alma/workflow/artifacts.py +170 -0
- alma_memory-0.7.0/alma/workflow/checkpoint.py +311 -0
- alma_memory-0.7.0/alma/workflow/context.py +228 -0
- alma_memory-0.7.0/alma/workflow/outcomes.py +189 -0
- alma_memory-0.7.0/alma/workflow/reducers.py +393 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma_memory.egg-info/PKG-INFO +244 -72
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma_memory.egg-info/SOURCES.txt +36 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma_memory.egg-info/requires.txt +6 -1
- {alma_memory-0.5.0 → alma_memory-0.7.0}/pyproject.toml +161 -154
- alma_memory-0.5.0/alma/core.py +0 -322
- alma_memory-0.5.0/alma/graph/backends/__init__.py +0 -18
- alma_memory-0.5.0/alma/mcp/__init__.py +0 -45
- alma_memory-0.5.0/alma/mcp/tools.py +0 -511
- alma_memory-0.5.0/alma/retrieval/__init__.py +0 -53
- alma_memory-0.5.0/alma/retrieval/engine.py +0 -366
- alma_memory-0.5.0/alma/storage/base.py +0 -525
- alma_memory-0.5.0/alma/storage/sqlite_local.py +0 -1358
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/config/__init__.py +0 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma/py.typed +0 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma_memory.egg-info/dependency_links.txt +0 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/alma_memory.egg-info/top_level.txt +0 -0
- {alma_memory-0.5.0 → alma_memory-0.7.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alma-memory
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Agent Learning Memory Architecture - Persistent memory for AI agents
|
|
5
5
|
Author-email: RBKunnela <aiagentsprompt@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -41,6 +41,10 @@ Requires-Dist: pinecone>=3.0.0; extra == "pinecone"
|
|
|
41
41
|
Provides-Extra: mcp
|
|
42
42
|
Requires-Dist: pydantic>=2.0.0; extra == "mcp"
|
|
43
43
|
Requires-Dist: aiohttp>=3.9.0; extra == "mcp"
|
|
44
|
+
Provides-Extra: observability
|
|
45
|
+
Requires-Dist: opentelemetry-api>=1.20.0; extra == "observability"
|
|
46
|
+
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == "observability"
|
|
47
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.20.0; extra == "observability"
|
|
44
48
|
Provides-Extra: dev
|
|
45
49
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
46
50
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
@@ -52,17 +56,70 @@ Requires-Dist: black>=24.0.0; extra == "dev"
|
|
|
52
56
|
Requires-Dist: bandit[toml]>=1.7.0; extra == "dev"
|
|
53
57
|
Requires-Dist: numpy>=1.24.0; extra == "dev"
|
|
54
58
|
Provides-Extra: all
|
|
55
|
-
Requires-Dist: alma-memory[azure,chroma,dev,local,mcp,pinecone,postgres,qdrant]; extra == "all"
|
|
59
|
+
Requires-Dist: alma-memory[azure,chroma,dev,local,mcp,observability,pinecone,postgres,qdrant]; extra == "all"
|
|
56
60
|
|
|
57
61
|
# ALMA - Agent Learning Memory Architecture
|
|
58
62
|
|
|
59
63
|
[](https://pypi.org/project/alma-memory/)
|
|
64
|
+
[](https://github.com/RBKunnela/ALMA-memory/pkgs/npm/alma-memory)
|
|
60
65
|
[](https://www.python.org/downloads/)
|
|
61
66
|
[](https://opensource.org/licenses/MIT)
|
|
62
67
|
[](https://github.com/RBKunnela/ALMA-memory/actions/workflows/ci.yml)
|
|
63
|
-
[](https://alma-memory.pages.dev)
|
|
69
|
+
[](https://buymeacoffee.com/aiagentsprp)
|
|
64
70
|
|
|
65
|
-
>
|
|
71
|
+
<div align="center">
|
|
72
|
+
|
|
73
|
+
### 🧠 AI Agents That Actually Learn
|
|
74
|
+
|
|
75
|
+
**Persistent memory for AI agents that improves over time - no fine-tuning required.**
|
|
76
|
+
|
|
77
|
+
[**🌐 Visit alma-memory.pages.dev →**](https://alma-memory.pages.dev)
|
|
78
|
+
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
**[📖 Documentation](https://alma-memory.pages.dev)** · **[🔧 Technical Reference](docs/TECHNICAL.md)** · **[📦 PyPI](https://pypi.org/project/alma-memory/)** · **[📦 npm](https://github.com/RBKunnela/ALMA-memory/pkgs/npm/alma-memory)** · **[☕ Support](https://buymeacoffee.com/aiagentsprp)**
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Looking for a Mem0 Alternative? LangChain Memory Replacement?
|
|
88
|
+
|
|
89
|
+
**ALMA is the answer.** If you've tried Mem0 or LangChain Memory and found them lacking for production AI agents, ALMA was built specifically to solve those gaps:
|
|
90
|
+
|
|
91
|
+
| If you need... | Mem0 | LangChain | **ALMA** |
|
|
92
|
+
|----------------|------|-----------|----------|
|
|
93
|
+
| Scoped learning (agents only learn their domain) | ❌ | ❌ | ✅ |
|
|
94
|
+
| Anti-pattern tracking (what NOT to do) | ❌ | ❌ | ✅ |
|
|
95
|
+
| Multi-agent knowledge sharing | ❌ | ❌ | ✅ |
|
|
96
|
+
| TypeScript/JavaScript SDK | ❌ | ✅ | ✅ |
|
|
97
|
+
| MCP integration (Claude Code) | ❌ | ❌ | ✅ |
|
|
98
|
+
| 6 vector database backends | Limited | Limited | ✅ |
|
|
99
|
+
| Graph memory for relationships | Limited | Limited | ✅ |
|
|
100
|
+
| Workflow checkpoints & state merging | ❌ | ❌ | ✅ |
|
|
101
|
+
|
|
102
|
+
**See detailed comparisons:** [ALMA vs Mem0](https://alma-memory.pages.dev/comparison/mem0-vs-alma.html) · [ALMA vs LangChain Memory](https://alma-memory.pages.dev/comparison/langchain-memory-vs-alma.html)
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## The Problem I Solved
|
|
107
|
+
|
|
108
|
+
I was building AI agents for automated testing. Helena for frontend QA, Victor for backend verification. They worked great... until they didn't.
|
|
109
|
+
|
|
110
|
+
**The same mistakes kept happening:**
|
|
111
|
+
|
|
112
|
+
- Helena would use `sleep(5000)` for waits, causing flaky tests
|
|
113
|
+
- Victor would forget that the API uses JWT with 24-hour expiry
|
|
114
|
+
- Both agents would repeat failed strategies session after session
|
|
115
|
+
|
|
116
|
+
Every conversation started fresh. No memory. No learning. Just an expensive LLM making the same mistakes I'd already corrected.
|
|
117
|
+
|
|
118
|
+
I tried **Mem0**. It stores memories, but no way to scope what an agent can learn, no anti-pattern tracking, no multi-agent sharing. I looked at **LangChain Memory**. It's for conversation context, not long-term learning.
|
|
119
|
+
|
|
120
|
+
**Nothing fit. So I built ALMA.**
|
|
121
|
+
|
|
122
|
+
The core insight: AI agents don't need to modify their weights to "learn." They need **smart prompts** built from **relevant past experiences.**
|
|
66
123
|
|
|
67
124
|
---
|
|
68
125
|
|
|
@@ -79,7 +136,7 @@ ALMA isn't just another memory framework. Here's what sets it apart from alterna
|
|
|
79
136
|
| **Event System** | Webhooks + in-process callbacks | None | React to memory changes in real-time |
|
|
80
137
|
| **TypeScript SDK** | Full-featured client library | None | First-class JavaScript/TypeScript support |
|
|
81
138
|
| **Vector DB Support** | 6 backends (PostgreSQL, Qdrant, Pinecone, Chroma, SQLite, Azure) | Limited | Deploy anywhere |
|
|
82
|
-
| **Graph Memory** | Pluggable backends (Neo4j, In-memory) | Limited | Entity relationship tracking |
|
|
139
|
+
| **Graph Memory** | Pluggable backends (Neo4j, Memgraph, Kuzu, In-memory) | Limited | Entity relationship tracking |
|
|
83
140
|
| **Harness Pattern** | Decouples agent from domain memory | None | Reusable agent architecture |
|
|
84
141
|
| **MCP Integration** | Native stdio/HTTP server | None | Direct Claude Code integration |
|
|
85
142
|
| **Domain Memory Factory** | 6 pre-built schemas | None | Instant setup for any domain |
|
|
@@ -87,58 +144,81 @@ ALMA isn't just another memory framework. Here's what sets it apart from alterna
|
|
|
87
144
|
|
|
88
145
|
**Bottom line:** ALMA is purpose-built for AI agents that need to learn, remember, and improve - not just store and retrieve.
|
|
89
146
|
|
|
147
|
+
### Quick Comparison: ALMA vs Mem0 vs Graphiti
|
|
148
|
+
|
|
149
|
+
| Feature | ALMA | Mem0 | Graphiti |
|
|
150
|
+
|---------|------|------|----------|
|
|
151
|
+
| Memory Scoping | ✅ `can_learn`/`cannot_learn` | ❌ | ❌ |
|
|
152
|
+
| Anti-Pattern Learning | ✅ `why_bad` + `better_alternative` | ❌ | ❌ |
|
|
153
|
+
| Multi-Agent Inheritance | ✅ `inherit_from`/`share_with` | ❌ | ❌ |
|
|
154
|
+
| Multi-Factor Scoring | ✅ 4 factors (similarity + recency + success + confidence) | ❌ similarity only | ❌ similarity only |
|
|
155
|
+
| MCP Integration | ✅ 16 tools | ❌ | ❌ |
|
|
156
|
+
| Workflow Checkpoints | ✅ | ❌ | ❌ |
|
|
157
|
+
| TypeScript SDK | ✅ | ❌ | ❌ |
|
|
158
|
+
| Graph + Vector Hybrid | ✅ | Limited | ✅ |
|
|
159
|
+
|
|
160
|
+
**The key insight:** Most solutions treat memory as "store embeddings, retrieve similar." ALMA treats it as "teach agents to improve within safe boundaries."
|
|
161
|
+
|
|
90
162
|
---
|
|
91
163
|
|
|
92
|
-
## What's New in v0.
|
|
93
|
-
|
|
94
|
-
###
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
164
|
+
## What's New in v0.6.0
|
|
165
|
+
|
|
166
|
+
### Workflow Context Layer
|
|
167
|
+
|
|
168
|
+
The major theme of v0.6.0 is **multi-agent workflow support** - enabling agents to coordinate across long-running tasks with checkpoints, state merging, and artifact tracking.
|
|
169
|
+
|
|
170
|
+
- **Checkpoint & Resume** (`alma/workflow/`)
|
|
171
|
+
- Save workflow state at any point: `alma.checkpoint(workflow_id, state, metadata)`
|
|
172
|
+
- Resume from checkpoints after failures or handoffs: `alma.resume(workflow_id)`
|
|
173
|
+
- Automatic cleanup of old checkpoints: `alma.cleanup_checkpoints(older_than_days=7)`
|
|
174
|
+
|
|
175
|
+
- **State Reducers for Multi-Agent Workflows**
|
|
176
|
+
- Merge states from parallel agents: `alma.merge_states(workflow_id, states, reducer)`
|
|
177
|
+
- Built-in reducers: `latest_wins`, `merge_lists`, `priority_agent`
|
|
178
|
+
- Custom reducer functions for complex merge logic
|
|
179
|
+
|
|
180
|
+
- **Artifact Linking**
|
|
181
|
+
- Link outputs to workflows: `alma.link_artifact(workflow_id, artifact_type, ref)`
|
|
182
|
+
- Artifact types: `code`, `test`, `document`, `config`, `deployment`
|
|
183
|
+
- Retrieve all artifacts: `alma.get_artifacts(workflow_id)`
|
|
184
|
+
|
|
185
|
+
- **Scoped Retrieval**
|
|
186
|
+
- Filter memories by workflow context: `alma.retrieve_scoped(query, scope)`
|
|
187
|
+
- Scopes: `workflow_only`, `agent_only`, `project_wide`
|
|
188
|
+
|
|
189
|
+
- **Session Persistence**
|
|
190
|
+
- Session handoffs now persist to storage backend
|
|
191
|
+
- Lazy loading for performance
|
|
192
|
+
- Survives process restarts
|
|
193
|
+
|
|
194
|
+
- **MCP Workflow Tools** (8 new tools)
|
|
195
|
+
- `alma_consolidate`, `alma_checkpoint`, `alma_resume`
|
|
196
|
+
- `alma_merge_states`, `alma_workflow_learn`
|
|
197
|
+
- `alma_link_artifact`, `alma_get_artifacts`
|
|
198
|
+
- `alma_cleanup_checkpoints`, `alma_retrieve_scoped`
|
|
199
|
+
|
|
200
|
+
- **TypeScript SDK v0.6.0** (`packages/alma-memory-js/`)
|
|
201
|
+
- Full workflow API parity with Python SDK
|
|
202
|
+
- 9 new methods: `consolidate()`, `checkpoint()`, `resume()`, `mergeStates()`, `workflowLearn()`, `linkArtifact()`, `getArtifacts()`, `cleanupCheckpoints()`, `retrieveScoped()`
|
|
203
|
+
- 25+ new TypeScript types for workflow context
|
|
204
|
+
- Published to GitHub Packages: `@rbkunnela/alma-memory`
|
|
205
|
+
|
|
206
|
+
### Previous Releases
|
|
207
|
+
|
|
208
|
+
<details>
|
|
209
|
+
<summary>v0.5.0 - Vector Database Backends</summary>
|
|
210
|
+
|
|
211
|
+
- **Qdrant Backend** - Full vector similarity search with metadata filtering
|
|
212
|
+
- **Pinecone Backend** - Serverless spec support, namespace organization
|
|
213
|
+
- **Chroma Backend** - Persistent, client-server, and ephemeral modes
|
|
214
|
+
- **Graph Database Abstraction** - Neo4j, Memgraph, Kuzu, In-memory backends
|
|
215
|
+
- **Testing Module** - MockStorage, MockEmbedder, factory functions
|
|
216
|
+
- **Memory Consolidation Engine** - LLM-powered deduplication
|
|
217
|
+
- **Event System** - Webhooks + in-process callbacks
|
|
218
|
+
- **TypeScript SDK** - Initial release with core API
|
|
219
|
+
- **Multi-Agent Memory Sharing** - inherit_from, share_with
|
|
220
|
+
|
|
221
|
+
</details>
|
|
142
222
|
|
|
143
223
|
See [CHANGELOG.md](CHANGELOG.md) for the complete history.
|
|
144
224
|
|
|
@@ -194,11 +274,15 @@ pip install alma-memory[azure] # Azure Cosmos DB + Azure OpenAI
|
|
|
194
274
|
pip install alma-memory[all]
|
|
195
275
|
```
|
|
196
276
|
|
|
197
|
-
**TypeScript/JavaScript:**
|
|
277
|
+
**TypeScript/JavaScript (via GitHub Packages):**
|
|
198
278
|
```bash
|
|
199
|
-
npm
|
|
279
|
+
# Configure npm for the scope (one-time)
|
|
280
|
+
echo "@rbkunnela:registry=https://npm.pkg.github.com" >> ~/.npmrc
|
|
281
|
+
|
|
282
|
+
# Install
|
|
283
|
+
npm install @rbkunnela/alma-memory
|
|
200
284
|
# or
|
|
201
|
-
yarn add alma-memory
|
|
285
|
+
yarn add @rbkunnela/alma-memory
|
|
202
286
|
```
|
|
203
287
|
|
|
204
288
|
---
|
|
@@ -241,7 +325,7 @@ alma.learn(
|
|
|
241
325
|
### TypeScript/JavaScript
|
|
242
326
|
|
|
243
327
|
```typescript
|
|
244
|
-
import { ALMA } from 'alma-memory';
|
|
328
|
+
import { ALMA } from '@rbkunnela/alma-memory';
|
|
245
329
|
|
|
246
330
|
// Create client
|
|
247
331
|
const alma = new ALMA({
|
|
@@ -434,14 +518,23 @@ Capture entity relationships for complex reasoning:
|
|
|
434
518
|
```python
|
|
435
519
|
from alma.graph import create_graph_backend, BackendGraphStore, EntityExtractor
|
|
436
520
|
|
|
437
|
-
# Create graph backend
|
|
521
|
+
# Create graph backend - multiple options available:
|
|
522
|
+
|
|
523
|
+
# Neo4j (production, hosted)
|
|
438
524
|
backend = create_graph_backend(
|
|
439
525
|
"neo4j",
|
|
440
526
|
uri="neo4j+s://xxx.databases.neo4j.io",
|
|
441
527
|
username="neo4j",
|
|
442
528
|
password="your-password"
|
|
443
529
|
)
|
|
444
|
-
|
|
530
|
+
|
|
531
|
+
# Memgraph (high-performance, in-memory)
|
|
532
|
+
# backend = create_graph_backend("memgraph", uri="bolt://localhost:7687")
|
|
533
|
+
|
|
534
|
+
# Kuzu (embedded, no server required)
|
|
535
|
+
# backend = create_graph_backend("kuzu", database_path="./my_graph_db")
|
|
536
|
+
|
|
537
|
+
# In-memory (testing)
|
|
445
538
|
# backend = create_graph_backend("memory")
|
|
446
539
|
|
|
447
540
|
# Create store with backend
|
|
@@ -516,9 +609,10 @@ python -m alma.mcp --config .alma/config.yaml
|
|
|
516
609
|
}
|
|
517
610
|
```
|
|
518
611
|
|
|
519
|
-
**Available MCP Tools:**
|
|
520
|
-
|
|
521
|
-
|
|
612
|
+
**Available MCP Tools (16 total):**
|
|
613
|
+
|
|
614
|
+
| Core Tools | Description |
|
|
615
|
+
|------------|-------------|
|
|
522
616
|
| `alma_retrieve` | Get memories for a task |
|
|
523
617
|
| `alma_learn` | Record task outcome |
|
|
524
618
|
| `alma_add_preference` | Add user preference |
|
|
@@ -527,6 +621,18 @@ python -m alma.mcp --config .alma/config.yaml
|
|
|
527
621
|
| `alma_stats` | Get memory statistics |
|
|
528
622
|
| `alma_health` | Health check |
|
|
529
623
|
|
|
624
|
+
| Workflow Tools (v0.6.0) | Description |
|
|
625
|
+
|-------------------------|-------------|
|
|
626
|
+
| `alma_consolidate` | Merge similar memories |
|
|
627
|
+
| `alma_checkpoint` | Save workflow state |
|
|
628
|
+
| `alma_resume` | Resume from checkpoint |
|
|
629
|
+
| `alma_merge_states` | Merge parallel agent states |
|
|
630
|
+
| `alma_workflow_learn` | Learn with workflow context |
|
|
631
|
+
| `alma_link_artifact` | Link output to workflow |
|
|
632
|
+
| `alma_get_artifacts` | Get workflow artifacts |
|
|
633
|
+
| `alma_cleanup_checkpoints` | Clean old checkpoints |
|
|
634
|
+
| `alma_retrieve_scoped` | Scoped memory retrieval |
|
|
635
|
+
|
|
530
636
|
---
|
|
531
637
|
|
|
532
638
|
## Advanced Features
|
|
@@ -657,7 +763,7 @@ print(f"Recommendation: {signal.recommendation}")
|
|
|
657
763
|
|
|
658
764
|
```
|
|
659
765
|
+-------------------------------------------------------------------------+
|
|
660
|
-
| ALMA v0.
|
|
766
|
+
| ALMA v0.6.0 |
|
|
661
767
|
+-------------------------------------------------------------------------+
|
|
662
768
|
| HARNESS LAYER |
|
|
663
769
|
| +-----------+ +-----------+ +-----------+ +----------------+ |
|
|
@@ -693,9 +799,12 @@ print(f"Recommendation: {signal.recommendation}")
|
|
|
693
799
|
| +---------------+ +------------------+ +---------------+ |
|
|
694
800
|
+-------------------------------------------------------------------------+
|
|
695
801
|
| GRAPH LAYER |
|
|
696
|
-
| +---------------+ +------------------+
|
|
697
|
-
| | Neo4j | |
|
|
698
|
-
| +---------------+ +------------------+
|
|
802
|
+
| +---------------+ +------------------+ +---------------+ |
|
|
803
|
+
| | Neo4j | | Memgraph | | Kuzu | |
|
|
804
|
+
| +---------------+ +------------------+ +---------------+ |
|
|
805
|
+
| +---------------+ |
|
|
806
|
+
| | In-Memory | |
|
|
807
|
+
| +---------------+ |
|
|
699
808
|
+-------------------------------------------------------------------------+
|
|
700
809
|
| INTEGRATION LAYER |
|
|
701
810
|
| +-------------------------------------------------------------------+ |
|
|
@@ -819,6 +928,12 @@ chroma:
|
|
|
819
928
|
| Pinecone Backend | Serverless vector DB | Done |
|
|
820
929
|
| Chroma Backend | Lightweight vector DB | Done |
|
|
821
930
|
| Graph Abstraction | Pluggable graph backends | Done |
|
|
931
|
+
| Testing Module | Mocks and factories for testing | Done |
|
|
932
|
+
| Workflow Context | Checkpoints, state merging, artifacts | Done |
|
|
933
|
+
| Session Persistence | Persistent session handoffs | Done |
|
|
934
|
+
| Scoped Retrieval | Filter by workflow/agent/project | Done |
|
|
935
|
+
| MCP Workflow Tools | 8 additional MCP tools | Done |
|
|
936
|
+
| TypeScript SDK v0.6.0 | Full workflow API support | Done |
|
|
822
937
|
|
|
823
938
|
---
|
|
824
939
|
|
|
@@ -850,6 +965,16 @@ docker run -p 6333:6333 qdrant/qdrant
|
|
|
850
965
|
- Ensure `embedding_dim` in config matches your embedding provider
|
|
851
966
|
- Local: 384, Azure text-embedding-3-small: 1536
|
|
852
967
|
|
|
968
|
+
**Memgraph connection refused**
|
|
969
|
+
```bash
|
|
970
|
+
# Start Memgraph with Docker
|
|
971
|
+
docker run -p 7687:7687 memgraph/memgraph-mage
|
|
972
|
+
```
|
|
973
|
+
|
|
974
|
+
**Kuzu database locked**
|
|
975
|
+
- Ensure only one process accesses the database at a time
|
|
976
|
+
- Use `read_only=True` for concurrent read access
|
|
977
|
+
|
|
853
978
|
### Debug Logging
|
|
854
979
|
|
|
855
980
|
```python
|
|
@@ -873,11 +998,18 @@ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
|
873
998
|
|
|
874
999
|
## Roadmap
|
|
875
1000
|
|
|
876
|
-
**Completed:**
|
|
1001
|
+
**Completed (v0.6.0):**
|
|
1002
|
+
- Workflow context layer (checkpoints, state merging, artifacts)
|
|
1003
|
+
- Session persistence
|
|
1004
|
+
- Scoped retrieval
|
|
1005
|
+
- MCP workflow tools (8 new tools)
|
|
1006
|
+
- TypeScript SDK v0.6.0 with full workflow support
|
|
1007
|
+
|
|
1008
|
+
**Completed (v0.5.0):**
|
|
877
1009
|
- Multi-agent memory sharing
|
|
878
1010
|
- Memory consolidation engine
|
|
879
1011
|
- Event system / webhooks
|
|
880
|
-
- TypeScript SDK
|
|
1012
|
+
- TypeScript SDK (initial)
|
|
881
1013
|
- Qdrant, Pinecone, Chroma backends
|
|
882
1014
|
- Graph database abstraction
|
|
883
1015
|
|
|
@@ -896,10 +1028,50 @@ MIT
|
|
|
896
1028
|
|
|
897
1029
|
---
|
|
898
1030
|
|
|
899
|
-
##
|
|
1031
|
+
## Support the Project
|
|
1032
|
+
|
|
1033
|
+
If ALMA helps your AI agents get smarter:
|
|
1034
|
+
|
|
1035
|
+
- **Star this repo** - It helps others discover ALMA
|
|
1036
|
+
- **[Buy me a coffee](https://buymeacoffee.com/aiagentsprp)** - Support continued development
|
|
1037
|
+
- **[Sponsor on GitHub](https://github.com/sponsors/RBKunnela)** - Become an official sponsor
|
|
1038
|
+
- **Contribute** - PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
1039
|
+
|
|
1040
|
+
---
|
|
1041
|
+
|
|
1042
|
+
## Links
|
|
900
1043
|
|
|
901
|
-
|
|
1044
|
+
- **Documentation:** [alma-memory.pages.dev](https://alma-memory.pages.dev)
|
|
1045
|
+
- **PyPI:** [pypi.org/project/alma-memory](https://pypi.org/project/alma-memory/)
|
|
1046
|
+
- **npm:** [@rbkunnela/alma-memory](https://github.com/RBKunnela/ALMA-memory/pkgs/npm/alma-memory)
|
|
1047
|
+
- **Issues:** [GitHub Issues](https://github.com/RBKunnela/ALMA-memory/issues)
|
|
902
1048
|
|
|
903
1049
|
---
|
|
904
1050
|
|
|
905
1051
|
**Built for AI agents that get better with every task.**
|
|
1052
|
+
|
|
1053
|
+
*Created by [@RBKunnela](https://github.com/RBKunnela)*
|
|
1054
|
+
|
|
1055
|
+
---
|
|
1056
|
+
|
|
1057
|
+
## Technical Documentation
|
|
1058
|
+
|
|
1059
|
+
For detailed technical reference including architecture diagrams, API specifications, storage backend configuration, and performance tuning, see the **[Technical Documentation](docs/TECHNICAL.md)**.
|
|
1060
|
+
|
|
1061
|
+
---
|
|
1062
|
+
|
|
1063
|
+
## Share ALMA
|
|
1064
|
+
|
|
1065
|
+
Help other developers discover ALMA:
|
|
1066
|
+
|
|
1067
|
+
- **Twitter/X:** "Just found @ALMA_Memory - finally an AI agent memory framework that actually works. Scoped learning, anti-patterns, multi-agent sharing. Way better than Mem0. https://alma-memory.pages.dev"
|
|
1068
|
+
- **LinkedIn:** Share how ALMA improved your AI agent workflows
|
|
1069
|
+
- **Reddit:** Post in r/MachineLearning, r/LocalLLaMA, r/ClaudeAI, r/artificial
|
|
1070
|
+
- **Hacker News:** Submit the landing page - we'd love your upvotes!
|
|
1071
|
+
- **Dev.to / Medium:** Write about your experience using ALMA
|
|
1072
|
+
|
|
1073
|
+
---
|
|
1074
|
+
|
|
1075
|
+
## Keywords
|
|
1076
|
+
|
|
1077
|
+
*AI agent memory, persistent memory for LLMs, Mem0 alternative, LangChain memory replacement, agent learning framework, MCP memory server, Claude Code memory, vector database for agents, pgvector memory, Qdrant memory, Pinecone memory, multi-agent memory sharing, AI memory architecture, semantic memory for AI, long-term memory AI agents, memory-augmented AI, retrieval-augmented generation, RAG memory, agentic memory system*
|