Mimir long-term memory as CrewAI tools — local-first, encrypted, persistent memory the agent can explicitly call.
Project description
crewai-mimir
Long-term, local-first, encrypted memory for CrewAI agents — as explicit, agent-callable tools.
crewai-mimir wraps Mimir (an open-source, MIT-licensed persistent memory engine with 40+ MCP tools, FTS5 + dense hybrid search, and optional AES-256-GCM encryption) as standard CrewAI BaseTools. Your agents get two first-class actions they can deliberately call:
mimir_remember— persist a fact, decision, insight, or note that survives across runs.mimir_recall— search what was stored earlier.
Why tools (and not CrewAI's built-in memory)?
CrewAI ships implicit memory (auto-captured short/long-term memory) and a generic MCP adapter. crewai-mimir is deliberately different: it exposes explicit, controllable memory the agent chooses to invoke, with a typed args_schema so the LLM sees exactly what each call needs. Use it when you want the agent to reason about what to remember and when to recall — backed by a durable, encryptable store you own on disk.
Prerequisite: the mimir binary
The tools talk to a local mimir process over JSON-RPC (MCP stdio). You need the mimir binary on your PATH (or pass an absolute path).
Install it from the Mimir repository (build from source, or grab a release). Verify:
mimir --version
The tools spawn mimir serve --db <db_path> for you — you do not start it manually.
Install
pip install crewai-mimir
(or, from source: pip install -e ".[test]")
Quickstart
from crewai import Agent, Crew, Task
from crewai_mimir import build_mimir_tools
# One shared mimir process backs both tools.
memory_tools = build_mimir_tools(db_path="~/.mimir/data/crew.db")
researcher = Agent(
role="Research Analyst",
goal="Answer questions, remembering durable facts for next time.",
backstory="You persist key findings to long-term memory and check it before answering.",
tools=memory_tools,
verbose=True,
)
remember_task = Task(
description="Remember that the project deadline is 2026-08-15. Store it under key 'project-deadline'.",
expected_output="Confirmation the deadline was stored.",
agent=researcher,
)
recall_task = Task(
description="What is the project deadline? Check your long-term memory.",
expected_output="The project deadline date.",
agent=researcher,
)
crew = Crew(agents=[researcher], tasks=[remember_task, recall_task])
result = crew.kickoff()
print(result)
Using the tool classes directly
from crewai_mimir import MimirRememberTool, MimirRecallTool, MimirClient
client = MimirClient(db_path="~/.mimir/data/crew.db") # one shared process
remember = MimirRememberTool(client=client)
recall = MimirRecallTool(client=client)
agent = Agent(..., tools=[remember, recall])
If you omit client, each tool lazily starts its own mimir serve on first use
(configurable via db_path and mimir_binary).
Encryption at rest
tools = build_mimir_tools(
db_path="~/.mimir/data/crew.db",
encryption_key="~/.mimir/key.b64", # base64-encoded 32-byte AES-256-GCM key
)
Tool reference
| Tool | Required args | Optional args |
|---|---|---|
mimir_remember |
content, key |
category (default insight), tags, importance (0.0–1.0) |
mimir_recall |
query |
limit (default 5), category |
Both return a JSON string. mimir_recall returns {"query": ..., "results": [...]}.
How it works
MimirClient spawns mimir serve --db <path>, performs the MCP initialize
handshake, and issues id-correlated JSON-RPC requests with a per-call timeout
over stdin/stdout. The client core is adapted from the proven
adk-mimir-memory
package.
Development
pip install -e ".[test]"
pytest -q
Unit tests mock the mimir subprocess, so they run with no binary installed.
tests/test_smoke_real_binary.py runs an end-to-end round-trip against a real
mimir binary when one is found on PATH (otherwise it is skipped).
License
MIT © 2026 Perseus Computing LLC. Mimir is MIT-licensed by Perseus Computing LLC.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crewai_mimir-0.1.0.tar.gz.
File metadata
- Download URL: crewai_mimir-0.1.0.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29950c594f998b1ab5ed6e92ced30def344a58da61b234782024c6fd2448e7e5
|
|
| MD5 |
b39e2d3bc75be518b40b7946764e863f
|
|
| BLAKE2b-256 |
949d15c1c98a7b4164dea8501ccea06d90c07db04d48c90b604e8fc23c3ef704
|
Provenance
The following attestation bundles were made for crewai_mimir-0.1.0.tar.gz:
Publisher:
publish.yml on Perseus-Computing-LLC/crewai-mimir
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crewai_mimir-0.1.0.tar.gz -
Subject digest:
29950c594f998b1ab5ed6e92ced30def344a58da61b234782024c6fd2448e7e5 - Sigstore transparency entry: 2012406944
- Sigstore integration time:
-
Permalink:
Perseus-Computing-LLC/crewai-mimir@5d025c374079768f0d6a593eb8647c583e6c7b7c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Perseus-Computing-LLC
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d025c374079768f0d6a593eb8647c583e6c7b7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file crewai_mimir-0.1.0-py3-none-any.whl.
File metadata
- Download URL: crewai_mimir-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0aec85b86d7e5c8213058079d092cd93f070bd8bbdd8cc8675c436e26e26c5d
|
|
| MD5 |
6f67fe97c763c4e0efaed390823e8638
|
|
| BLAKE2b-256 |
ce4e9c10c962050d9cdc0c60abc3239392d277606034e926c7dbb6d4352c99f7
|
Provenance
The following attestation bundles were made for crewai_mimir-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Perseus-Computing-LLC/crewai-mimir
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crewai_mimir-0.1.0-py3-none-any.whl -
Subject digest:
e0aec85b86d7e5c8213058079d092cd93f070bd8bbdd8cc8675c436e26e26c5d - Sigstore transparency entry: 2012407090
- Sigstore integration time:
-
Permalink:
Perseus-Computing-LLC/crewai-mimir@5d025c374079768f0d6a593eb8647c583e6c7b7c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Perseus-Computing-LLC
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d025c374079768f0d6a593eb8647c583e6c7b7c -
Trigger Event:
push
-
Statement type: