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

# Install from source (for development)
pip install -e .

# Or install dependencies
pip install requests urllib3

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
results = memory.search("What do I like to eat?")
print(f"Episodic memory: {results.get('episodic_memory', [])}")
print(f"Profile memory: {results.get('profile_memory', [])}")

# Search with filters
work_results = memory.search("Tell me about work", filter_dict={"category": "work"})
print(f"Work results: {work_results}")

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.5.tar.gz (56.6 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.5-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: memmachine_client-0.3.5.tar.gz
  • Upload date:
  • Size: 56.6 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.5.tar.gz
Algorithm Hash digest
SHA256 0d8ceddcb51de230b93ded3cabb292be639ce8628a6bb2363f495f8d64d23816
MD5 05bf4438d2e603d736174709a8d28198
BLAKE2b-256 188477c04be0655433f6cfe4a6eeea35fc5ff93bc478b58f0d3582e681a54a1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for memmachine_client-0.3.5.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.5-py3-none-any.whl.

File metadata

File hashes

Hashes for memmachine_client-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 bcd0c20e689fde565efbbb46d98d55de01acf882b00d49a445a90d4c5af2bef7
MD5 d16d69ae02667da441f32fe37e895dac
BLAKE2b-256 59be45f58030c054e0e4f4cafe68ddebc89f54c433129731bbf8e3cf4b939a86

See more details on using hashes here.

Provenance

The following attestation bundles were made for memmachine_client-0.3.5-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