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.1.tar.gz (11.6 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.1-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: camel_memorysync-1.0.1.tar.gz
  • Upload date:
  • Size: 11.6 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.1.tar.gz
Algorithm Hash digest
SHA256 7d132e4bb26ded9f9a3e45b24c4959d77ae0554355a8f96a79c2a776933b1348
MD5 1f316284fb82e794873a901dff88c5b9
BLAKE2b-256 d8056d426c2005f63ef312b15d9a89c8311e132a7740055a414440aebf3306f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for camel_memorysync-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b33f760276e64329272e0a8ac4dda83fd3dfa211cb9ca65661cb5e76cccabcb8
MD5 6e2726845e1508935607cb1d0bcdbcc3
BLAKE2b-256 3104e67e297dbe12910611468def79acd1df3649d0c37e319594901ad3a7c9cc

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0.3

2 files

1.0.2

2 files

This release

1.0.1 This release

2 files

1.0.0

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