Skip to main content

MemMachine REST Client - A lightweight Python client library for MemMachine memory system

Project description

MemMachine Client

A Python client library for the MemMachine memory system.

Features

  • Simple API: Easy-to-use interface
  • Memory Management: Add and search episodic and profile memories
  • Context Awareness: Automatic context retrieval for better responses
  • Error Handling: Robust error handling with retry mechanisms
  • Type Safety: Full type hints for better development experience

Installation

pip install memmachine-client

Development installation

If you are working on the package locally inside the MemMachine monorepo, install it from source instead:

pip install -e packages/client

Quick Start

Basic Usage

from memmachine_client import MemMachineClient

# Initialize client
client = MemMachineClient(
    base_url="http://localhost:8080",
    timeout=30
)

# Create a memory instance
memory = client.memory(
    group_id="my_group",
    agent_id="my_agent",
    user_id="user123",
    session_id="session456"
)

# Add memories
memory.add("I like pizza", metadata={"type": "preference"})
memory.add("I work as a software engineer", metadata={"type": "fact"})

# Search memories
results = memory.search("What do I like to eat?")
print(results)

API Reference

MemMachineClient

The main client class for interacting with MemMachine.

Constructor

MemMachineClient(
    api_key: Optional[str] = None,
    base_url: str = "http://localhost:8080",
    timeout: int = 30,
    max_retries: int = 3,
    **kwargs
)

Methods

  • memory(group_id, agent_id, user_id, session_id) - Create a Memory instance
  • health_check() - Check server health

Memory

Interface for managing episodic and profile memory.

Methods

  • add(content, producer, produced_for, episode_type, metadata) - Add a memory
  • search(query, limit, filter_dict) - Search memories
  • get_context() - Get current context

Examples

Basic Memory Operations

from memmachine_client import MemMachineClient

client = MemMachineClient(base_url="http://localhost:8080")

# Create memory instance
memory = client.memory(
    group_id="demo_group",
    agent_id="demo_agent",
    user_id="user123",
    session_id="demo_session"
)

# Add memories with metadata
memory.add("I like pizza", metadata={"type": "preference", "category": "food"})
memory.add("I work as a software engineer", metadata={"type": "fact", "category": "work"})

# Search memories — Memory.search() returns a SearchResult Pydantic model
results = memory.search("What do I like to eat?")
print(f"Episodic memory: {results.content.episodic_memory}")
print(f"Semantic memory: {results.content.semantic_memory}")

# Search with filters (user metadata fields require the `m.` / `metadata.` prefix)
work_results = memory.search("Tell me about work", filter_dict={"m.category": "work"})
print(f"Work results: {work_results.model_dump()}")

Multiple Users

from memmachine_client import MemMachineClient

client = MemMachineClient(base_url="http://localhost:8080")

# Create memory instances for multiple users
users = ["alice", "bob", "charlie"]
memories = {}

for user in users:
    memories[user] = client.memory(
        group_id="team_group",
        agent_id="team_agent",
        user_id=user
    )

# Add user-specific memories
memories["alice"].add("I'm a frontend developer", metadata={"role": "frontend"})
memories["bob"].add("I'm a backend developer", metadata={"role": "backend"})
memories["charlie"].add("I'm a DevOps engineer", metadata={"role": "devops"})

# Search across users
for user, memory in memories.items():
    results = memory.search("What is your role?")
    print(f"{user}: {results}")

Error Handling

from memmachine_client import MemMachineClient

try:
    client = MemMachineClient(base_url="http://localhost:8080")

    # Check server health
    health = client.health_check()
    print(f"Server health: {health}")

    # Create memory instance
    memory = client.memory(
        group_id="demo_group",
        agent_id="demo_agent",
        user_id="user123"
    )

    # Add memory
    memory.add("Test memory")

except Exception as e:
    print(f"Error: {e}")

Context Manager Usage

from memmachine_client import MemMachineClient

# Use client as context manager
with MemMachineClient(base_url="http://localhost:8080") as client:
    memory = client.memory(
        group_id="demo_group",
        agent_id="demo_agent",
        user_id="user123"
    )

    memory.add("This is a test memory")
    results = memory.search("test")
    print(f"Results: {results}")

# Client is automatically closed

Configuration

Environment Variables

  • MEMORY_BACKEND_URL: Base URL for MemMachine server (default: http://localhost:8080)
  • MEMORY_API_KEY: API key for authentication (optional for local development)

Client Configuration

client = MemMachineClient(
    api_key="your_api_key",  # Optional
    base_url="http://localhost:8080",
    timeout=30,  # Request timeout in seconds
    max_retries=3  # Maximum retries for failed requests
)

Running Examples

# Start MemMachine server first
python -m memmachine_server.server.app

# Run examples
python examples/memmachine_client_example.py

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

License

This project is licensed under the same license as MemMachine.

Project details


Download files

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

Source Distribution

memmachine_client-0.3.9.tar.gz (65.2 kB view details)

Uploaded Source

Built Distribution

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

memmachine_client-0.3.9-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file memmachine_client-0.3.9.tar.gz.

File metadata

  • Download URL: memmachine_client-0.3.9.tar.gz
  • Upload date:
  • Size: 65.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memmachine_client-0.3.9.tar.gz
Algorithm Hash digest
SHA256 f3891629511f870cea36127c02767867e7df4a96887bf668b3ab74462a51284f
MD5 ff346f5d0d475f2a97e4b291389ea49d
BLAKE2b-256 1e56414a47f4ac77c2451d16a64ec4a4f7d040c24b80f2da865be3a4e11b8614

See more details on using hashes here.

Provenance

The following attestation bundles were made for memmachine_client-0.3.9.tar.gz:

Publisher: pypi-publish.yml on MemMachine/MemMachine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file memmachine_client-0.3.9-py3-none-any.whl.

File metadata

File hashes

Hashes for memmachine_client-0.3.9-py3-none-any.whl
Algorithm Hash digest
SHA256 29ef3c5c7bbf82a265ebb6db2479b36f94002c137cedb370f6e63340e7eda9e9
MD5 1bf7876c0b7294ca7eb3ecda93b96c14
BLAKE2b-256 ac9df610a2048d73d5d8c94946724118a73d7396832d9a5d1c80584fb87a93e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for memmachine_client-0.3.9-py3-none-any.whl:

Publisher: pypi-publish.yml on MemMachine/MemMachine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page