Skip to main content

Markdown-native memory for CrewAI agents. Human-readable, git-versionable, no database required.

Project description

crewai-soul 🧠

Markdown-native memory for CrewAI agents.

Your crew's memory shouldn't require a database. crewai-soul stores everything in two simple markdown files:

  • SOUL.md — Agent identity (who it is, how it behaves)
  • MEMORY.md — Timestamped log of all interactions

Human-readable. Git-versionable. No infrastructure required.

Install

pip install crewai-soul

Quick Start

from crewai import Crew, Agent, Task
from crewai_soul import SoulMemory

# Create markdown-based memory
memory = SoulMemory()

# Use it with your crew
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    memory=memory,
)

result = crew.kickoff()

After running, check MEMORY.md:

# Memory Log

## 2026-03-06 22:30:15 UTC
The researcher found that PostgreSQL handles 10k concurrent connections.

## 2026-03-06 22:31:02 UTC
The writer produced a technical comparison document.

Why Markdown?

Feature CrewAI Built-in crewai-soul
Storage Vector database Markdown files
Human-readable
Git-versionable
Needs LLM to store Yes (scope inference) No
Infrastructure Database server None
Audit trail Complex Just read the file

API

SoulMemory

from crewai_soul import SoulMemory

memory = SoulMemory(
    soul_path="SOUL.md",      # Agent identity
    memory_path="MEMORY.md",  # Memory log
)

# Store a memory
memory.remember("We decided to use PostgreSQL.")

# Recall relevant memories
matches = memory.recall("What database did we choose?")
for m in matches:
    print(f"[{m.score:.2f}] {m.content}")

# Clear memories
memory.forget()

# Get stats
print(memory.info())

With Scopes

# Store with a scope tag
memory.remember("Sprint velocity is 42 points", scope="/team/metrics")

# Recall from specific scope
matches = memory.recall("velocity", scope="/team")

Per-Agent Memory

from crewai import Agent
from crewai_soul import SoulMemory

# Each agent gets its own memory file
researcher = Agent(
    role="Researcher",
    goal="Find information",
    memory=SoulMemory(memory_path="researcher_memory.md"),
)

writer = Agent(
    role="Writer", 
    goal="Write reports",
    memory=SoulMemory(memory_path="writer_memory.md"),
)

Standalone Usage

Works without CrewAI too:

from crewai_soul import SoulMemory

memory = SoulMemory()

# Build up knowledge
memory.remember("The API rate limit is 1000 requests per minute.")
memory.remember("Our staging environment uses port 8080.")

# Later, recall what you need
matches = memory.recall("What are our API limits?")

Upgrading to Semantic Search

For better recall on large memory files, install with RAG support:

pip install crewai-soul[rag]

This uses soul-agent's hybrid RAG+RLM retrieval under the hood.

Links

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crewai_soul-0.1.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crewai_soul-0.1.1-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file crewai_soul-0.1.1.tar.gz.

File metadata

  • Download URL: crewai_soul-0.1.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for crewai_soul-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0b0b54cef470ba46d1038aae736106dfd312f8566a6ac82e55c7e7b667083342
MD5 e50c2959acd3625df58f07d89f3b8f94
BLAKE2b-256 e4f77530e50e6ce7a0d9e0cac7a3ae9745be988e91cf484b62557cb18b4d5984

See more details on using hashes here.

File details

Details for the file crewai_soul-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: crewai_soul-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for crewai_soul-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0c7ed14368acc626647104b93d02ea2dab13a9daa3ede005ba8146e2e5697fe8
MD5 3b0176ca426eedb4781cf763e4a0227d
BLAKE2b-256 2ec561184cb0c8098083f8f191329812eedc1e0ca16cd077907fe9a9e60cfa5c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page