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
Release files for sulcus-crewai 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sulcus_crewai-0.1.0.tar.gz | 6.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sulcus_crewai-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.8 kB
Release files / sulcus_crewai-0.1.0.tar.gz
| Download URL | sulcus_crewai-0.1.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c5f3919db1529b461d9a4bf44c93188026bc9d1b8aee1277acc3ec8d43ff5a5e
|
|
BLAKE2b-256 checksum How to use checksums |
348b35bc275c15fc58d574c2bc6df23fd32e1a33272a86ac3404528d7f50eacd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / sulcus_crewai-0.1.0-py3-none-any.whl
| Download URL | sulcus_crewai-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
52f39d2f123763fd61fff535c1b10df6e45a8737f44064633ebed63a97656bb6
|
|
BLAKE2b-256 checksum How to use checksums |
63ce1504eb94cdb5048b13526ef52e52dfed7a1be94d4c9d834da4ddc694acf0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|