Skip to main content

camel-memorysync

MemorySync memory for CAMEL agents.

Two pieces, use either or both:

  • MemorySyncMemory — a drop-in AgentMemory for ChatAgent(memory=...): verbatim chat history plus semantic recall from MemorySync, injected as one scored context record under a hard latency budget. Zero client-side embeddings.
  • MemorySyncStorage — a lossless BaseKeyValueStorage for ChatHistoryMemory that mirrors user/assistant turns to MemorySync out of band.
pip install camel-memorysync

Quickstart

from camel.agents import ChatAgent
from camel_memorysync import MemorySyncMemory

memory = MemorySyncMemory(
    user_id="customer-42",      # required — who these memories belong to
    session_id="support",       # transcript scope
)
agent = ChatAgent(system_message="You are a helpful travel assistant.", memory=memory)

agent.step("I always prefer window seats on long flights")
# … days later, a new session:
agent.step("which seat should I book for the Oslo flight?")   # remembers

The API key comes from the MEMORYSYNC_API_KEY environment variable (or api_key=...).

Why not the in-repo Mem0 storage?

CAMEL ships Mem0Storage in its repo. Verified against its source:

Behavior Mem0 (Mem0Storage, in-repo) camel-memorysync
History round-trip brokenload() returns extracted facts, not your messages byte-exact: from_dict reconstructs every record
Message roles every record hardcoded role=USER — OpenAI alternation breaks preserved exactly
clear() blast radius ✗ calls client.delete_users() — the entire user entity local window only; remote wipes are explicit (forget_session() / forget_user())
agent_id filter ✗ silently overwritten by user_id filter both preserved per record
Failures ✗ every exception swallowed — callers never know conversation always works, failures logged loudly; explicit deletes raise
Multimodal image_list / video_bytes silently discarded full media round-trip (base64)
Recall latency guard none 1.2 s hard budget, fails open to history-only
Retried saves duplicated deterministic idempotency seeds converge

VectorDBMemory (CAMEL's own long-term option) needs client-side embeddings — OpenAIEmbedding() by default (extra key, cost, latency) plus a vector DB you operate. Recall here is one MemorySync query; the index lives server-side.

How recall enters the context

ScoreBasedContextCreator sorts records by timestamp. The recall block is one SYSTEM-role record with timestamp=0.0, so it lands right after the system prompt — your history is never reordered, rewritten, or role-swapped:

[system]  You are a helpful travel assistant.
[system]  Relevant long-term memories about this user:
          - Prefers window seats on long flights
[user]    which seat should I book for the Oslo flight?

Memories created by other MemorySync surfaces (LangChain, the CLI, voice agents, coding agents…) are recallable inside CAMEL too — that is the point of memory-as-a-service.

Storage-seam usage (ChatHistoryMemory)

from camel.memories import ChatHistoryMemory, ScoreBasedContextCreator
from camel.types import ModelType
from camel.utils import OpenAITokenCounter
from camel_memorysync import MemorySyncStorage

memory = ChatHistoryMemory(
    context_creator=ScoreBasedContextCreator(OpenAITokenCounter(ModelType.GPT_4O_MINI), 2048),
    storage=MemorySyncStorage(user_id="customer-42", session_id="support"),
)

save() keeps verbatim records locally (exact round-trip) and mirrors user/assistant turns to MemorySync; system prompts and tool chatter are never shipped.

Deletion — designed against data loss

Call What happens
clear() resets the LOCAL conversation window only
forget_session() deletes THIS session's mirrored turns (loud — failures raise)
forget_user() deletes all camel-surface rows for this user; other surfaces' memories survive

Configuration

Parameter Default Meaning
user_id — (required) End user the memories belong to
session_id default Transcript scope: camel::<session>
top_k 5 Memories per recall
recall_timeout 1.2 Hard recall budget (seconds)
min_query_chars 8 Skip recall for trivial topics
window_size unlimited History records per turn
extraction True Mirror turns to MemorySync
context_creator ScoreBased/GPT-4o-mini/2048 Any BaseContextCreator

Note on dependencies

camel-ai 0.2.x imports FastMCP from mcp.server, which mcp 2.0 moved — an unpinned install crashes at import camel.agents. This package pins mcp<2 until CAMEL supports mcp 2.

Tests

pip install -e . pytest
pytest tests -q   # 27 checks against the real camel-ai at latest

The suite drives a REAL ChatAgent turn via CAMEL's own StubModel and reproduces each in-repo Mem0Storage bug as a regression test.

License

MIT © MemorySync.

Download files

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

Source Distribution

camel_memorysync-1.0.0.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

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

camel_memorysync-1.0.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file camel_memorysync-1.0.0.tar.gz.

File metadata

  • Download URL: camel_memorysync-1.0.0.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.9

File hashes

Hashes for camel_memorysync-1.0.0.tar.gz
Algorithm Hash digest
SHA256 93f9bfd195972b1ebfaebdc42a9b1d3f56670df8bd91ff44b8e8f77cc46387de
MD5 353d29e337835e6d37c4b757adcc0939
BLAKE2b-256 5634b27aaf74f3a4532c9bbdff72f55dbbad32c2afd47233dae85a719076e8b1

See more details on using hashes here.

File details

Details for the file camel_memorysync-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for camel_memorysync-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9d2ce081e4bf076e279db9c61146afd7c8894bae637650e366d0a8927ba69ce
MD5 52c7847a431ee0ffa06e35f875ef30b3
BLAKE2b-256 0344247f7485887d8a756ff8e3c9fab813e677f900ef701773157e875e397c7a

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

This release

1.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page