Skip to main content

crewai-mongodb-memory — MongoDB Atlas memory backend for CrewAI

MongoDB Atlas integration for CrewAI providing the Memory Store (MS) capability: MongoDBStorageBackend, a full implementation of CrewAI's Unified Memory StorageBackend protocol that makes Atlas the long-term memory layer for CrewAI agents and crews — including semantic recall via Atlas Vector Search.

Capabilities

  • Drop-in StorageBackend for crewai.memory.unified_memory.Memory(storage=...) — implements all 8 protocol methods (save, search, delete, update, get_record, list_records, get_scope_info, list_scopes).

  • Semantic recall via Atlas $vectorSearch, prefiltered by hierarchical scope, categories, and arbitrary metadata — the surface the upstream RedisStorageBackend (PR #5919) explicitly leaves unimplemented.

  • Hierarchical scopes (/crew/team/user) with prefix queries over descendants.

  • Durable short-term conversation memory via ConversationMemory — persists each chat turn to Atlas and replays the last N turns into the agent's context. CrewAI builds a fresh Crew per kickoff() with no shared state, so this keeps a multi-turn thread coherent and lets it survive a process restart. Stored in its own conversations collection (kept out of the vector index), without embeddings (replay is recency/order based, not semantic), using the MongoDB bucket pattern (an array of turns per document) for cheap append + range reads.

  • Own-the-client design: appName + driver-info handshake always present, non-overridable.

Architecture Overview

The backend stores one MongoDB document per MemoryRecord (keyed by the record id) and maps the protocol onto MongoDB:

  • Collection memories — one document per memory record.
  • Indexes — scope, categories, created_at, plus an Atlas Vector Search index over embedding (numDimensions: 1024, cosine) with filter paths scope_ancestors + categories.
  • Queries — replace_one upserts for writes; $vectorSearch for semantic search().
  • Scope-prefix filtering inside $vectorSearch uses a precomputed scope_ancestors array (vector-search filters don't support $regex).

See EDD.md for the full schema contract.

Prerequisites

  • Python 3.10+
  • A MongoDB connection: local mongodb://localhost:27017 works for CRUD/scope operations; MongoDB Atlas is required for search() (Vector Search).
  • VOYAGE_API_KEY if you embed query/document text with voyage-3.5 (the demos do).
  • GEMINI_API_KEY for the agentic demo (demo/agent_demo.py).

Quick Start

# 1. Install the package
pip install crewai-mongodb-memory          # or, from this repo: pip install -e ".[dev]"

# 2. Use it as a CrewAI memory backend
python - <<'PY'
from crewai.memory.unified_memory import Memory
from crewai_mongodb_memory import MongoDBStorageBackend

backend = MongoDBStorageBackend("mongodb+srv://…")   # owns its own client
memory = Memory(storage=backend)                      # drop-in Unified Memory backend
PY

# 3. Run the demos (see demo/requirements.txt)
pip install -r demo/requirements.txt
export ATLAS_URI="<your Atlas connection string>"
export VOYAGE_API_KEY="<your Voyage key>"
export GEMINI_API_KEY="<your Gemini key>"   # agent demo only
python demo/memory_demo.py    # vector recall over the canonical corpus
python demo/agent_demo.py     # Gemini agent with long-term preference memory
python demo/cli_demo.py       # interactive REPL: chat + /remember /recall /scope

# 4. Run the acceptance tests (offline via mongomock; Atlas test auto-skips without creds)
pytest -q

Expected: memory_demo.py prints scope info + top-k semantic matches; agent_demo.py shows a brand-new crew recalling preferences stored in a previous session; the test suite reports 9 passed (or 8 passed + 1 skipped without Atlas creds).

Environment variables

Name Required Example Description
ATLAS_URI for search() / demos mongodb+srv://… Atlas connection string
VOYAGE_API_KEY when embedding text pa-… Voyage AI key for voyage-3.5
GEMINI_API_KEY agent demo only AIza… Powers the Gemini model via CrewAI

Project structure

src/crewai_mongodb_memory/   # MongoDBStorageBackend + Voyage embedding helper
demo/                 # memory_demo.py, agent_demo.py, requirements.txt
tests/                # acceptance tests (CRUD/scope/vector + appName + driver-info)
EDD.md                # MongoDB schema contract (entities, indexes, Mermaid diagram)
AGENTS.md             # guide for AI coding agents
PLAN.md               # the per-integration 7-phase plan

Why MongoDB?

Additional resources

Status

See PLAN.md for the current phase and memory-bank/progress.md for the board.

Release files for crewai-mongodb-memory 0.1.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 crewai-mongodb-memory 0.1.0
File Size Uploaded
crewai_mongodb_memory-0.1.0.tar.gz 24.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for crewai-mongodb-memory 0.1.0
File Interpreter ABI Platform
crewai_mongodb_memory-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 40.2 kB

Release files / crewai_mongodb_memory-0.1.0.tar.gz

Download URL crewai_mongodb_memory-0.1.0.tar.gz
Size 24.9 kB
Tags Source
SHA-256 checksum
How to use checksums
766299aaf194fdba57286e5769b502bca25334d39ab91ad51368e8c567bae673
BLAKE2b-256 checksum
How to use checksums
bc4c55c31a29d0679443ba42609bbec56240a281bf629cbcd6dbbb2caaa94bf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 9, 2026.

Transparency log

Release files / crewai_mongodb_memory-0.1.0-py3-none-any.whl

Download URL crewai_mongodb_memory-0.1.0-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76b36a96f3ef0f99e6ac7aa49b7902e4247f1607500a2ed5f94d5cbdb2751723
BLAKE2b-256 checksum
How to use checksums
c71d8654cdda764148c70029710286010266d6efe4c08d4d84c2d8b1b164aa3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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