Skip to main content

Documentation Index

Fetch the complete documentation index at: https://astron-bb4261fd.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

CrewAI Integration

Z3rno provides Z3rnoCrewAIStorage, a storage adapter that implements CrewAI’s memory interface. This lets multiple CrewAI agents share persistent memory backed by Z3rno.

Installation

pip install z3rno
pip install crewai

Setup

from z3rno import Z3rnoClient
from z3rno.integrations.crewai import Z3rnoCrewAIStorage

client = Z3rnoClient(
    base_url="http://localhost:8000",
    api_key="z3rno_sk_...",
)

Memory Type Mapping

CrewAI’s memory categories map to Z3rno memory types:
CrewAI CategoryZ3rno Memory TypeUse Case
short_termworkingActive task context
long_termepisodicInteraction history
entitysemanticFacts and knowledge

Basic Usage

# Short-term memory (maps to Z3rno "working" type)
short_term = Z3rnoCrewAIStorage(
    client,
    agent_id="researcher",
    memory_type="short_term",
)

# Long-term memory (maps to Z3rno "episodic" type)
long_term = Z3rnoCrewAIStorage(
    client,
    agent_id="researcher",
    memory_type="long_term",
)

# Entity memory (maps to Z3rno "semantic" type)
entity = Z3rnoCrewAIStorage(
    client,
    agent_id="researcher",
    memory_type="entity",
)

# Save a memory
result = short_term.save(
    key="current_task",
    value="Researching competitor landscape in AI memory space",
    metadata={"priority": "high"},
)
print(f"Stored: {result['id']}")

# Search memories by semantic similarity
results = short_term.search(
    query="What am I currently working on?",
    limit=5,
    score_threshold=0.3,
)
for r in results:
    print(f"  {r['content']} (score: {r['score']:.2f})")

# Reset all memories for this agent/type
short_term.reset()

Shared Memory Across Agents

The primary advantage of using Z3rno with CrewAI is that multiple agents can share a memory store. Use the same agent_id across agents to create a shared memory space, or use different agent_id values for isolated memories.
# Shared memory: all crew agents read/write the same store
shared_store = Z3rnoCrewAIStorage(
    client,
    agent_id="market-research-crew",  # Same agent_id = shared memory
    memory_type="entity",
)

# Agent 1 (Researcher) stores findings
shared_store.save(
    key="competitor_1",
    value="Mem0 offers open-source agent memory with a managed cloud option.",
    metadata={"source": "web_search", "agent": "researcher"},
)

shared_store.save(
    key="competitor_2",
    value="Zep provides long-term memory for AI assistants with temporal awareness.",
    metadata={"source": "web_search", "agent": "researcher"},
)

# Agent 2 (Analyst) recalls shared findings
competitors = shared_store.search(
    query="What competitors exist in the AI memory space?",
    limit=10,
)
for c in competitors:
    print(f"  [{c['metadata'].get('agent')}] {c['content']}")

With CrewAI’s Memory System

When configuring a CrewAI Crew, pass the Z3rno storage as the memory backend:
from crewai import Agent, Crew, Task

researcher = Agent(
    role="Market Researcher",
    goal="Find and analyze competitors",
    backstory="Expert market analyst",
)

analyst = Agent(
    role="Strategy Analyst",
    goal="Synthesize research into insights",
    backstory="Senior strategy consultant",
)

# Both agents share memory via Z3rno
crew = Crew(
    agents=[researcher, analyst],
    tasks=[...],
    memory=True,
    short_term_memory=Z3rnoCrewAIStorage(client, agent_id="crew-1", memory_type="short_term"),
    long_term_memory=Z3rnoCrewAIStorage(client, agent_id="crew-1", memory_type="long_term"),
    entity_memory=Z3rnoCrewAIStorage(client, agent_id="crew-1", memory_type="entity"),
)

result = crew.kickoff()

Next Steps