CrewAI integration for Sulcus thermodynamic memory — shared persistent memory for agent crews
Project description
Sulcus × CrewAI
Shared thermodynamic memory for multi-agent CrewAI crews. Every agent in the crew reads and writes to the same Sulcus memory graph, with automatic heat propagation across agent boundaries.
Install
pip install sulcus-crewai
Quick Start
from crewai import Agent, Crew, Task
from sulcus import Sulcus
from sulcus_crewai import SulcusSearchTool, SulcusStoreTool
client = Sulcus(api_key="sk-...")
# Tools — give to any agent
search = SulcusSearchTool(client=client)
store = SulcusStoreTool(client=client)
researcher = Agent(
role="Researcher",
tools=[search, store],
goal="Find and store key findings",
)
writer = Agent(
role="Writer",
tools=[search],
goal="Compose reports from existing research",
)
crew = Crew(agents=[researcher, writer], tasks=[...])
crew.kickoff()
Components
Tools (for agents)
| Tool | Description |
|---|---|
SulcusSearchTool |
Search memories by natural language query. Returns results ranked by relevance + heat. |
SulcusStoreTool |
Store a new memory with type (episodic, semantic, preference, procedural). |
SulcusContextTool |
Build a structured context window from relevant memories within a token budget. |
from sulcus_crewai import SulcusSearchTool, SulcusStoreTool, SulcusContextTool
search = SulcusSearchTool(client=client)
store = SulcusStoreTool(client=client)
context = SulcusContextTool(client=client)
agent = Agent(role="Analyst", tools=[search, store, context])
Storage (crew-level shared state)
from sulcus_crewai import SulcusStorage
storage = SulcusStorage(client=client, namespace="research-crew")
# Store findings
storage.save("market_size", "AI memory market estimated at $2.4B by 2027")
# Retrieve by semantic search
results = storage.load("market size")
# List recent
recent = storage.list_recent(limit=10)
# Filter by type
facts = storage.search_by_type("pricing", memory_type="semantic")
# Clean up
storage.forget(node_id="...")
Memory Types
| Type | Use For | Decay |
|---|---|---|
episodic |
Events, conversations, findings | Fast (24h half-life) |
semantic |
Facts, data, knowledge | Slow (30d half-life) |
preference |
Opinions, settings, style | Slower (90d half-life) |
procedural |
Workflows, how-tos, recipes | Slowest (180d half-life) |
How It Works
- Researcher agent discovers something → calls
sulcus_store→ memory created in Sulcus graph - Writer agent needs context → calls
sulcus_search→ retrieves the researcher's findings - Next crew run → memories persist, ranked by heat (recency × frequency × relevance)
- Over time → episodic findings decay; semantic facts stay; preferences are nearly permanent
All agents share one Sulcus tenant. The thermodynamic engine handles prioritization — no manual memory management needed.
Self-Hosted
client = Sulcus(
api_key="your-key",
server_url="http://localhost:4200", # your Sulcus server
)
Examples
See examples/research_crew.py for a complete working example.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sulcus_crewai-0.1.0.tar.gz.
File metadata
- Download URL: sulcus_crewai-0.1.0.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5f3919db1529b461d9a4bf44c93188026bc9d1b8aee1277acc3ec8d43ff5a5e
|
|
| MD5 |
3e951659ae1ff0f17813a01ae9ee1bde
|
|
| BLAKE2b-256 |
348b35bc275c15fc58d574c2bc6df23fd32e1a33272a86ac3404528d7f50eacd
|
File details
Details for the file sulcus_crewai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sulcus_crewai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52f39d2f123763fd61fff535c1b10df6e45a8737f44064633ebed63a97656bb6
|
|
| MD5 |
d347b2f5b378bc47e7810b3466b63599
|
|
| BLAKE2b-256 |
63ce1504eb94cdb5048b13526ef52e52dfed7a1be94d4c9d834da4ddc694acf0
|