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.0.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.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: crewai_soul-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 082757c4c72c9b23d26178baaec1a1b31893c1114ba41efa558cff66b44a0a81
MD5 48aa3793022ad946eb3f745709d02a4e
BLAKE2b-256 dc30de135580afb6e178847aa13eca3e3882c74eb8171ef8016fc755824636bb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crewai_soul-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29b97ac9b55280129c26052108d711eeaca645a718147b21e94cf7fc5dba0718
MD5 c2d4efc71af35ac9b993058c0ac58c52
BLAKE2b-256 409d0927c70565ee3d5bd204b87f04d0d8649cb8b49237488da18f3d37530de0

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