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.2.0.tar.gz (10.2 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.2.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: crewai_soul-0.2.0.tar.gz
  • Upload date:
  • Size: 10.2 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.2.0.tar.gz
Algorithm Hash digest
SHA256 34dd9f0456ad0fa9746fa29d1b45144e0d03635270214ed8392a0214ebf0947a
MD5 97b7069344802fe2ba4e8a171655c032
BLAKE2b-256 399b48f10bb951598d56a4d00b5bce3dc1d2d9d43910bbb3d5cc803b69c5687d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crewai_soul-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4e6dc8441b36698e867e9eccfac401ee1696f3c5d2289e30df7f62abe9bdea97
MD5 d1211d0ff699689e5fb219f1af5de0ce
BLAKE2b-256 c484818d026d1bddff57e28ff0499ed82f4ab5925b8eea48b3a203eaa517e02c

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