Skip to main content

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-core and 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-transformers for 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)

Source distribution for engram-core 0.3.0
File Size Uploaded
engram_core-0.3.0.tar.gz 63.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for engram-core 0.3.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page