Skip to main content

purra-mem0 · Python

English | 简体中文

Scoped memory, retrieval, and lifecycle management using the synchronous Mem0 OSS Memory client. Requires Python 3.11+. SDK calls run in a worker thread.

Install

From the repository root:

python -m pip install . ./integrations/mem0/python

Managed callbacks use the native PurrA adapters included in this package; no LangChain installation is required.

Before importing Mem0, set MEM0_TELEMETRY=false and an application-owned MEM0_DIR. Explicitly configure the LLM, embedder, vector_store, and history_db_path. Hosted MemoryClient and AsyncMemory are not supported.

Save and read

The application supplies mem0_config, authenticated user_id, authorized project_id, and a persistent journal_path:

from mem0 import Memory
from purra_mem0 import Mem0Memory, MemoryScope, MemorySource

sdk = Memory.from_config(mem0_config)
memory = Mem0Memory(
    client=sdk,
    scope=MemoryScope(user=user_id, project=project_id),
    journal_path=journal_path,
)

async def save_preference():
    saved = await memory.add(
        "Reply in Chinese.",
        source=MemorySource("preference:language", "1"),
        key="preference:language:1",
    )
    return await memory.get(saved.ids[0])

add creates an active record by default; use state="pending" for review first. get returns None for unavailable records. Updates, state changes, and deletions require the current version and a stable operation key.

Connect to an Agent

from purra.retrieval import RetrieverTool
from purra_mem0 import MemoryContext

recall = RetrieverTool(
    retriever=memory,
    name="recallMemory",
    description="Recall saved preferences and facts.",
)
context = MemoryContext(
    memory=memory,
    query=lambda request: request.latest_user_text(),
)

Register recall.registration in the Agent's tool catalog, or compose context with its context providers. The memory instance already binds the scope. For explicit record selection, use assemble_memory_context(memory, ids, allowance).

Managed model calls

Use the following configuration instead of a raw SDK client when calls need persistent budgets. Storage paths, embedding dimensions, and the budget key come from the application; the numeric limits below illustrate a budget configuration.

model_tasks is the runner supplied by a PurrA extension factory, and model_request selects its model. The async embed(texts, signal) callback must return EmbeddingResult with vectors and any reported input-token usage.

from purra_mem0 import (
    MemoryBudget, MemoryProviders, create_managed_client, run_model,
)

client = create_managed_client(
    embedding_dims=embedding_dimensions,
    config={"vector_store": vector_store_config, "history_db_path": history_path},
)
providers = MemoryProviders(
    budget=MemoryBudget(
        key=budget_key,
        max_llm_calls=4,
        max_embedding_calls=64,
        max_input_chars=100_000,
        max_output_tokens=8192,
        result_capacity_target_tokens=2048,
    ),
    complete=run_model(model_tasks, model_request),
    embed=embed,
)
memory = Mem0Memory(
    client=client,
    providers=providers,
    scope=MemoryScope(user=user_id, project=project_id),
    journal_path=journal_path,
    allow_inference=True,
)

Use memory.budget_usage() to inspect admitted and reported usage. Raw SDK mode reports internal usage as unknown.

Extract and review

With managed providers and allow_inference=True:

from purra_mem0 import MemoryWorkflow

workflow = MemoryWorkflow(memory)

async def capture(messages, source, operation_key):
    return await workflow.capture(messages, source=source, key=operation_key)

This configuration reviews candidates and leaves them pending. To apply decisions, pass an async policy(candidate, review) and a stable policy_revision to MemoryWorkflow. Return an authorized MemoryResolution that retains the review key, or None to leave the candidate pending.

Lifecycle

Before shutdown, call await memory.drain() and memory.close(), then close SDK and provider resources. For paging, withdrawal, evidence validation, and uncertain writes, see the memory lifecycle guide.

Native managed providers

create_managed_client inject native LLM and Embedding adapters into a version-pinned, package-private Mem0 module. Calls retain the existing PurrA budget, cancellation and result validation. Explicit vector dimensions must agree; the managed path rejects LangChain vector stores. It neither patches the installed SDK nor starts a proxy server. See third-party notices. Raw SDK clients remain host-owned and do not acquire managed accounting automatically.

Metadata

Release files for purra-mem0 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for purra-mem0 1.0.0
File Size Uploaded Provenance Actions
purra_mem0-1.0.0.tar.gz 87.1 kB With provenance Details for purra_mem0-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for purra-mem0 1.0.0
File Interpreter ABI Platform Actions
purra_mem0-1.0.0-py3-none-any.whl Python 3 none any Details for purra_mem0-1.0.0-py3-none-any.whl

Total release size: 157.6 kB

Release files / purra_mem0-1.0.0.tar.gz

Download URL purra_mem0-1.0.0.tar.gz
Size 87.1 kB
Tags Source
SHA-256 checksum
How to use checksums
da5a24fe9fed11fccac9f3704fbfa9b004641a4a51a8a42d0b25bcdcd8e04727
BLAKE2b-256 checksum
How to use checksums
2e31981196ac3173572ca677d4ce2830d4309ff5ac57ac053ae382eb569a4907
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / purra_mem0-1.0.0-py3-none-any.whl

Download URL purra_mem0-1.0.0-py3-none-any.whl
Size 70.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fa2fc74c4310f2c1cd41968f07e28f438581397ea4fdbf63be1813d2785a0f1
BLAKE2b-256 checksum
How to use checksums
e92bbecaea255c9644029413f207a092eaa23f7136d8701ae5ff66fbce7fff7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Security for purra-mem0 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for purra_mem0-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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