Metadata-Version: 2.4
Name: engrammemory-ai
Version: 0.1.0
Summary: Memory infrastructure for AI agents. Your Qdrant, your hardware, our intelligence.
Project-URL: Homepage, https://engrammemory.ai
Project-URL: Documentation, https://engrammemory.ai/docs
Project-URL: Repository, https://github.com/EngramMemory/engrammemory-python
Project-URL: Issues, https://github.com/EngramMemory/engrammemory-python/issues
Author-email: Engram Memory <hello@engrammemory.ai>
License: MIT
Keywords: agents,ai,embeddings,llm,mcp,memory,openclaw,qdrant,rag
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
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: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Requires-Dist: httpx>=0.25.0
Provides-Extra: async
Requires-Dist: httpx[http2]>=0.25.0; extra == 'async'
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Description-Content-Type: text/markdown

# engrammemory

Memory infrastructure for AI agents. Your Qdrant, your hardware, our intelligence.

```bash
pip install engrammemory
```

## Quick Start

```python
from engrammemory import Engram

client = Engram(
    api_key="eng_live_xxx",
    qdrant_url="http://localhost:6333"
)

# Store — embedded & deduplicated by Engram, stored in YOUR Qdrant
client.store("User prefers TypeScript and dark mode", category="preference")

# Search — three-tier recall (hot → hash → vector)
results = client.search("What does the user prefer?")
for r in results:
    print(f"[{r.tier}] {r.memory.content} ({r.score:.2f})")

# Forget
client.forget("mem_abc123")
```

## Async

```python
from engrammemory import AsyncEngram

async with AsyncEngram(api_key="eng_live_xxx") as client:
    await client.store("User prefers TypeScript")
    results = await client.search("language preferences")
```

## Multi-Agent / Fleet

```python
# Each agent gets its own namespace
client = Engram(api_key="eng_live_xxx", project="icu-floor-3")

# Store with agent tracking
client.store("Patient allergic to penicillin", category="fact", agent="tablet-icu-3a")

# Search scoped to project
results = client.search("allergies", agent="tablet-icu-3a")
```

## MiroFish Integration

Replace Zep with Engram in your MiroFish `.env`:

```env
MEMORY_PROVIDER=engram
ENGRAM_API_KEY=eng_live_xxx
ENGRAM_QDRANT_URL=http://localhost:6333
```

## Links

- [Documentation](https://engrammemory.ai/docs)
- [Dashboard](https://app.engrammemory.ai)
- [GitHub](https://github.com/EngramMemory)
- [Community Edition](https://github.com/EngramMemory/engram-memory-community)
