ENGRAM
Memory that sticks. For every AI agent.
Universal memory layer for AI agents — persistent, searchable, zero-config.
from engram import Memory
mem = Memory()
mem.store("User prefers Python", type="preference", importance=8)
results = mem.search("programming language")
context = mem.recall(limit=10)
Features
- Zero config —
pip install engram-coreand go. SQLite out of the box, no external services. - 5-line API — Store, search, recall. That's it.
- MCP Server — First-class Model Context Protocol integration for Claude Code and other MCP clients.
- REST API — FastAPI server with WebSocket real-time updates.
- Multi-agent — Namespace isolation + cross-namespace search for agent teams.
- Privacy-first — Runs 100% locally. Your data never leaves your machine.
- Smart dedup — SHA-256 content hashing prevents duplicate memories.
- Full-text search — SQLite FTS5 for fast, typo-tolerant search.
- Optional embeddings — Plug in
sentence-transformersfor semantic search. - Memory decay — Automatic forgetting curve for stale memories.
Installation
pip install engram-core
With optional extras:
pip install engram-core[server] # REST API + WebSocket
pip install engram-core[mcp] # MCP server
pip install engram-core[embeddings] # Semantic search
pip install engram-core[all] # Everything
Quick Start
Python SDK
from engram import Memory
mem = Memory()
# Store
mem.store("User prefers dark mode", type="preference", importance=8)
mem.store("Fixed bug by adding null check", type="error_fix", importance=7)
# Search
results = mem.search("dark mode")
for r in results:
print(f"{r.memory.content} (score: {r.score:.2f})")
# Recall priority context
for entry in mem.recall(min_importance=7):
print(f"[{entry.memory_type.value}] {entry.content}")
# Multi-agent namespaces
agent1 = Memory(namespace="researcher")
agent2 = Memory(namespace="coder")
REST API
# Start server
engram-server
# Store
curl -X POST http://localhost:8100/v1/memories \
-H "Content-Type: application/json" \
-d '{"content": "Important fact", "importance": 8}'
# Search
curl -X POST http://localhost:8100/v1/search \
-H "Content-Type: application/json" \
-d '{"query": "fact"}'
MCP Server (Claude Code)
Add to your MCP config:
{
"mcpServers": {
"engram": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/engram"
}
}
}
Want automatic memory recall? Check out the Claude Code Hook example — every new session starts with your important memories pre-loaded, zero manual steps.
Docker
docker compose -f docker/docker-compose.yml up
Comparison
| Feature | Engram | Mem0 | Letta | Zep |
|---|---|---|---|---|
| Self-hosted (Zero Infra) | SQLite out-of-box | Cloud-only | Complex setup | Graph DB needed |
| pip install + 5 lines | Yes | ~10 lines + API key | ~20 lines setup | SDK + config |
| MCP Server | First-class | No | No | No |
| Open Source | MIT | Partial | Apache 2.0 | BSL |
| Multi-Agent Namespaces | Native | User/Session/Agent | Single Agent | User-level |
| Privacy-First | Local by default | Cloud by default | Local possible | Cloud-focused |
| Cost | Free (self-hosted) | $0.01+/memory | Free | Enterprise pricing |
License
MIT
Metadata
Release files for engram-core 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| engram_core-0.3.0.tar.gz | 63.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| engram_core-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 107.7 kB
Release files / engram_core-0.3.0.tar.gz
| Download URL | engram_core-0.3.0.tar.gz |
|---|---|
| Size | 63.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6c814e20da0487dbe121f4207d377ff0d5d844e2469f20c29aa57ac1b062232e
|
|
BLAKE2b-256 checksum How to use checksums |
1461fffd3d0757d20fa1ff1eef08b2331e81b80a240b87e3d2685e66bb8d0449
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 13, 2026.
Transparency logRelease files / engram_core-0.3.0-py3-none-any.whl
| Download URL | engram_core-0.3.0-py3-none-any.whl |
|---|---|
| Size | 44.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
67f1b73061618997007263685215a0556763c79f27aec1ee6ea5726001896da6
|
|
BLAKE2b-256 checksum How to use checksums |
9d9dbf5c35e4cc78dbd604baf3a1dc1be693433fc70fe64501cbf13cf0f1df64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 13, 2026.
Transparency log