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.2.tar.gz (11.9 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.2-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: camel_memorysync-1.0.2.tar.gz
  • Upload date:
  • Size: 11.9 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.2.tar.gz
Algorithm Hash digest
SHA256 a08a6cafd64d5c052a39a480d44abd196484b2dbfb0c2ae7e7abce80b01a989b
MD5 18d53244567295f3b754220d6664d9a0
BLAKE2b-256 951c73d006dcc158a12894a30a77f88e65dd5c167b4706bf8ad9b6494e981b06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for camel_memorysync-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 839faa2a8632790adf5efba343b5a76d98bd85ce85330478defb036d8453cb85
MD5 401206e9e278b584fb38d246e6970649
BLAKE2b-256 b7c46b5654de7ceba603f36c537ac788ff9e1dd199cc5b4a59897313c50a2a03

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0.3

2 files

This release

1.0.2 This release

2 files

1.0.1

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