Your AI forgets everything.
ALMA fixes that.
Give any AI agent permanent memory that learns and improves over time. One memory layer. Every AI. Never start from zero.
$
pip install alma-memory
5 minutes to persistent memory · Free forever on SQLite
ALMA doesn't make your AI remember. It makes your AI learn. Built-in memory stores preferences. ALMA tracks outcomes — what worked, what failed, and why — and auto-creates reusable strategies from real experience.
The problem with every AI tool you already use
Fragmented context
Claude doesn't know what ChatGPT learned. Every new AI restart starts from zero.
Notepads, not learning
Built-in memory remembers facts. It doesn't remember what worked vs what failed.
Locked in walled gardens
Your working context lives on someone else's servers, fragmented across accounts.
What ALMA actually does
Six capabilities that turn memory into a learning system. Compose them, or use them independently.
Learn from outcomes
Agents track what strategies worked and failed. Success auto-compounds into heuristics; failures become named anti-patterns with why_bad and better_alternative.
Multi-agent sharing
Hierarchical knowledge flows with inherit_from and share_with scopes. Junior agents inherit from senior agents — no copy-paste, no drift.
Veritas trust layer
Built-in trust scoring. Contradictions caught before agents act on bad data. The moment silent fallbacks stop being invisible.
Your data, your database
SQLite, PostgreSQL, Qdrant, Pinecone, Chroma, Azure Cosmos. Your infra, your control, your backup strategy.
MCP-native
Plug into any MCP-compatible AI. Your working context becomes portable across Claude, ChatGPT, Gemini, and whatever ships next.
Event system
Webhooks + callbacks on every memory event. Wire ALMA into your existing observability, audit, or automation stack.
Built-in memory is a notepad. ALMA is a learning system.
| **ALMA** | |---|---|---| | **What it stores** | Facts and preferences | Outcomes — what strategies worked, failed, and why | | **Does it learn?** | No. Remembers what you told it. | **Yes.** After 3+ similar outcomes, auto-creates reusable strategies. | | **Warns you?** | No | **Yes.** Anti-patterns track what NOT to do, with `why_bad` + `better_alternative`. | | **Cross-platform?** | No | **Yes.** One memory layer across every AI tool. | | **Multi-agent?** | No | **Yes.** Junior agents inherit from senior agents. | | **Scoring?** | Basic relevance | 4-factor: similarity + recency + success rate + confidence | | **Lifecycle?** | Grows until you delete | Automatic decay · compression · consolidation · archival | | **Benchmarked?** | Not measured | **R@5 = 0.964** on LongMemEval | | **Your data?** | Their servers | **Your database.** SQLite · Postgres · Qdrant |
Three lines to persistent memory
No complex setup. No separate service. Works offline on SQLite by default.
from alma import ALMA
alma = ALMA.from_config(".alma/config.yaml")
# Before task: What strategies worked for this type of problem?
memories = alma.retrieve(task="Deploy auth service", agent="backend-dev")
# After task: Record what happened so next time is better
alma.learn(agent="backend-dev", task="Deploy auth service",
outcome="success", strategy_used="Blue-green deployment")
Next time the backend agent deploys — on Claude, ChatGPT, or any platform — it already knows blue-green works and rolling updates don't.
Memory has replaced models as the moat of 2026.
Free forever on SQLite. MIT-licensed. Anonymized quality telemetry keeps ALMA honest and improving.
How it works¶
Every time your agent runs, ALMA retrieves what worked before and learns from new outcomes. No manual prompt engineering. No copy-pasting from past conversations. The memory compounds automatically.

Language SDKs¶
from alma import ALMA
# Initialize
alma = ALMA.from_config(".alma/config.yaml")
# Before task: Get relevant memories
memories = alma.retrieve(
task="Test the login form validation",
agent="qa_tester",
top_k=5
)
# Inject into your prompt
prompt = f"""
## Your Task
Test the login form validation
## Knowledge from Past Runs
{memories.to_prompt()}
"""
# After task: Learn from outcome
alma.learn(
agent="qa_tester",
task="Test login form",
outcome="success",
strategy_used="Tested empty fields, invalid email, valid submission",
)
import { ALMA } from '@rbkunnela/alma-memory';
const alma = new ALMA({
baseUrl: 'http://localhost:8765',
projectId: 'my-project'
});
const memories = await alma.retrieve({
query: 'authentication flow',
agent: 'dev-agent',
topK: 5
});
await alma.learn({
agent: 'dev-agent',
task: 'Implement OAuth',
outcome: 'success',
strategy_used: 'Used Passport.js with JWT strategy'
});