Metadata-Version: 2.4
Name: memind
Version: 0.2.0
Summary: Official Python client for the Memind memory engine API
Project-URL: Homepage, https://github.com/openmemind/memind
Project-URL: Repository, https://github.com/openmemind/memind
Project-URL: Issues, https://github.com/openmemind/memind/issues
Author-email: OpenMemind <dev@openmemind.ai>
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: httpx<1,>=0.25.0
Requires-Dist: pydantic<3,>=2.1.0
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest-httpx>=0.30; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: twine>=5.0; extra == 'dev'
Description-Content-Type: text/markdown

# Memind Python Client

Official Python client for the Memind memory engine API.

## Installation

```bash
pip install memind
```

## Synchronous Usage

```python
from memind import MemindClient, Message, Strategy
from memind.types import ConversationContent

with MemindClient(base_url="http://localhost:8080") as client:
    health = client.health()

    client.memory.extract(
        user_id="user-1",
        agent_id="agent-1",
        raw_content=ConversationContent(messages=[Message.user("I like coffee")]),
    )

    client.memory.commit(user_id="user-1", agent_id="agent-1")

    result = client.memory.retrieve(
        user_id="user-1",
        agent_id="agent-1",
        query="What does the user like?",
        strategy=Strategy.SIMPLE,
        trace=True,
    )
```

## Asynchronous Usage

```python
from memind import AsyncMemindClient, Strategy

async with AsyncMemindClient(base_url="http://localhost:8080") as client:
    result = await client.memory.retrieve(
        user_id="user-1",
        agent_id="agent-1",
        query="What does the user like?",
        strategy=Strategy.DEEP,
    )
```

## Configuration

Configuration precedence:

1. Constructor arguments
2. Environment variables: `MEMIND_BASE_URL`, `MEMIND_API_TOKEN`
3. Defaults: connect timeout `5s`, read timeout `30s`, max retries `2`

`base_url` is required. `api_token` is optional; when omitted no `Authorization` header is sent.

## Development

```bash
pip install -e ".[dev]"
ruff format .
ruff check .
mypy src
pytest --cov=memind --cov-fail-under=90 -q
python -m build
twine check dist/*
```
