crewai-dakera
Persistent, semantically-recalled memory for CrewAI agents, powered by Dakera.
Your CrewAI crews remember everything — across sessions, across restarts. Dakera handles embedding, storage, and retrieval server-side with no local model required.
Quick Start
Step 1 — Run Dakera
Dakera is a self-hosted memory server. Spin it up with Docker:
docker run -d \
--name dakera \
-p 3300:3300 \
-e DAKERA_ROOT_API_KEY=dk-mykey \
ghcr.io/dakera-ai/dakera:latest
For a production setup with persistent storage, use Docker Compose:
# Download and start
curl -sSfL https://raw.githubusercontent.com/Dakera-AI/dakera-deploy/main/docker-compose.yml \
-o docker-compose.yml
DAKERA_API_KEY=dk-mykey docker compose up -d
# Verify it's running
curl http://localhost:3300/health
Full deployment guide: github.com/Dakera-AI/dakera-deploy
Step 2 — Install the integration
pip install crewai-dakera
Step 3 — Add memory to your crew
from crewai import Crew, Agent, Task
from crewai.memory import LongTermMemory
from crewai_dakera import DakeraStorage
storage = DakeraStorage(
api_url="http://localhost:3300",
api_key="dk-mykey",
agent_id="my-crew",
)
crew = Crew(
agents=[...],
tasks=[...],
memory=True,
long_term_memory=LongTermMemory(storage=storage),
)
result = crew.kickoff(inputs={"topic": "AI trends"})
Your crew now persists everything it learns across runs.
Installation
# Core + integration
pip install crewai-dakera
# With CrewAI (if not already installed)
pip install "crewai-dakera[crewai]"
Requirements: Python ≥ 3.10, a running Dakera server (see Step 1 above)
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
api_url |
str |
— | Dakera server URL (e.g. http://localhost:3300) |
api_key |
str |
"" |
API key set via DAKERA_ROOT_API_KEY |
agent_id |
str |
— | Logical identifier for this crew's memory |
min_importance |
float |
0.0 |
Minimum importance score for recalled memories |
top_k |
int |
5 |
Number of memories to surface per turn |
Use environment variables to avoid hardcoding credentials:
import os
from crewai_dakera import DakeraStorage
storage = DakeraStorage(
api_url=os.environ["DAKERA_URL"],
api_key=os.environ["DAKERA_API_KEY"],
agent_id="research-crew",
)
Examples
Research crew with persistent memory
from crewai import Agent, Task, Crew, Process
from crewai.memory import LongTermMemory, ShortTermMemory, EntityMemory
from crewai_dakera import DakeraStorage
dakera = DakeraStorage(
api_url="http://localhost:3300",
api_key="dk-mykey",
agent_id="research-crew",
)
researcher = Agent(
role="Senior Researcher",
goal="Uncover groundbreaking insights in {topic}",
backstory="An expert researcher with decades of experience.",
verbose=True,
)
writer = Agent(
role="Content Writer",
goal="Craft compelling reports based on research findings",
backstory="A skilled writer who turns complex ideas into clear prose.",
verbose=True,
)
research_task = Task(
description="Research the latest developments in {topic}",
expected_output="A detailed research report",
agent=researcher,
)
write_task = Task(
description="Write a blog post based on the research",
expected_output="A polished 500-word article",
agent=writer,
)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
memory=True,
long_term_memory=LongTermMemory(storage=dakera),
verbose=True,
)
# First run — learns and stores findings
result = crew.kickoff(inputs={"topic": "quantum computing"})
print(result.raw)
# Second run — recalls prior research automatically
result = crew.kickoff(inputs={"topic": "quantum computing advances"})
print(result.raw)
Custom importance scoring
storage = DakeraStorage(
api_url="http://localhost:3300",
api_key="dk-mykey",
agent_id="my-crew",
min_importance=0.6, # only surface high-quality memories
top_k=10,
)
How it works
- After each task, CrewAI calls
DakeraStorage.save()with the result - Dakera embeds the content server-side (no local model needed) and stores it with a semantic vector
- Before the next task, CrewAI calls
DakeraStorage.search()— Dakera performs hybrid search (vector + BM25) and returns the most relevant past memories - Memories decay gracefully over time based on access patterns — frequently-accessed memories stay prominent
Related packages
| Package | Framework | Language |
|---|---|---|
langchain-dakera |
LangChain | Python |
llamaindex-dakera |
LlamaIndex | Python |
autogen-dakera |
AutoGen | Python |
@dakera-ai/langchain |
LangChain.js | TypeScript |
Links
- Dakera Server — self-hosted memory server
- Dakera Python SDK — low-level API client
- Integration guide — full setup walkthrough
- All integrations
License
MIT © Dakera AI
Release files for crewai-dakera 0.2.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 | |
|---|---|---|---|
| crewai_dakera-0.2.0.tar.gz | 12.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crewai_dakera-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.0 kB
Release files / crewai_dakera-0.2.0.tar.gz
| Download URL | crewai_dakera-0.2.0.tar.gz |
|---|---|
| Size | 12.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b2d8d05119b982fa99dc121d98a720aaf85c74418e6a1ca589726eb13871cd78
|
|
BLAKE2b-256 checksum How to use checksums |
1a6aa5df12bb0eba12c6eb27f0182c7bf94946bc533e98ee7b583d8d19070b96
|
| 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 May 17, 2026.
Transparency logRelease files / crewai_dakera-0.2.0-py3-none-any.whl
| Download URL | crewai_dakera-0.2.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
641a4f4d7d52fb00ac8d59dac0533135cf72292abee4c90ebbfe7e00cfc008ce
|
|
BLAKE2b-256 checksum How to use checksums |
6321bc779351baadfd921076a30eda00d7f5013f3e95125fca9d5855d60da2bf
|
| 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 May 17, 2026.
Transparency log